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,

    thanks to mronos answer I got the bootloader compiled (I'd really like to know why nordic doesn't provide examples that compile instead of having to spend hours working through tutorials and make lots of changes to files, settings, linker allocations etc.), ran it and downloaded software onto the device via ble. Great !

    Now I am trying to start the dfu from my application software so that I can finally dump all that nordic stuff on my customers desk and say good-bye to it for good.

    But I am getting a compile error in "ble_dfu_unbonded.c" that I cannot figure out: "unknown type name 'nrf_dfu_set_adv_name_svci_async_t'". One post here I found that suggested to define "NRF_DFU_SVCI_ENABLED" (love this nordic software, very intuitive and easy to figure out by yourself) but that did not work either.

    Anybody an idea what is going wrong?

    Kind Regards

    p.s.: is there actually an easy way to simply jump back to the boot loader? I have my own service that could trigger that.

Reply
  • Hello,

    thanks to mronos answer I got the bootloader compiled (I'd really like to know why nordic doesn't provide examples that compile instead of having to spend hours working through tutorials and make lots of changes to files, settings, linker allocations etc.), ran it and downloaded software onto the device via ble. Great !

    Now I am trying to start the dfu from my application software so that I can finally dump all that nordic stuff on my customers desk and say good-bye to it for good.

    But I am getting a compile error in "ble_dfu_unbonded.c" that I cannot figure out: "unknown type name 'nrf_dfu_set_adv_name_svci_async_t'". One post here I found that suggested to define "NRF_DFU_SVCI_ENABLED" (love this nordic software, very intuitive and easy to figure out by yourself) but that did not work either.

    Anybody an idea what is going wrong?

    Kind Regards

    p.s.: is there actually an easy way to simply jump back to the boot loader? I have my own service that could trigger that.

Children
  • But I am getting a compile error in "ble_dfu_unbonded.c" that I cannot figure out: "unknown type name 'nrf_dfu_set_adv_name_svci_async_t'". One post here I found that suggested to define "NRF_DFU_SVCI_ENABLED"

    In addition to that I think you need NRF_DFU_TRANSPORT_BLE=1

    I agree about the ease of figuring out... I think I got these from the buttonless dfu example a long time ago, but taking a module from one example to another is not easy with this sdk.

    p.s.: is there actually an easy way to simply jump back to the boot loader? I have my own service that could trigger that.

    Yes, the bootloader entry method GPREGRET does that. You write a magic value to a certain register which the bootloader reads.

Related