RepRapFirmware was the first open-source firmware to implement significant advances in 3D printing, including:
- Support for mixing extruders (July 2014)
- Precise timing of step pulses, even during acceleration (December 2014)
- Accurate extruder pressure advance, including retraction before the end of a move when needed (December 2014)
- Segmentation-free delta motion (January 2015)
- Least-squares auto calibration of delta printers (April 2015)
- Support for SPI-controlled stepper drivers (August 2016)
- Heater power compensated for changes in supply voltage (November 2017)
RepRapFirmware supports the following machine kinematics:
Checking firmware versions
To check the firmware versions, go to the Settings page of Duet Web Control and select the General tab. You should see a box listing the versions of the three firmware files, like this:
For production Duet 2 WiFi and Ethernet boards, the minimum recommended version of RepRapFirmware, DuetWifiServer (on the Duet 2 Wifi) and DuetWebControl are:
- Firmware Version (file Duet2CombinedFirmware.bin): 1.21
- WiFi Server Version (file DuetWiFiServer.bin): 1.21
- Web Interface Version (file DuetWebControl.zip): 1.21
Duet 2 boards are shipped with RepRapFirmware installed however are advised check the version installed and if required to upgrade to the latest stable version. To upgrade firmware see the Installing and Updating Firmware page.
Checking versions when not on the network yet
If you cannot get onto DuetWebControl yet because the network is not setup then connect using YAT or another terminal program and use M115 to get a print out of the versions.
Where to get firmware, software and drivers
Duet Generation 2
It is highly recommended to read all the notes on the version of firmware you are looking to upgrade to.
Stable releases of the dc42 build of main firmware and wifi firmware can be found at
You will also find the appropriate versions of DuetWebControl there (copied from chrishamm's github repository). The files to download depend on which Duet you have.
Duet 2 WiFi
- The main firmware file is DuetWiFiFirmware.bin up to version 1.20 and Duet2CombinedFirmware for version 1.21 and later
- The WiFi module firmware is DuetWiFiServer.bin
- The firmware update loader file stored in /sys on the internal SD card is called iap4e.bin.
- With firmware 1.19 and later, the Duet Web Control files are stored on the SD card in the /www directory
- With firmware version 1.18.2 and earlier, the Duet Web Control files were not stored on the internal SD card. Instead they were uploaded to the WiFi module from file DuetWebControl.bin
Duet 2 Ethernet
- The main firmware is DuetEthernetFirmware.bin up to version 1.20 and Duet2CombinedFirmware for version 1.21 and later
- The web interface is DuetWebControl.zip
Duet 2 Maestro
- The main firmware is DuetMaestroFirmware.bin
- The web interface is DuetWebControl.zip
Duet Generation 1 (Duet 06 and Duet 085)
Firmware files for older boards are currently also at https://github.com/dc42/RepRapFirmware/r....
- The main firmware is RepRapFirmware.bin
- The web interface is DuetWebControl.zip
Drivers & helper files
- The firmware update helper file (iap4e.bin for Duet 2 WiFi/Ethernet, iap4s.bin for Duet 2 Maestro, and iap.bin for Generation 1 Duets) is available alongside the main firmware release files in https://github.com/dc42/RepRapFirmware/r....
- The two Windows device driver files which may be required if you want to communicate with the Duet over USB from your PC are here:
- If you need to re-install the main firmware via USB, you will need Atmel's SAM-BA version 2.17 from:
- Alternatively you can install main firmware via USB using Bossa 1.8 from:
If you are looking for a version of DuetWebControl that is not associated with a particular release, look in chrishamm's repository at https://github.com/chrishamm/DuetWebCont....
Chrishamm also maintains a fork of RepRapFirmware, his releases are at https://github.com/chrishamm/RepRapFirmw....
Installing and Updating Firmware
See the wiki page on Installing and Updating Firmware
SD card structure
Duet 2 Ethernet, Duet 2 WiFi with 1.19 or later firmware, Duet 0.6 and 0.8.5
These Duets use the following folder structure:
Folder /gcodes is used to hold g-code files for printing. You can use subfolders of /gcodes to organize these files. G-code files can also be located on an external SD card if one is connected.
Folder /macros is used to hold used-defined macro files. The names of these files appear as menu entries in DuetWebControl and on PanelDue. You can use subfolders of /macros to organize these files.
Folder /sys is used to hold system files and to hold firmware update files ready for installation. It should contain at least the following files:
- config.g holds the firmware configuration script, which is executed at startup.
- config-override.g holds the configuration parameters that were saved when you last ran M500. Your config.g file should normally include command M501 near the end, to load these saved values at startup and override any similar commands earlier in config.g.
- homex.g, homey.g, homez.g and homeall.g are the homing scripts for a Cartesian or CoreXY printer. For a delta printer there is homedelta.g instead.
- bed.g holds the script for probing the bed and calculating bed compensation on a Cartesian or CoreXY printer, or doing delta calibration on a delta printer.
- pause.g is run when you pause a print.
- resume.g is run when you resume a print.
- cancel.g is optional, but if present is run when you cancel a paused print.
- stop.g is optional, but if present is run when a print finishes normally with an M0 command at the end of the print job.
- iap4e.bin is a helper file used to install new main firmware.
- trigger2.g, trigger3.g, ... are optional files that can be configured to run when particular endstop pins are triggered, for example by an emergency-stop button.
- If your Z probe needs to be deployed and retracted, the script files deployprobe.g and retractprobe.g are used. They are invoked automatically and by the M401 and M402 commands.
NOTE: the folders /gcodes, /macros, /sys must be named exactly as shown. Often the distribution of configuration for a specific printer platform will come with the folder named /sys-<printer_type> the -<printer_type> must be removed.
The configurator can be used to setup these files for your printer type:
A copy of the SD card folders, as shipped with the latest Duets is available here:
Note however as RepRapFirmware continues to advance this will grow out of date so using the configurator and also updating to the latest stable firmware and Duet Web Control is advised.
The /www folder and its subfolders hold the files served by the web server. If you are setting up a new SD card, populate the /www folder by extracting the contents of the DuetWebControl.zip file to it.
More information on where to get the firmware files and Duet Web Control files is explained lower down on this in the where to get firmware, software and drivers section.
Duet 2 Maestro
This uses an identical folder structure to the above except that there is an additional folder /menu. This holds the files that define the menu layouts for 128x64 pixel monochrome displays.
Duet 2 WiFi with firmware 1.18.2 or earlier
The Duet 2 WiFi with pre-1.19 firmware requires the following folders on the internal SD card:
These folders have the same function as described earlier on this page. The web server files are stored in file DuetWebControl.bin which is uploaded to the WiFi module.
We recommend updating to the latest stable version of the firmware as each stable version includes more functionality and bug fixes.
Changes to config gcodes and firmware behaviour between Duet 2 and Duet 0.8.5 / 0.6
This is how the Duet 2 WiFi and Duet 2 Ethernet firmware differs from the Duet 0.8.5 and 0.6.
- Networking is disabled at startup by default. Use M552 S1 in config.g to enable it at startup. A M552 S1 command in config.g will only take effect after the rest of config.g has been fully processed.
- On the Duet 2 WiFi, setting the IP address using M552 has no effect. The IP address will be allocated by your WiFi router using DHCP. Likewise, the M553 and M554 commands to set the netmask and gateway have no effect. With firmware 1.19 and later you can set these parameters individually for each access point you connect to, using the M587 command.
- On the Duet 2 WiFi, the M540 command (set MAC address) has no effect.
- The M350 command to change microstepping is supported . For example, M350 X128 I0 will set the X drive to 128x microstepping without interpolation. The steps/mm will be adjusted automatically when you change microstepping. We suggest that in your config.g file you set microstepping before you set the steps/mm. Microstepping defaults to 16x with interpolation.
- The thermistor series resistance defaults to 4700 instead of 1000 (R parameter in M305 command).
- The bed thermistor resistance defaults to 100000 instead of 10000 (T parameter in M305 command). If you are using the DuetWiFi to control an Ormerod printer, you will need to use T10000 in the M305 P0 command.
- The hot end thermistor B value defaults to 4388 (M305 command). This is the correct value for the Semitec 104GT-2 thermistor used in the popular E3D hot ends, to give accurate readings around 220C. For the Honeywell 135-104QAD-J01 thermistor used in RepRapPro hot ends, use 4138.
- The M305 H and L parameters are still supported for the moment, but they should not be needed because the ADC is calibrated automatically. Please let us know if you find that you still need them.
- By default, the X and Y axes are homed using endstop switches and the Z axis is homed using the Z probe. This is different from RepRapFirmware for the Duet 0.6 and 0.8.5, which use the Z probe to home the X axis by default as well.
- On the Duet 2 WiFi, the M997 command has additional options controlled by the S parameter, to update the WiFi firmware.
Firmware differences from Marlin, Repetier etc
Known firmware issues and limitations
Version 1.19 firmware used with DuetWebControl 1. 19 had the following known issues and limitations:
- Connecting to the Duet 2 WiFi by name only works if your client device supports mDNS protocol (e.g. Apple Bonjour service). Otherwise you have to connect to it by IP address.
- The Duet 2 Ethernet and Duet 2 Maestro do not yet support mDNS, please connect to the IP address.
- You cannot change microstepping on the fly during a print, because you must re-home the printer after changing microstepping.
- The diagnostic LED is not currently used. In future it will be used to indicate progress of firmware updates, and for other purposes.