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,

  • Is there any documentation about the nordic proprietary dfu service available

    I guess you have seen what's on the infocenter? I don't think there is much else.

    <info> app: Writing peer data to the bootloader...

    This suggests you've configured the bootloader to require bonding, right? Apologies for asking the obvious, but are you bonded when trying this?

    I've only used the 'unbonded' version myself, so I'm not sure what could be the issue here.

Reply Children
No Data
Related