This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

resolving nRF Softdevice version vs. internal version #s / FWID

Softdevices have several separate version number systems:
a) the human-readable release version - used for hex file naming. e.g. s110_nrf51_8.0.0, s120_nrf51_2.0.0
b) the version / FWID reported by the softdevice itself via sd_ble_version_get() e.g. 7.96, 7.100

Note: my understanding is that the 'subversion' number = old FWID code that used to be in UICR. Need verification, however.

I'm implementing the Nordic DFU with softdevice update, and I need a good way to determine which programmatic version matches which hex file. DFU version reporting uses FWID, and from that I'll need to select the correct softdevice hex (verify newer version and compatibility etc).

Question 1) Is there a table or mapping available from Nordic for the different version systems? Even just a header file with mapping would be extremely helpful. This older devZone post suggests manually building a table by experimentation, but I'm hoping there have been some newer developments since then.

devzone.nordicsemi.com/.../

Question 2) the softdevice hex itself has an information struct placed at static location 0x0003000. This info includes a "uint16_t firmware_id" field. Is this synonymous with the reported subversion number from sd_ble_version_get()? I'd also like to get the main version # - is that provided in the information struct? Possibly one of the reserved fields?

Related