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

Bootloader and SoftDevice compatibility

I'd like to know if it’s still true that the DFU bootloader (i.e with BLE transport) is strongly coupled to the SoftDevice version. In other words, if we do a SoftDevice over-the-air update, should we assume that the bootloader needs to be updated at the same time? If that’s the case, will it depend on the SD minor version number (like 6.1.0 vs. 6.1.1)? Or is it only the major version (like 5 vs 6)? Or can we safely perform a bootloader update across a major SD version?

 Our requirements call for SoftDevice as well as app update-ability, but not necessarily the bootloader. The best answer you could give us would be that the bootloader is independent of the SoftDevice version. Part of what motivates the question is that I notice in the recent SDK versions there is such a thing as “SoftDevice independence” for the app. Does that also apply to the bootloader? (Or if not, will it be added as a bootloader feature in the future?)

 We’re using SDK 15.3 with S132 on nRF52832 (as a BLE peripheral).

Thanks...

  • Hi,

    The BLE bootloader depends on the SoftDevice, and there is typically always API changes with new version numbers of the SoftDevice. Therefore, upgrading the SoftDevice without upgrading the bootloader will typically cause the bootloader to fail, effectively bricking the device. For that reason, the bootloader enforces that the bootloader itself must be upgraded simultaneously with a SoftDevice with different major version. A simultaneous upgrade of SD+BL is not enforced when only the minor version of the SoftDevice is upgraded, but you should make sure to test properly in this case as well, so that you are confident that there will be no problems, before shipping the DFU upgrade package to customers.

    The SoftDevice independence is the same for the app and the bootloader. What this means is that they are not linked together, but instead the API is based on supervisor calls (SVC). However, the mapping between SVC numbers and parameters etc. must be up do date, as this typically changes between SoftDevice versions. This is what constitutes the SoftDevice API. See Application programming interface in the SoftDevice specification for details.

  • All right, that's what we needed to know. Thanks!

Related