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

Update Softdevice via DFU

I currently have a device running on sdk15 with a softdevice 6.0.0.

I got a bootloader running the DFU code, and updating the main image works perfect. We load a default image for testing during manufacturing.

We want to update the main image to use the latest sdk17 and soft device 7.0.1. Generating the new packadge is easy, using
"nrfutlis_6_1_0.exe pkg generate --hw-version 52 --sd-req 0xCB --application bleApp.hex --application-version 1 --key-file key.pem bleApp.zip"

But this does not include the soft device, so when ever I try to do a dfu serial update I get

"Extended Error 0x07: The array of supported SoftDevices for the update does not contain the FWID of the current SoftDevice."

So the question is how do I include the softdevice in the package, and or, how do I update the softdevice otherwise?

Parents
  • So I think I added the image in
    "nrfutlis_6_1_0.exe pkg generate --hw-version 52 --sd-req 0xCB --application bleApp.hex --application-version 1 --key-file key.pem --softdevice s132_nrf52_7.0.1_softdevice.hex --sd-id 0xCB bleApp.zip".

    I can see my package size grew a bit, so I take it is correct.

    But I still get the "Extended Error 0x07: The array of supported SoftDevices for the update does not contain the FWID of the current SoftDevice."

  • I will create a new bootloader with the same sdk17, and give your solution a go.

    One question on that is, is it safe to update the bootloader and the sofdevice in this manner?

    If I understand it correctly then each one will be sent over and updated one by one. If for whatever reason something fails during this update process, will the device be bricked?


    Aka, if the bootloader is updated, and say the main app, but not the softdevice. If the device restarts will the bootloader try and run the new app, which will fail as the softdevice is not the one required.

    I am not sure what fail safes are in place for such events. In the field we have seen that just updating the app sometimes fails, but we just try again and it works. So I am a bit worried to update the bootloader and softdevice as well.

Reply
  • I will create a new bootloader with the same sdk17, and give your solution a go.

    One question on that is, is it safe to update the bootloader and the sofdevice in this manner?

    If I understand it correctly then each one will be sent over and updated one by one. If for whatever reason something fails during this update process, will the device be bricked?


    Aka, if the bootloader is updated, and say the main app, but not the softdevice. If the device restarts will the bootloader try and run the new app, which will fail as the softdevice is not the one required.

    I am not sure what fail safes are in place for such events. In the field we have seen that just updating the app sometimes fails, but we just try again and it works. So I am a bit worried to update the bootloader and softdevice as well.

Children
  • The bootloader and Softdevice images are merged into one binary image and transferred to the target in go, and only when the entire image has been received and validated will the bootloader start the activation process. And the copy routines used for activation are designed to be able to withstand unexpected resets due to power loss, etc.

    The device will fall back to DFU mode once the new SD and BL is activated, and will then be ready to receive the new app update from the DFU master

    The update sequences are described in more detail here: Dual-bank and single-bank updates

Related