- The Duet has 96KB RAM, runs at 84MHz, and has five stepper axes (expandable to 9). You can drive up to six extruders.
- Smoothie has 64KB RAM, runs at 120MHz, and has five stepper axes. There are no official or third-party expansion boards, so you're limited to two extruders max.
- Both boards have USB and Ethernet connectivity. Smoothie allows you to mount the SD card over USB, but transfer is slow, and an incomplete filesystem implementation means that you have to handle uploads in a very specific way in order to avoid corrupting the file allocation table. The Duet has no support for mounting the SD card over USB. However, you can upload files over the web interface, or via FTP.
- Both boards let you set stepper current in software, so you don't have to twiddle a jewler's screwdriver in a micropot.
Supported Robots and Kinematics
- Smoothie supports more 3D printer varieties ("classic" overhead-rotational delta, HBot, "rotational" Cartesian, and SCARA). It also has support for laser cutters, and vinyl cutters are planned as well. Presumably, if you're here, you have a linear delta (Rostock/Kossel-type printer), so either board can work for your hardware.
- If you want to drive a big CNC machine with its own high-torque stepper drivers, Smoothie has pin connectors that you can use to bypass the built-in drivers, so you can use Gecko drives or whatever you want. Duet allows you to do this as well, but you have to remap the pins to the expansion header. (I previously stated that it wasn't supported at all.)
- Duet does delta kinematics calculations on the fly, which is the best way to do it. Smoothie, like Repetier and Marlin, uses tiny segments that are re-calculated hundreds of times per second. This is slightly less accurate. I haven't seen any side-by-sides, and you can probably wring more accuracy out of Smoothie by increasing the frequency of segment generation, so I have no opinion on how much it matters.
Acquisition and and Integration
- You can get the Duet 0.8.5, DueX4, and PanelDue from a single vendor in the UK that will ship to the US reasonably quick. I got mine in about a week. Since all three parts can be had from the same vendor, I consider this a fully-integrated hardware solution.
- You can get a Smoothieboard - or the Azteeg X5, a clone - from vendors in the US and UK. There is no expansion board. You can use a variety of 3rd-party displays. There is a smaller, cheaper clone called the Azteeg X5 Mini. I like the FETs on the Smoothieboard better.
- The Duet documentation is scattered between several different places (T3P3's site, the RepRap wiki, and various forum/usenet postings), and the main commissioning document assumes you're running an Ormerod (Cartesian) printer, which is a little confusing. You have to figure out what applies to you, and what doesn't, because it isn't generalized. It took me awhile to find a wiring diagram for the board - for some reason, it isn't included in the commissioning document. Fortunately, this forum is full of geniuses, and our own mhackney has drawn up a very good wiring diagram. For delta users, this page is required reading. You should be using the dc42 fork, which has the best support for linear delta (Rostock/Kossel-type) printers, as well as a working auto-calibration system.
- The Smoothie documentation is totally excellent. It's all in one place on their site, which itself is a wiki - a very smart decision, I think. They have step-by-step instructions for doing all kinds of things, and I never had trouble finding a wiring diagram. You should be using my fork (link in sig), which has the auto-calibration system.
- The Duet has fewer wires to connect because it doesn't have as fancy a power distribution system. Smoothie requires three DC power connections.
- I feel the connectors are better on the Smoothieboard. Duet's hot end terminals in particular are problematic - they're tiny, difficult to cram a 16-gauge wire into, and the act of tightening down the terminal screw torques the entire connector block so you have to worry about it messing up your board. They should've used beefier connectors for that, full stop.
- The Duet lines up the stepper and endstop pins for each axis on a single 7-pin header. Smoothie has stepper drivers at the bottom, and endstops at the top.
- Smoothie's thermistor inputs are on the right side. The Duet's thermistor inputs are near the middle of the board. Smoothie has 4 thermistor inputs. Duet has 3.
- The Duet has two PWM ports (for driving fans, LEDs, etc.) and two always-on 12V ports, both near the middle of the board. Smoothie has about the same setup, except that there are no always-on ports. For that, you'd need to connect to one of the numerous 12V wires coming out of the power supply. Smoothie's PWM ports are along the top, next to the power inputs. The separate inputs on Smoothie provide cleaner power distribution, but I don't know how much it matters.
- Both boards can run your hot end and bed heat at either 12 or 24 volts.
- Smoothie has a slot for a 5V linear regulator, which you can either solder in or not. I like running it with the regulator soldered in. Duet ships with the regulator already installed. I don't see much point in leaving that out. Both boards have to be powered down by turning off the switch, AND unplugging the USB cable.
- Smoothie's endstop connectors are 5V tolerant. Duet's are not. If your hot end is wired to +5V, like mine was, you'll want to cut that and take power directly from the +3.3V pin on E0's endstop connector. If you run 5V through the endstop pin on a Duet, you will probably kill your board.
- The Duet 0.8.5 has a native port for the PanelDue, a beautiful and highly functional touchscreen controller. It has its own Arduino-type controller onboard. Good: It doesn't use any of the Duet's RAM for menu strings, leaving loads of space available to do other things. Annoying: Coders have to program it separately, and users have to flash updates separately, adding yet another thing you have to do when you update. In the future, perhaps someone will add a scripting engine that would let you bind menu screens with menu items and G-code commands in a file on the SD card. (It does let you run macros off the SD card, but that's as much customization as you get.)
- Smoothie supports LOTS of different panels. I don't think it supports the PanelDue yet, but that is supposedly in the queue.
- The PanelDue will let you home the printer and move the effector around. If you have the right firmware, it will also run the calibration for you - but it won't save it to your config file, because the Duet's M500 command doesn't save delta parameters. (I previously stated it doesn't save any parameters, but it does save everything else.)
- I never used a panel with Smoothie, but it does appear to have a "jog" function for moving the effector. The menus are nicer on the PanelDue.
Web interfaces and file transfers
- The Duet allows file uploading over FTP, as well as the web interface, although there is a bug that will prevent any file under ~1.5K from being uploaded over the web (which was discovered by our own mhackney). dc42 is aware of this, and will probably release a fix for it soon. The web interface is really, really nice, and even more functional than the panel.
- Duet's web interface lacks the up-arrow command history you get with Repetier Host.
- Smoothie's web interface is plain by comparison. The Duet stores all web interface files on the SD card, so it can potentially have a much more complex interface - Smoothie's web assets either have to be served remotely, or be pulled out of the controller's built-in flash, which has limited (and ever-shrinking) space.
- Smoothie allows you to edit the config files and upload G-code directly to the SD card by mounting it over USB. This is very convenient. However, transfer speeds are slow, and you have to be careful about how you do it. The file system implementation is incomplete, so if you upload/edit stuff over USB and then type M500 ("save config settings"), it will corrupt your files. You have to edit over USB, safely unmount, power cycle, edit your settings (or run the auto-calibration), and then do M500.
- Duet doesn't allow you to mount the SD card over USB at all, which is an inconvenience. However, you can edit over FTP, or upload over the web interface. According to dc42, xfer speeds over Ethernet are typically around 200kb/sec, totally blowing Smoothie's ISDN-like transfer speeds out of the water. However, on my board, I'm getting 30KB/sec - not at all faster than Smoothie, I'm afraid. I don't buy the argument that "some SD cards are faster than others" because if I take that SD card out of the Duet and put it into a cheap SD card reader, I can drag a ten-meg file to it, and it'll finish writing in a fraction of a second. I honestly think this is down to the device driver on the Duet not being particularly fast.
Upgrading the Firmware
- Smoothie's firmware is "monolithic." You compile it and upload it to the board in a single step. The entire process takes about 20 seconds, and as long as you don't get an error message, it's impossible to screw up.
- Duet's firmware is split between the actual firmware, and various files needed to draw the web interface and so on. If you upgrade the firmware image, you also have to copy over the new files. This is an extra step, and it can be a little confusing, since the interface files are distributed in folders that have the names of printers on them - none of them ours. However, because the assets for the web interface and so on are stored on the SD card, precious on-board flash memory (on the controller, not the SD card) is preserved.
- Smoothie uses a file called config to store the main configuration. This is a really nice system that uses human-understandable variable names. Anything that needs to be changed is saved to a file called config-override, which contains G-codes. To save your running config, you type M500, and it saves config-override. The next time the board is powered up, your changes are still there.
- Duet uses a file called config.g. It has no human-understandable variable names, but it does have comments. There is no override file, and when you type M500 to save your config, it saves almost everything to EEPROM. It doesn't actually change the values in the file. Delta parameters are not saved, although dc42 tells me he may add that soon. He also tells me that the config gets wiped every time you update the firmware because the EEPROM area containing those values is not preserved. This is another area of weakness. It shouldn't be bothering with memory that gets wiped every time there's an update. It should write overrides to a file on the SD card instead.
- One bonus: You can edit config.g over FTP and press the E-stop button on the web interface, and it'll reload the config. With Smoothie, you have to reboot the board, losing your connection in the process.
- Both the dc42 fork of RepRapFirmware, and my fork of Smoothie, have functional delta calibration systems. You can learn about mine from the link in my sig. Mine corrects more variables, and it also features depth map-based Z correction for whatever Z error wasn't corrected in the calibration. If I think it's necessary, I will port some of my work over to RepRapFirmware. At this time, I'm able to get full-bed prints with my fork, but dc42's calibration has no Z correction, and I can't get full-bed prints with my Duet.
- Again, M500 saves the config (including calibration results) on Smoothie, and does nothing on Duet - you have to manually copy and paste g-code into config.g.
- The Duet calibration relies on a generated g-code file to tell it where all the probe points are. This is a very rigid way of doing it because if you don't want to use one of the two supplied probing radii, you have to figure out how to generate a new file yourself. This may seem like a minor issue, but I've seen significant changes in calibration quality from only a 10mm difference. It's nicer when you can give it any arbitrary number, which my firmware does allow. It takes the probing radius and generates the points itself.
- I haven't been able to get my Duet to extrude yet. It has some weird thing about T0/T1 commands. I'll figure it out soon, I think. It has been a nuisance I never had to deal with on Smoothie.
- The default PID parameters in RepRapFirmware seem to be fairly good for the heated bed and my hot end, which is an E3D Cyclops. I don't know how it'd hold up under actual printing conditions because it won't extrude yet. Smoothie's PID autotune is sort of good-ish, but I got better results tuning by hand using this.
- I haven't hooked up the expansion board yet, but I'm looking forward to it!
Smoothie's firmware is much more well-developed, and is very modular. You can, for example, have two calibration strategies that do the same thing in different ways side-by-side, and switch off between them by changing a value in config. RepRapFirmware, which runs the Duet, is not modular at all. Smoothie uses and is a great example of loose coupling. RepRapFirmware has a lot of tightly-coupled code, all intertwined and spaghetti-like, probably because it evolved in the awful Arduino environment. Unfortunately, Smoothie wasn't available at the time of the Duet's original release, and they wound up basing their firmware on Marlin, which IMO is worse than Repetier firmware and doesn't hold a candle to Smoothie.
Why I left Smoothie for the Duet
It has more RAM, and drives more axes. I hated all the time I had to spend optimizing RAM use on Smoothieware. It cost me days of productivity. Duet isn't much better, but it arguably has more breathing room - 96K instead of 64K. I need a minimum of three extruders for my application, so Smoothie is out. Next year, they'll have a better controller with exponentially more RAM - hundreds of megabytes, not tens of kilobytes - that will leave the Duet in the dust. I just don't know whether there will be a nice 3+ extruder option for it. In the meantime, Duet has what I need. If I'm sufficiently impressed by the Smoothieboard 2, I will be going back. The firmware is FAR easier to wrench on.