Embedded bootloader

The device incorporates an embedded bootloader that allows the firmware to be updated in the field via the Cyphal interface. The bootloader verifies the firmware integrity and authenticity at each boot and performs automatic repair using the backup image stored from the last upgrade if necessary.

An ongoing firmware update process can be interrupted at any point (e.g., due to power loss) without the risk of bricking the device.

The bootloader is executed briefly at every power-on before the firmware is started, and after a new firmware image is downloaded during an update process.

Tip

Firmware files can be downloaded from the Zubax file server at https://files.zubax.com/products/com.zubax.fluxgrip/.

Firmware update sequence

  1. A firmware update request is sent to the device.

  2. The device initiates the asynchronous firmware image download process. While the download is in progress, the device remains operational and continues to respond to commands; the bootloader is not yet running at this stage. This stage may take several minutes to complete.

  3. After a successful download, the device automatically restarts to apply the new firmware. If the download fails, a status code indicating the failure reason is indicated via the Heartbeat message.

  4. Upon restart, the device may require up to a few minutes to verify the downloaded file and replace the installed firmware. Should the downloaded file fail verification, the device will revert to the previously installed firmware version.

  5. The node info service can be used to check whether the last update was successful.

LED indication

While the bootloader is running, a special LED pattern is displayed: the LED indicators form a progress bar that is filled as the bootloader is making progress toward starting the (updated) firmware.

Should the bootloader fail to launch the firmware (e.g., the downloaded file fails verification), the LED indicators will display a marquee pattern with a single moving dot until the device is automatically restarted.