nrf52832 OTA over ESB based on SDK17.1.0

Hi everyone:    I developed an application based on ESB wireless communication protocol ofr the nRF52832, and I would like to perform an OTA DFU with it.    Do you know any example of some over the air FW upgrade of nRF52832 chip via ESB protocol.

    SDK is 17.1.0.

Best regards,


  • I only found examples of ble and uart in the dfu/secure_bootloader folder, Which one should I use or how should I modify it to adapt my program.

  • Hello,

    It is correct that you will only find BLE and UART in our samples, but I know that several customers have ported this to SPI, so if you need it over ESB, then that should also be possible. The transport layers in the bootloader for the nRF5 SDK are on purpose quite separated from the rest of the libraries, to make it easier to change the transport layer, or to add your own transport layer.

    But you do need to implement it yourself. Also note that we do not have the "DFU Master" as an official part of our SDK. We have tools like nrfutil (open source) or nRF Connect for Desktop (not open source), and applications for mobile phones that are open source (but mobile phones doesn't have ESB). However, there is an unofficial implementation (not properly tested. You can use it, but on your own "risk"), which you can find here. I have not tested these myself, but you can give it a go. I suggest you test out the UART master, in combination with the uart bootloader, and then you can port both to ESB once you are up and running.

    Best regards,


  • Hi Edvin:

    Thanks for your advice, I will try this, and hope you can give me some help when I encounter some difficulties.

    Best regards,


  • Hi Edvin:

    I'm sorry that I was interrupted by something, so I just started to try the method you said today.

    I used the bootloader_uart and ble_app_uart to test, used the following cmd

    nrfutil settings generate --family NRF52 --aplication app.hex --application-version 0 --bootloader-version 0 --bl-settings-version 2 settings.hex

    mergehex --merge bootloader.hex settings.hex --output bl_temp.hex
    metgehex --merge bl_temp.hex app.hex s132_nrf52_7.2.0_softdevice.hex --output bl_app_setting.hex

    then download

    nrfjprog --eraseall -f NRF52
    nrfjprog --program bl_app_setting.hex --verify -f NRF52
    nrfjprog --reset -f NRF52

    until now, no problem has been found.

    nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0x98 --softdevice s132_nrf52_7.2.0_softdevice.hex --key-file private.key

    but when I use this cmd to update, I ran into some errors like this.

    nrfutil dfu serial -pkg -p COM3
    nrfutil dfu serial -pkg -p COM3 -fc 0 -b 9600



    I want to know which step is wrong, and how should I modify it.

    Best regards,


  • By the way, My program is not using softdevice, How should I generate the update package.