Upgrading the Firmware¶
Fully assembled Rovers come with the latest version of the software by default. However, we are continuously working to improve the product which means sometimes you may want to upgrade your software. This guide explains the process.
Overview¶
The Rover's software upgrade process consists of two steps:
- Flashing the firmware
- Flashing the configuration
Flashing the firmware can be performed in two different ways: either through the Serial Wire Debug (SWD) interface of each module, or through CAN. We recommend users use the CAN method, however the SWD method is required if you also want to upgrade the bootloader.
Flashing the configuration can only be done through CAN.
If you just want to upgrade your existing system, refer to Flashing Over CAN. If you need to provision a new module or upgrade the bootloader, refer to Flashing Over SWD.
Flashing over CAN¶
Prerequisites¶
- CAN interface with SocketCAN, or Kvaser CAN interface, for example Kvaser Leaf with Kvaser CANlib and Kvaser Drivers
- Python v3.7 or later
Step-by-step Instructions¶
-
Download the Rover binaries from the Rover GitHub repository and unzip it. Link: Rover Releases
-
Power on the Rover by connecting the battery and pressing the power switch. LEDs on the boards should light up.
-
Flash the configuration files over CAN using a CAN interface: connect the interface to the Rover’s D-SUB port, then navigate to the release folder.
-
Check communication with the system.
-
Update the firmware. This will write firmware and configuration for all boards in the system.
-
Restart the Rover by turning it off, waiting 5 seconds then turning it on again. Now, you should have a working Rover.
Flashing Over SWD¶
Prerequisites¶
- STLINK-V3SET
- STM32CubeProgrammer
- CAN interface with SocketCAN, or Kvaser CAN interface, for example Kvaser Leaf with Kvaser CANlib and Kvaser Drivers
- Python v3.7 or later
Step-by-step Instructions¶
-
Download the Rover binaries from the Rover GitHub repository and unzip it. Link: Rover Releases
-
Connect the STLINK-V3SET to your computer using a USB cable.
-
Start STM32CubeProgrammer.
-
Power on the Rover by connecting the battery and pressing the power switch. LEDs on the boards should light up.
-
Connect the 10-pin SWD cable of the STLINK to the servo module that is connected to the steering servo.
-
Connect to the module using STM32CubeProgrammer.
-
Select the “servo-with-bootloader.bin” binary file, check the box “Verify programming”, set the start address to
0x08000000and click "Start Programming". -
Repeat for all the other modules. Below is the list of modules and their binaries.
Module Binary Light Array Module light-array-with-bootloader.binMotor Module motor-with-bootloader.binObstacle Detector Module obstacle-detector-with-bootloader.binPower Module battery-monitor-with-bootloader.binRadio Module sbus-receiver-with-bootloader.binServo Module servo-with-bootloader.binWheel Module wheel-with-bootloader.bin -
Flash the configuration files over CAN using a CAN interface: connect the interface to the Rover’s D-SUB port, then navigate to the release folder.
-
Check communication with the system.
-
Update the firmware. This will write firmware and configuration for all boards in the system.
-
Restart the Rover by turning it off, waiting 5 seconds then turning it on again. Now, you should have a working Rover.


