Skip to main content

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!

USB Hook servo


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.

Verify DFU mode

tip

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.

tip

Erase All will erase everything, including firmware, drivers, and your application!

Erase All

tip

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.

Setting Boot mode mode

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

Module Loader Pads

tip

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.

Setting Boot mode

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.

info

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.

Verify DFU mode

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

DUELink Console Firmware Menu

Follow the instructions to select and load the desired firmware.

tip

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.

Select USB

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

Select file

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.