New application doesn't run after secure DFU process reaches 100%

Hi to everyone!

I'm following this guide to learn how to use secure DFU on a nRF52832DK board.

All steps have been done successfully, or I think so, until I reach the D4 step where the new program has to start automatically after DFU process, but it never runs.

Instead, the LED 3 lights up and If I press the button 4, the LED 1 also lights up and I can resend another application over DFU. So I think the board is still in the bootloader.

Indeed, I have some cuestions related to this:

  1. BLE Secure DFU example is only a boot loader or it also has an application?

  2. Depending on the above answer, if it is only a boot loader, do I have to program an application before doing the DFU proccess?

  3. The application, that will be written after DFU proccess, must use SoftDevice? (For my test, I upload my own blinky program. It works well when I flash the board directly through USB. But it doesn't use SoftDevice at all).

Thanks in advance!

  • Hi nemunoz, if you are referring to the BLE Secure DFU Bootloader example in question 1, then yes the example is only a bootloader (see link). So if I understand you correctly, you essentially want to do secure DFU with your own blinky example, which is most likely similar to the Blinky example found in the examples/peripheral/blinky folder, right? The Nordic blinky example found here does not require the softdevice either.

    Essentially, you just want to follow the guide you refer to & in step C1, you just build your own blinky application hex file. If you were using the Nordic blinky example, you could build the program in Keil or Segger Embedded Studio for example. Then, you can find the hex file inside the _build folder if you are using Keil (Output folder for SES). You will have to use the softdevice since you are doing a secure dfu over the air. Essentially, just follow the blog post until step D4. This should hopefully work without any issues. If it doesn't work, let me know & I will test this process using the Nordic Blinky example.

  • Hi Bjørn Kvaale.

    My blinky example blinks LED1 and LED2 each 100ms (because my custom board only have two LEDS).

    But I just tried, in the development board, the Nordic Blinky example (provided in SDK 14.0.0, blinky_pca10040_s132.hex) and it also doesn't run after DFU process. It reach 100% and says the upload was successful, but the application never start.

    Again I get stuck in the step D4.

  • Hi nemunoz, I just tried doing a secure dfu with the blinky app found in the folder: nRF5_SDK_14.0.0_3bcc1f7\examples\peripheral\blinky\pca10040\s132. Have you tested the blinky program without the bootloader? I had two issues when doing this: firstly, I had to use the blinky example in the peripheral folder that uses the softdevice to be able to create the zip file in step C2 of the secure dfu blog post. Remember to use the 0x9D value after --sd-req, as you are using the SD 132 v 5.0.0 (this can be verified by looking at this folder: nRF5_SDK_14.0.0_3bcc1f7\components\softdevice\s132\hex). What output code did you get once you created the zip file? I got Zip created at app_dfu_package.zip (depends on what you call the zip file). It could be something with the version rule maybe? For me it worked if I set it to 1. Lastly, I used nrfgostudio to flash the softdevice first (located in the nRF5_SDK_14.0.0_3bcc1f7\components\softdevice\s132\hex folder) & then the correct bootloader which I built using Keil. Then, I sent the zip file I generated to myself via email, opened the email on my phone & opened the zip file with nrf toolbox. From there, it should be straight forward. Lastly, after the DFU process was complete, the LEDs started blinking like they should in the blinky example. Hope that helps!

  • Hi Bjørn Kvaale.

    I take the hex file in the folder: nRF5_SDK_14.0.0_3bcc1f7\examples\peripheral\blinky\hex. Here there are three hex files: one for PCA 10056 and two for PCA 10040. The first one is the blinky without SoftDevice (blinky_pca10040.hex) and the other one is the blinky with SoftDevice (blinky_pca10040_s132.hex). I take the last one because the hex without SoftDevice can not be used to generate the zip file.

    Then:

    1. I erase all in my development board.

    2. Program SoftDevice (I take s132_nrf52_5.0.0_softdevice.hex file from nRF5_SDK_14.0.0_3bcc1f7/components/softdevice/s132/hex/) using nRFgo Studio.

    3. Download the bootloader from Keil (the project is in nRF5_SDK_14.0.0_3bcc1f7\examples\dfu\bootloader_secure_ble\pca10040, but I know I can also program it from nRFgo Studio).

    4. And generate the zip file.

  • To generate the zip file I put in the same folder blinky_pca10040_s132.hex, nrfutil.exe and private.key and execute the next command: nrfutil.exe pkg generate --hw-version 52 --application-version 1 --application blinky_pca10040_s132.hex --sd-req 0x9D --key-file private.key blinky_SD.zip.

    The console outputs: zip created at blinky_SD.zip.

    Afterwards I upload this zip file to my phone. I used to use AirDroid, but in my last try I used my email.

    Finally I use either nRF Connect or nRF Toolbox to upload the application through DFU proccess. But the blinky application never runs. Again it reaches the 100% in the upload proccess in both programs.