OTA Update Softdevice + Bootloader error

I try to update/replace the code in a nRF52 board from 3rd party (Fanstel).  They only able to provide the private key which I can create the zip file but not able to give info what version of Softdevice loaded.

I am using the nRF5_SDK_17.0.2_d674dde for 

- secure_bootloader_ble_s132_pca10040.hex

- s132_nrf52_7.2.0_softdevice.hex

Using a batch file to create the zip file

set BOOT=secure_bootloader_ble_s132_pca10040
set SOFT=s132_nrf52_7.2.0_softdevice
set KEY=private.pem
set ZIP=Secure_Bootloader

nrfutil pkg generate --hw-version 52 --sd-req 0x101 --sd-id 0x101 --key-file %KEY% --bootloader-version 1 --bootloader %BOOT%.hex --softdevice %SOFT%.hex %ZIP%.zip

when I use the nRF52-DK board to perform OTA

nrfutil dfu ble -ic NRF52 -pkg Secure_Bootloader.zip -p COM15 -n "DfuTarg" -f

I get the following error : 

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

 

  • Hello,

    So the issue is that in your DFU image, you say that the receiver needs to have a softdevice with an ID 0x0101, which it looks like the receiving nRF doesn't currently have programmed.

    You can try to set the --sd-req 0x00, which doesn't require any specific softdevices to already be programmed (as your image includes a softdevice either way). Then the device should accept it.

    Best regards,

    Edvin

  • I gather more info for this board.  The bootloader & Softdevice (s132_nrf52_6.x.x) is few years ago version.

    using the " --sd-req 0xA8,0xAF,0xB7", it show different error conditions

    Do you think a old version Bootloader can be updated ??

    1. when trying yo update just the BL or both BL+SD, it shows this error

    File "c:\tools\python\python38\lib\site-packages\nordicsemi\dfu\dfu_transport_ble.py", line 684, in __get_response
    raise NordicSemiException('Response Code {}'.format(get_dict_key(DfuTransport.RES_CODE, resp[2])))
    pc_ble_driver_py.exceptions.NordicSemiException: Response Code InsufficientResources

    2. when trying to update just the SofDevice, the DFU started but fails at 98% when the error

    Board already flashed with connectivity firmware.
    [###################################-] 98% 00:00:00
    Traceback (most recent call last):
    File "C:\Tools\Python\Python38\Scripts\nrfutil-script.py", line 33, in <module>
    sys.exit(load_entry_point('nrfutil==6.1.3', 'console_scripts', 'nrfutil')())
    .....

    .....
    File "c:\tools\python\python38\lib\site-packages\nordicsemi\dfu\dfu_transport_ble.py", line 684, in __get_response
    raise NordicSemiException('Response Code {}'.format(get_dict_key(DfuTransport.RES_CODE, resp[2])))
    pc_ble_driver_py.exceptions.NordicSemiException: Response Code InvalidObject

  • If you update the softdevice to a different version, you need to update the bootloader as well. The reason behind this behavior is that if you end up with a bootloader that doesn't use the correct softdevice version, then you have bricked the device (in case you don't have a debugger, which end products typically doesn't have). 

    So you need to either do an app-only update, or you can do a SD+BL update, or a combination, APP-SD-BL.

    dilbert168 said:

    Do you think a old version Bootloader can be updated ??

    If it is the standard bootloader from the SDK, then I think it should be fine. 

  • But as indicated in #1, if I try doing BL+SD, it returns "Response Code InsufficientResources"

    Do you think any other setting I missed ?

  • Did you program the bootloader yourself, or was it pre-programmed when you got it? And if it was pre-programmed, can you erase it and program your own bootloader, or is that not an option?

    BR,
    Edvin

Related