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

DFU issue with Central

Hi,
We have a Central device with a bootloader and wish to have OTA update feature. We have added code for it to advertise on a certain condition of a button press.
Once it starts advertising we are able to connect using nrf_connect and then attempt a buttonless DFU with a package containing BL+SD+APP.
The nrf connect log shows Enter Bootloader sent and it receives a successful response (opcode =1 and status=1), the device disconnects and attempts to advertise as DFU targ.
However it fails to do so and the nrf_connect log says, DFU bootloader not found, Trying the same address. We tried debugging the device but it's stuck in an unknown state and only recovery is a reset.

We have used this bootloader and process of updating successfully on other peripheral only applications. Are we missing any settings, for it to not advertise as DFU_target.

Device: NRF52840
SDK: v16.0.0
Softdevice S140 v7.0

  • Hi,

    Are you able to debug the bootloader code while the nrf connect client sends the DFU start command to your main application? In that case, please place a breakpoint at the beginning of bootloader main() to check if the application actually jumps to be bootloader. The CPU register content may give a clue of where the program is stuck when it is in the unknown state (e.g., check if the program counter value is in the bootloader, Softdevice, or application's address range). 

  • Hi Vidar,
    We debugged the bootloader code and arrived at the conclusion that the softdevice was having issues enabling in the dfu_transport layer.
    The issue was with a mismatch in clock configuration(CLOCK_LF_SRC, CLOCK_LF_ACCURACY, etc.) for Softdevice in the sdk_config between the application and bootloader. Once we used the same settings in both places, the DFU process worked successfully.

Related