Loader
The STM32C071 chip utilized on all DUELink modules includes an ST loader that we use for firmware updates, using the USB DFU (Device Firmware Update) standard.
This loader is used to load a firmware, which can be the official DUELink or MicroBlocks' firmware options. However, it can load a custom firmware built using C++, or Arduino.
Using the loader and performing firmware updates only works with a single module that is tethered to a PC. If you have a daisylink of modules then you need to connect them one at a time to perform any updates. Of course, modules that do not have USB connection will need to be chained to an adapter, like USB Hook, but this is not a logical chain. The PC will only see a single module!

DFU USB Drivers
Since DFU is a standard USB class, it is automatically supported by all major operating systems. Windows supports DFU, but sadly it does not load the needed USB drivers automatically! It is necessary to install the USB drivers from the downloads page.
When going through the later steps on this page, to enter DFU mode, make sure the Device Manager shows DFU in FS Mode with no errors.

Sadly, Windows does not automatically install the DFU drivers and it will not prompt you to install them! If in doubt, just install the USB drivers mentioned earlier.
Enter DFU Mode
DUELink modules automatically run their preloaded firmware. To load a new firmware, the module needs to be put in DFU Mode. To do so, there are 2 options: The first option to completely erase the module! Once erased, the module will find nothing to run and therefore will enter DFU Mode. This is an easier option because the Console includes this feature under the Firmware top-menu option.
Erase All will erase everything, including firmware, drivers, and your application!

The console's Erase All feature automatically detects DUELink vs MicroBlocks firmware and then sends the appropriate command to self-erase, using Reset(1) command for example. Erase All will not work with your own custom firmware!
Upon successful erase, the module will present itself as a DFU device. If this is done on a PC for the first time, check the Device Manager to verify the USB Driver is installed, as explained under the drivers section on this page.
Force DFU Mode
Beside Erase All, the second option to force DFU Mode using the LDR pin. On some modules, this pin is connected to a button labeled LDR or A.

Modules that do not have a button, they have 2 pads instead.

This option "forces" the system into DFU Mode. It does not erase or modify the module's contents, till new firmware is sent.
To force a module in DFU Mode press and continue to hold the LDR or A button while resetting the board. If there is no reset button, then unplug the USB cable first, then hold the LDR or A button down and continue to hold while inserting the USB cable in. Wait one second after the cable is inserted then release the button.
If neither LDR nor A button is available, then bend and place a small metal paper clip (or a wire) between the 2 LDR pads, and reset/re-power the board. You can remove the paper clip after the board is powered up.

Upon forcing DFU Mode successfully, the module will present itself as a DFU device. If this is done on a PC for the first time, check the Device Manager to verify the USB Driver is installed, as explained under the drivers section on this page.
For power users: LDR pin is the name we use for STM32's BOOT0 pin.
Firmware Update
Once the device is in the DFU Mode, with USB drivers loaded, the system will detect a USB DFU in FS Mode device. If you do not see it, try to Force DFU Mode.

From https://console.duelink.com/, click Firmware on the top menu.

Follow the instructions to select and load the desired firmware.
The firmware update will not load any module's driver scripts script. If you have performed Erase All, you have no driver scripts installed.
Another update option is using DUELink Programmer tool, which requires installation and only works on Windows.
Driver Scripts
Modules also include Driver Scripts to simplify the module's use. It is advisable to update/load driver after a firmware update. See the Drivers page for more details.
Advanced Options
Any DFU tool can be used but advanced users will likely use the STM32CubeProgrammer. First, download the desired firmware file from the Downloads page. Now connect the module to USB and enter DFU Mode, as explained before. STM32CubeProgrammer will now detect a USB DFU device, select USB from the drop down and click Connect.

Click on the side tab then select the file you downloaded from the Download page and then click Start Programming.

The board now has the desired file loaded!
I2C Update
This page focuses on firmware updates using USB DFU mode. We recommend to use USB DFU whenever possible; however, using I2C to send firmware updates over Uplink connectors is an unsupported option.
The "STM32 microcontroller system memory boot mode" application note covers all the needed details.