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

Buttonless DFU with: application + softdevice + bootloader. Application doesn't boot

Hello all,

We sell BLE devices with pre-programmed firmware, which has the ability to be remotely updated using the nordic buttonless DFU service based on a modified version of the secure bootloader.

Our customer wishes to use their own application + bootloader, and we would like to make that update using the buttonless DFU service.

Some technical info:

  Customer SDK version: 15.0.0 (EDITED: Previously: 5.0.0)

  Customer SoftDevice FW ID: 0x9D (s132)

  Our SDK version: 17.0.1 (EDITED: Previously: 7.0.1)

  Our SoftDevice FW ID: 0xCB (s132)

  Hardware: BMD-350 (nrf52832 base)

  The DFU zip package is generated using the command:

nrfutil pkg generate --application app_v0.1.1.hex --application-version-string "1.0.0" --bootloader bootloader.hex --bootloader-version 2 --hw-version 52 --sd-req 0xCB --sd-id 0x9D --softdevice s132_nrf52_5.0.0_softdevice.hex --key-file dfu_private_key.pem complete_dfu.zip

The issue is: When we update using this DFU zip file, the customer bootloader starts running. But the application never starts, not even after waiting for the customer bootloader to time-out (which it never does).

This indicate to me that the application is not successfully received by the device. But the application runs without problem when flashed to the device using SWD.

As I understand it, the bootloader and SoftDevice are programmed first when using DFU and the application is programmed afterwards. How come only half of the process is successful?

Best regards

Parents
  • Hello,

    Have you tested your bootloader with nrfutil? Do you make it work on your end? Do you make it work if you generate an application image using SDK5? Is the nrfutil version that you and the customer is using supporting SDK5?

    Is the bootloader start address the same in your bootloader and the customer's bootloader?

    Let us start there. Let me know whether you have tried this yourself.

    As I understand it, the bootloader and SoftDevice are programmed first when using DFU and the application is programmed afterwards. How come only half of the process is successful?

    Does the device start advertising as a DFU target after the softdevice + bootloader is transferred? 

    The SDKs you are using are quite old, so I don't think the current versions of nrfutil are working with them. That is why I ask about whether or not you have tested it.

    Best regards,

    Edvin 

  • Thank you for this. 

    I will try your suggestions and see how it goes. 

    The SDK versions were wrong, I'm sorry for this, I am using sdk 17.0.1 and my client is using SDK 15.0.0. I have updated the original post and just wanted to comment on this to avoid confusion to any other reader.

Reply Children
No Data
Related