What do I need for software updates (DFU) via BLE?

Hello,

we would like to update our application software. There is plenty documentation from Nordic all over the place, some relevant, some outdated, with boot loader, without, a BLE DFU service a.s.o. but we could not find any top level documentation what you really need. I do not want examples because our software is pretty much finished.

So what I would like to know is:

1. what do I need on the BLE peripheral side to do over the air application software update (we don't care about softdevice update and if it's possible without bootloader the better).

2. What do I need on the phone / desktop side? The nrfTollbox seems to have a DFU function but I could not get that to work; the file select leads to some obscure file manager download which eventually fails. I downloaded the nrf-connect (great name btw., same as you sdk now) for desktop and it works fine with an pca10056 DK but the desktop software does not seem to have any DFU built in. Have I missed that or is there an nrf-Toolbox for desktop available?

I have the feeling it's very easy and it's all there but I just cannot see it.

Kind Regards,

Parents
  • Hello mrono,

    NRF_DFU_TRANSPORT_BLE=1 did the trick and I owe you big time for saving me tons of time and not having my blood pressure going sky high when digging through nordic "code". If you are ever in the south of Ireland I'll buy you a pint (or more). So I got it compiled.

    After sheer endless permutations of the nordic attribute table size (hard coded numbers, not sure when I saw something like this the last time) and the inherent permutations of sd ram allocation I finally got it even to start up.

    I can see the dfu service in my application but when I start it from the nrf connect desktop I get the following microsoft style error message on the debug message output:

    <info> app: Writing peer data to the bootloader...
    <error> app: Request to enter bootloader mode failed asynchroneously.

    Apart from the typo in "asynchronously" it doesn't really tell me a lot. Application (at least my part) is still running after that but nordic part (ble) is dead.

    Is there any documentation about the nordic proprietary dfu service available so that I can check that I did all the required steps to get to the boot loader? Or is it expected that sdk users reverse engineer everything from their bloated example "code"?

    Kind Regards,

  • Hi Hugo, 

    Sorry for the late reply. During the summer holidays in Norway, we are less in support staff. 

    Hugo Habicht said:
    Is there any documentation about the nordic proprietary dfu service available so that I can check that I did all the required steps to get to the boot loader?

    The bootloader enters the DFU mode on the following conditions:

    See DFU mode and Bootloader and DFU modules

    Hugo Habicht said:
    <error> app: Request to enter bootloader mode failed asynchroneously.

    Please refer to my colleague Bjørn's suggestion in this post to check which function triggers the error. 

    Regards,
    Amanda

Reply Children
No Data
Related