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

BLE DFU Issue

Hi,

I am trying to develop the DFU capability for my device.

I added the necessary code from the example ble_app_buttonless_dfu to my application.

then started as explained in this step by step guide:

https://devzone.nordicsemi.com/nordic/short-range-guides/b/software-development-kit/posts/getting-started-with-nordics-secure-dfu-bootloader#h23sjziacp7vrw0scs2t3tua1ax0426

I flash the softdevice then the bootloader, then DFU the application successfully, but the application doesn't start up at all,

then I tried to debug the application and it is also doesn't start up, it behaves like when flashing the application without the softdevice.

I noticed in the.

when I flash only the softdevice and the application everything works fine when I comment the DFU service and the ble_dfu_buttonless_async_svci_init function.

seems like the bootloader not jumping to the application even after a successful DFU.

Please help

BR

JK

  • Hi,

    I an using the latest SDK with softdevice 7.0.1

    I don't think the problem is in my application, cause it worked fine with the softdevice.

    besides I tried the ble_app_buttonless_dfu example instead of my application, and I faced the same problem.

    besides I will try to print something at the beginning of my application and will inform you when I have the result.

    BR

    JK

  • Hi Einar,

    you were right.

    my application starts and !!

    but when I flash just the softdevice + application it works fine.

    what can be the problem ? because I tried to DFU the ble_app_buttonless_dfu example and its also didn't start advertising 

    BR

    JK

  • Hi Einar,

    just tried to DFU the my nominal application without the ble_app_buttonless_dfu example code I added to the application and it works, my application start working.

    No I need your help to solve this please.

    when I run the application with the ble_app_buttonless_dfu code without the bootloader the ble_dfu_buttonless_async_svci_init function return an error, but I think it should be doesn't it ? cause their is no bootloader

    BR

    JK

  • Hi,

    Now I managed to perform the DFU correctly.

    The remaining problem now is the buttonless DFU part at the application.

    when I initialize thw DFU service I can't use the NUS service !

    I increased the NRF_SDH_BLE_VS_UUID_COUNT from 1 to 2

    And have the ble_uuid updated to: 

    static ble_uuid_t m_adv_uuids[]          =                                          /**< Universally unique service identifier. */
    {
        {BLE_UUID_DEVICE_INFORMATION_SERVICE, BLE_UUID_TYPE_BLE},
        {BLE_UUID_NUS_SERVICE, NUS_SERVICE_UUID_TYPE}
    };

    Also updates the RAM-Start address to give the softdevice the memory size needed !

    But still I have a Problem.

  • Hi JK,

    It ooks like you are close to solving the issue. Is the error still coming from the call to ble_dfu_buttonless_async_svci_init()? If yes, what is the error code? If this is not it, which function call returns an error, and what is the error? This is essential information that narrowed down the issue a lot.

    It could potentially be that adding the call to ble_dfu_buttonless_async_svci_init() would make a subsequent function call fail (for instance when you had NRF_SDH_BLE_VS_UUID_COUNT  and if NUS is initialized after the buttonless DFU service. In that case, initializing NUS would fail.)

    Einar

Related