This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

OTA DFU not working

Hi,

I've got buttonless OTA DFU working on nRF52 DK by following this tutorial:

academy.novelbits.io/.../

However, when I try to run the exact same thing on my own board which uses a BMD-300 (nRF52832) module, it doesn't work. I've erased the BMD-300 and programmed it with a hex file containing the secure bootloader, SoftDevice s132, bootloader settings and the application, which seems to run correctly and allows me to connect, as seen in this screenshot from the nRF Connect app on iOS:

However, when I click through to DFU and try to run the update (which works fine on the nRF52 DK), it gives the following error:

The full text output is below - any help on how to debug this would be much appreciated!

*****

File Name: app_update_0_3.zip
Parts: 1
Size: 85 KB
Soft Device Size: Zero KB
Bootloader Size: Zero KB
[Callback] Central Manager did update state to: Powered ON
Connecting to [app name] v0.2...
centralManager.connect(peripheral, options: nil)
[Callback] Central Manager did connect peripheral
Connected to [app name] v0.2
Discovering services...
peripheral.discoverServices(nil)
Services discovered
Starting Secure DFU...
Connected to [app name] v0.2
Services discovered
Secure DFU Service found
Discovering characteristics in DFU Service...
peripheral.discoverCharacteristics(nil, for: FE59)
DFU characteristics discovered
Enabling indications for 8EC90003-F315-4F60-9FB8-838830DAEA50...
peripheral.setNotifyValue(true, for: 8EC90003-F315-4F60-9FB8-838830DAEA50)
Indications enabled for 8EC90003-F315-4F60-9FB8-838830DAEA50
Buttonless DFU indications enabled
Application with buttonless update found
Writing to characteristic 8EC90003-F315-4F60-9FB8-838830DAEA50...
peripheral.writeValue(0x01, for: 8EC90003-F315-4F60-9FB8-838830DAEA50, type: .withResponse)
Data written to 8EC90003-F315-4F60-9FB8-838830DAEA50
Indication received from 8EC90003-F315-4F60-9FB8-838830DAEA50, value (0x):200101
Response (Op Code = 1, Status = 1) received
[Callback] Central Manager did disconnect peripheral
Disconnected by the remote device
Scanning for the DFU Bootloader...
centralManager.scanForPeripherals(withServices, [FE59]
Scanning timed out returning no matching peripherals!
centralManager.stopScan()

Parents
  • Hello,

    Have you tried to use another phone that is not currently doing the DFU (or using nRF Connect for Desktop) to see whether you see the advertisments from the DFU target starting after the devices disconnect? If you can't see them, please try to use the _debug bootloader project (in your case that would be SDK\examples\dfu\secure_bootloader\pca10040_s132_ble_debug) and monitor the RTT log from the bootloader? What does it say?

    Best regards,

    Edvin

Reply
  • Hello,

    Have you tried to use another phone that is not currently doing the DFU (or using nRF Connect for Desktop) to see whether you see the advertisments from the DFU target starting after the devices disconnect? If you can't see them, please try to use the _debug bootloader project (in your case that would be SDK\examples\dfu\secure_bootloader\pca10040_s132_ble_debug) and monitor the RTT log from the bootloader? What does it say?

    Best regards,

    Edvin

Children
No Data
Related