Firmware management
Comprehensive description of Spotflow firmware management including technical details.
Firmware management is a feature that allows to organize one or more firmwares, their versions and associated symbol files and devices, designed specifically for embedded devices.

- The concept of
Firmwarerepresents set of software components deployed to a fleet of devices (typically as single executable binary, e.g. an ELF file). - Firmware can have one or more
Firmware Versions. - The firmware also has associated
Symbol Files, each belonging to one or more firmware versions. All symbol files must be assigned to a firmware.

Firmware targeting single platform
If your firmware is fairly simple (in the terms of builds), we recommend creating single firmware (e.g. Air monitor x8 firmware) and create new version (e.g. v1.2.4) with symbol file for each new build.
If your workflow includes creating many pre-prelease build, we recommend also creating one pre-release, alpha, dev or similar version and assign all symbol files from pre-release builds to this version.
Upon release, you can promote the pre-release symbol files to a release version or upload new ones, depending on your workflow.
Firmware targeting multiple platforms (hardware or OS)
If your firmware needs to be build for multiple platforms (e.g. different boards or operating systems), you choose one of the following strategies:
1. Stick to simple, single-firmware management (described above) and distinguish between platforms via versions
In this case, you can create separate versions for each platform by appending the platform name to the version (e.g. v1.2.4-arm, v1.2.4-riscv).
Same goes for the pre-release build, where pre-release version can be split into pre-release-arm, pre-release-riscv and so on.
When to choose?
2. Create multiple firmwares, one for each platform
In this case, you can create separate firmwares for each platform (e.g. Air monitor x8 firmware - Zephyr, Air monitor x8 firmware - FreeRTOS).
In each firmware, you can use the simple versioning schema (e.g. v1.2.4) or complex one to incorporate one or more targeting dimensions (e.g. v1.2.4-arm, v1.2.4-riscv).
When to choose?
Other scenarios
If none of the strategies above fits your scenario or you are having other issues, please open a Feature request or let us know via email hello@spotflow.io or our Discord. We will be happy to work with you to incorporate necessary changes to the platform or find other suitable solution.
Show firmware versions running on devices
Spotflow links devices to firmware versions automatically using Build IDs.
The Spotflow Device Module for Zephyr RTOS automatically publishes the Build ID of the device firmware and sends it to Spotflow upon connection. The Devices page then shows each device's reported Build ID, and also the firmware and its version if the Build ID matches any uploaded Symbol File.
This helps you understand which devices are running which versions of firmware and investigate issues with specific releases.

On the Events page, every log or crash report that the device sends shows the Build ID, firmware, and firmware version of the device at the time it was published.

How is this guide?