Skip to content

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:

  1. Flashing the firmware
  2. 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

Step-by-step Instructions

  1. Download the Rover binaries from the Rover GitHub repository and unzip it. Link: Rover Releases

  2. Power on the Rover by connecting the battery and pressing the power switch. LEDs on the boards should light up.

  3. 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.

    # Replace v0.14.0 with the version you downloaded in step 1
    cd rover-release-v0.14.0
    
  4. Check communication with the system.

    SocketCAN Command
    python3 fw_update.py -i socketcan -c can0 list
    
    Kvaser Command
    python3 fw_update.py -i kvaser -c 0 list
    
  5. Update the firmware. This will write firmware and configuration for all boards in the system.

    SocketCAN Command
    python3 fw_update.py -i socketcan -c can0 system
    
    Kvaser Command
    python3 fw_update.py -i kvaser -c 0 system
    
  6. 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

Step-by-step Instructions

  1. Download the Rover binaries from the Rover GitHub repository and unzip it. Link: Rover Releases

  2. Connect the STLINK-V3SET to your computer using a USB cable.

  3. Start STM32CubeProgrammer.

  4. Power on the Rover by connecting the battery and pressing the power switch. LEDs on the boards should light up.

  5. Connect the 10-pin SWD cable of the STLINK to the servo module that is connected to the steering servo.

  6. Connect to the module using STM32CubeProgrammer.

  7. Select the “servo-with-bootloader.bin” binary file, check the box “Verify programming”, set the start address to 0x08000000 and click "Start Programming".

  8. Repeat for all the other modules. Below is the list of modules and their binaries.

    Module Binary
    Light Array Module light-array-with-bootloader.bin
    Motor Module motor-with-bootloader.bin
    Obstacle Detector Module obstacle-detector-with-bootloader.bin
    Power Module battery-monitor-with-bootloader.bin
    Radio Module sbus-receiver-with-bootloader.bin
    Servo Module servo-with-bootloader.bin
    Wheel Module wheel-with-bootloader.bin
  9. 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.

    # Replace v0.14.0 with the version you downloaded in step 1
    cd rover-release-v0.14.0
    

  10. Check communication with the system.

    SocketCAN Command
    python3 fw_update.py -i socketcan -c can0 list
    
    Kvaser Command
    python3 fw_update.py -i kvaser -c 0 list
    
  11. Update the firmware. This will write firmware and configuration for all boards in the system.

    SocketCAN Command
    python3 fw_update.py -i socketcan -c can0 system --skip-binaries
    
    Kvaser Command
    python3 fw_update.py -i kvaser -c 0 system --skip-binaries
    
  12. Restart the Rover by turning it off, waiting 5 seconds then turning it on again. Now, you should have a working Rover.