For updating the firmware on a Duet board in SBC mode, see SBC setup for Duet.
The instructions below are for updating the firmware on Duet 3 (all boards, in standalone mode), Duet 2 WiFi, Ethernet and Maestro boards only. Using them to update a Duet board using a Single Board Computer (eg Raspberry Pi) may leave your board in an unresponsive state.
Duet 3 MB6HC - RepRapFirmware 3.x
Duet 3 MB6XD - RepRapFirmware 3.4 and later
Duet 3 Mini 5+) - RepRapFirmware 3.2 and later
Duet 2 (WiFi, Ethernet, Maestro) - RepRapFirmware 2.x, 3.x
Legacy Duet 0.6 and 0.85 - RepRapFirmware 1.x
Currently, the latest version of RepRapFirmware 2.x is 2.05.1. These files and the RepRapFirmware 1.26.1 files for legacy Duets are available here.
The latest release, along with beta, release candidates (RC) and previous versions of RepRapFirmware are available at https://github.com/Duet3D/RepRapFirmware/releases
Our general advice is to use the ‘Latest release‘ version from GitHub, unless you have a specific reason to use a 'beta' or 'RC' release. Beta and RC versions are marked ‘Pre-release’ on GitHub.
Each 'release' version has a large zip file that contains all the files needed to update all Duet boards, e.g. in RRF 3.3 it is 'Duet2and3Firmware-3.3.zip'. Download this, without unzipping it. Individual binary files can also be downloaded, as needed.
'Beta' and 'RC' releases are supplied as individual files, not as a convenient zip file, and need to be downloaded and installed individually.
Each Duet board needs up to four files to fully update the firmware and software. These are:
Firmware binary - This is the main firmware for the Duet boards, and there is a specific version for each Duet board. The main firmware for all boards except Duet 3 Mini 5+ is supplied as a .bin file; for the Duet 3 Mini 5+ it is a .uf2 file.
In-App programmer (IAP) binary - This file is needed on the SD card and does the job of programming the firmware. There is a specific version for each Duet board. They don’t change with every firmware release, but new versions often accompany major firmware releases. You will get a message if it is missing, with the filename it expects, and (in DWC 3.3 and later) the location it expects to find it. If it is missing, check the firmware version your Duet is currently using, and download the iap file from the matching firmware version on the Duet3D Github repository. If the IAP file isn't included in the 'Assets' list of that firmware release, it should be in the .zip file for that release. Don't rename the iap file you have to the one it wants; most likely it won't work, but could cause other issues.
WiFi firmware binary - Required for the ESP8266-based WiFi board on the Duet 2 WiFi and Duet 3 Mini 5+ WiFi. Use the same version that is supplied with the firmware you are flashing.
Duet Web Control (DWC) zip - Web-browser-based user interface for communicating and controlling all Duet boards. Use the same version that is supplied with the firmware you are flashing.
Below is the firmware files, and file names, required for each Duet board. Filenames are correct for RRF 3.3 and 3.4. Older versions of the firmware will have similar file names, but they have changed over time. Note that these files are for Standalone mode, NOT SBC mode (except for Duet 2 WiFi/Ethernet in SBC mode). See SBC setup for Duet 3 for updating a Duet with connected SBC.
Firmware binary | IAP binary | WiFi firmware binary | Duet Web Control zip | ||
---|---|---|---|---|---|
Firmware .zip | Duet2and3Firmware-[X.X.X].zip | Large .zip file that contains all the files needed to update all Duet boards. [X.X.X] is the firmware version, e.g. '3.4.0'. Upload direct to Duet in DWC, which will use and keep only the files it needs. |
|||
Duet 3 Mainboard 6HC | Duet3Firmware_MB6HC.bin | Duet3_SDiap32_MB6HC.bin | DuetWebControl-SD.zip | ||
Duet 3 Mainboard 6XD | Duet3Firmware_MB6XD.bin | Duet3_SDiap32_MB6XD.bin | DuetWebControl-SD.zip | ||
Duet 3 Mini 5+ | Duet3Firmware_Mini5plus.uf2 | Duet3_SDiap32_Mini5plus.bin | DuetWiFiServer.bin | DuetWebControl-SD.zip | |
Duet 3 Expansion 1HCL | Duet3Firmware_EXP1HCL.bin | ||||
Duet 3 Expansion 1XD | Duet3Firmware_EXP1XD.bin | ||||
Duet 3 Expansion 3HC | Duet3Firmware_EXP3HC.bin | ||||
Duet 3 Toolboard 1LC | Duet3Firmware_TOOL1LC.bin | ||||
SAMMY C21 | Duet3Firmware_SAMMYC21.bin | ||||
Duet 2 WiFi/Ethernet | Duet2CombinedFirmware.bin | Duet2_SDiap32_WiFiEth.bin | DuetWiFiServer.bin | DuetWebControl-SD.zip | |
Duet 2 WiFi/Ethernet - SBC | Duet2Firmware_SBC.bin | ||||
Duet 2 Maestro | DuetMaestroFirmware.bin | Duet2_SDiap32_Maestro.bin | DuetWebControl-SD.zip |
When using a Duet 3 mainboard as an expansion board, the /firmware folder on the SD card in the mainboard-as-expansion-board needs to contain the CAN IAP file. Otherwise it won't be possible to update the expansion board over CAN.
IAP binary | |
---|---|
Duet 3 Mainboard 6HC | Duet3_CANiap32_MB6HC.bin |
Duet 3 Mainboard 6XD | Duet3_CANiap32_MB6XD.bin |
Duet 3 Mini 5+ | Duet3_CANiap32_Mini5plus.bin |
If you are updating from an old version of the firmware, there may be additional steps you need to take. Send M115 to your Duet via USB or in the DWC console to check the current firmware version.
We generally recommend that firmware updates should be done in incremental steps, especially if you are updating from a very old version. We usually suggest updating in the following order:
RRF v1.x to RRF v2.05.1 to RRF v3.0 to RRF v3.3 to the latest stable release.
You don't need to downgrade your firmware; just update to the next version on from your current version, eg if you are on RRF 3.1.1, update to v3.3, then the latest stable release.
See the tabs below for notes on updating to specific releases.
If you are updating from RRF 3.3 or later, you should be able to update by downloading the Duet2and3Firmware-3.x.zip file (where 3.x is the version number) from the latest stable release. This contains all the firmware and software files for all Duet boards. There’s no need to unzip it. You can download individual files as necessary, too. See the section later about updating individual files. Firmware files will be stored in the '0:/firmware/' directory.
Download file Duet2and3Firmware-X.X.zip file from the latest stable release, which is available from the Duet3D Github repository here. Follow the 'Usual procedure' instructions below to update the firmware.
If you are updating from an early version of RRF 3.x, before RRF 3.3, we recommend updating to RRF 3.3 before updating to later firmware versions. This is because:
Download file Duet2and3Firmware-3.3.zip from the Github repository here. Follow the 'Usual procedure' instructions below to update the firmware. We recommend updating to the latest stable version of RRF next. See the previous tab.
Important! When upgrading from 1.x or 2.x firmware to 3.x you will need to make substantial changes to your config.g file. See Migrating from RRF2 to RRF3.
Upgrading ANY Duet 2 from RRF 1.x or 2.x to 3.0 or later requires installing RRF 3.0 first.
The version 3.01 and later binaries are too large to be installed by the IAP program supported by version 1.x and 2.x firmware. Therefore you cannot upgrade directly from version 1.x or 2.x firmware to 3.01 or later firmware. This is the procedure:
If you are updating a Duet 2 WiFi from RRF 1.18.2 or earlier, you will also need to manually update the WiFi firmware via USB or PanelDue. See 'Updating WiFi firmware' instructions below. And you will need to unzip the Duet Web Control zip file into a folder called 'www' on the SD card. See SD card for the current SD card structure.
While it is possible to update from older versions of RepRapFirmware by uploading firmware releases via the web interface, you may have to do this multiple times depending on the firmware version. If you're planning on jumping to the latest RRF 3.x version, it may be more convenient to simply erase the firmware and flash the latest version with BOSSA or SAM-BA; see 'Fallback procedure #2' instructions below.
This means if you have upgraded from, for example, RRF v3.2.2 to RRF v3.3beta1 (the firmware, IAP and DWC files will be put in the ‘sys’ directory), then update to RRF v3.3beta2 by just uploading the firmware binary (which it will put in the ‘firmware’ directory), you’ll get a message that the IAP file is missing, because it expects to find it in ‘firmware’. Upload the IAP file from the v3.2.2 release, and it should put it in the ‘firmware’ folder.
Should you need to recreate the SD card see the SD card page for a full description of the structure and contents, .
For updating the firmware on a Duet board in SBC mode, see SBC setup for Duet.
The instructions below are for updating the firmware on Duet boards, in standalone mode. Using them to update a Duet board using a Single Board Computer (eg Raspberry Pi) may leave your board in an unresponsive state.
If you are unable to connect to your Duet from a browser, but you can connect to the Duet via USB using YAT or other serial terminal:
Use caution when connecting your Duet to a PC via USB while VIN is still connected as this may lead to a ground loop situation. When connecting USB, and VIN power is not required, disconnect the PSU that supplies VIN power from the mains. See here for more details: USB ground loops
Note: when you run M997 S0, if your board is a Duet WiFi or Ethernet running old firmware, you may get an error message telling you that file DuetWiFiFirmware.bin or DuetEthernetFirmware.bin was not found. If that happens, copy or rename the Duet2CombinedFirmware.bin file to that filename and try again.
Duet 3 expansion board firmware can be manually updated with M997 Bn, where n is the CAN bus address of the expansion board.
Only use this if the firmware on the Duet has been corrupted, or if you have accidentally pressed the Erase button, so you can’t connect over USB with YAT..
Use caution when connecting your Duet to a PC via USB while VIN is still connected as this may lead to a ground loop situation. When connecting USB, and VIN power is not required, disconnect the PSU that supplies VIN power from the mains. See here for more details: USB ground loops
Before proceeding, connect the Duet to your PC using a USB cable and check whether the Duet is visible in the port list. Under Windows you can do this by going to Device Manager and expanding Ports (COM and LPT). If Duet 3D printer electronics is listed, you should be able to connect using Pronterface or YAT unless some other program is already using the port. If Bossa Port is listed then the firmware has already been erased. If neither is listed:
If you get the Duet 3D printer electronics port to appear, then firmware is already running on the Duet and you should use fallback procedure #1 or #2 instead. If you get Bossa Port, read on.
The Duet 3 Mini 5+ supports an easy mechanism for updating the firmware directly.
You will need a Windows, Apple Macintosh or Linux PC (can be Raspberry Pi).
Bossa is available for Windows, Apple macOS and Linux.
Duet 3 MB6HC and MB6XD: When BOSSA is used to flash the SAME70 processor in the MB6HC, the processor uses the USB port in high speed mode (unlike the processors used in other Duets). This means that the length and quality of the USB cable is especially important. USB cables that can be used to send GCode commands and receive replies to/from a Duet MB6HC/MB6XD that is running RepRapFirmware may not be suitable for flashing the firmware using BOSSA.
Duet 3 MB6XD: You must use the Duet3D version of BOSSA. If the Bossa port does not appear on the PC, check that the Driver Enable Polarity jumper is not in the wrong position (see earlier).
bossac -b -U -e -w -v -R --port=COMxx [path to file]
Currently, Bossa for macOS only supports flashing Duet 2 WiFi/Ethernet/Maestro boards, and NOT Duet 3 MB6HC/6XD boards.
For Duet 3 MB6HC/6XD boards, we recommend using a Windows PC, Raspberry Pi, or other Linux PC/installation/virtual machine. Intel-based Macs can boot into a Linux Live USB; see the other tabs here for guides. For ARM-based Macs, installing Windows 11 for ARM as a virtual machine also works. Please see this forum thread for more details and other work arounds.
Flashing with Bossa on macOS:
ls /dev/tty.*
to find the correct port name. Replace tty.usbmodem[xxx]
with this, and [path to file] with the path and name of the firmware binary, then send:bossac -b -U -e -w -v -R --port=/dev/tty.usbmodem[xxx] [path to file]
DuetPi releases from March 2022 contain a precompiled command-line bossac
binary that may be used with the Duet 2 or Duet 3 MB6HC/XD. To flash the firmware using a Linux terminal, run:
bossac -e -w -v -b -R [file location and name]
where [file location and name] is where the firmware binary file is saved, eg /opt/dsf/sd/firmware/Duet3Firmware_MB6HC.bin
A pre-compiled version of Bossa can be downloaded and installed from Linux package servers. This will run on Linux installations, virtual machines and Live USBs (tested working with a Ubuntu 24.10 Live USB, running on a 2013 Intel MacBook Pro 06/11/2024),
You must be on a recent Debian/Ubuntu release (bullseye
/bionic
respectively) in order to be able to install a BOSSA version that is capable of flashing the processor of the Duet 3 MB6HC/6XD.
sudo apt install bossa-cli bossa -y
bossa
sudo bossa
ttyACM0
.bossac -b -e -w -v -R [path to file]
--port=/dev/ttyACM0
(or find port name with ls /dev/tty*
) if bossac fails to auto-detect the right serial port.This has been tested working with a Ubuntu 24.10 Live USB, running on a 2013 Intel MacBook Pro (06/11/2024).
This method should also work with most Linux distros (eg Ubuntu, Debian), Raspberry Pi OS, Linux virtual machines and Live USBs. It does require an internet connection, to download and install software.
sudo apt update && sudo apt install -y libwxgtk3.2-dev libreadline-dev git make g++
git clone https://github.com/Duet3D/BOSSA
cd BOSSA
make
CD bin
~/BOSSA/bin/
:wget https://github.com/Duet3D/RepRapFirmware/releases/latest/download/Duet3Firmware_MB6HC.bin
wget https://github.com/Duet3D/RepRapFirmware/releases/latest/download/Duet3Firmware_MB6XD.bin
wget https://github.com/Duet3D/RepRapFirmware/releases/latest/download/Duet2CombinedFirmware.bin
wget https://github.com/Duet3D/RepRapFirmware/releases/latest/download/DuetMaestroFirmware.bin
./bossa
sudo ./bossa
ttyACM0
.bossac -b -e -w -v -R [path to file]
--port=/dev/ttyACM0
(or find port name with ls /dev/tty*
) if bossac fails to auto-detect the right serial port.SAM-BA is available for Windows and Linux. Only Duet 2 WiFi/Ethernet/Maestro flashing is supported. See 'Bossa' tab for flashing Duet 3 MB6HC/6XD.
Download and install SAM-BA version 2.17 from Microchip
Load SAM-BA. It usually detects the correct COM port automatically.
Press Connect. A connection error will be reported if the wrong board is selected.
Note, this applies to Duet 2 WiFi and Duet 3 Mini 5+ WiFi only.
If you want to update the Duet firmware and WiFi firmware at the same time: