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

Issue with Configuring DFU over Mesh Tutorial

Hi, 

I was following the instructions laid out in the "Configuring DFU over Mesh" guide in the nRF5 SDK for Mesh v3.1.0 (https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.meshsdk.v3.1.0/md_doc_getting_started_dfu_quick_start.html). However, during the last step (#10) it seems like the device never boots into the application that I was trying to update to. So I attached my debugger and found that the starting application, the DFU example app, was eventually hitting a timeout and aborting the DFU procedure.

main.c, 206, ----- Bluetooth Mesh DFU Example -----
serial_handler_prov.c, 267, Generating encryption keypair...
main.c, 224, Initialization complete!
main.c, 245, Enabling serial interface...
mesh_app_utils.c, 65, Device UUID (raw): 410D9AEF7A0B064D944B4AF02E3AA940
mesh_app_utils.c, 70, Device UUID : EF9A0D41-0B7A-4D06-944B-4AF02E3AA940
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFE
nrf_mesh_dfu.c, 561, SERIAL TX!
main.c, 253, DFU example started!
nrf_mesh_dfu.c, 390, New firmware!
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFD
nrf_mesh_dfu.c, 534, Killing a TX slot prematurely (repeats done: 5).
nrf_mesh_dfu.c, 561, SERIAL TX!
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFD
nrf_mesh_dfu.c, 534, Killing a TX slot prematurely (repeats done: 20).
nrf_mesh_dfu.c, 561, SERIAL TX!
nrf_mesh_dfu.c, 430, DFU start
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 1, count 6, interval: exponential, handle: FFFC
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 2, count 3, interval: exponential, handle: FFFC
.
.
.
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 7, count 3, interval: exponential, handle: FFFC
nrf_mesh_dfu.c, 297, ABORT Timeout fired @709673615
nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFE
nrf_mesh_dfu.c, 561, SERIAL TX!

Has anyone seen this problem? I don't think I've done anything different than the tutorial (except for using SoftDevice 140 instead of SoftDevice 132, but still v6.1.0). I used this command to initiate the DFU over serial: /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 nordicsemi/__main__.py --verbose dfu serial -pkg dfu_test_40_blinky.zip -p /dev/tty.usbmodem1441 -b 115200 -fc --mesh

I did notice that in the nrfutil python code, the function that commands the device to activate the new firmware doesn't seem to actually do anything (https://github.com/NordicSemiconductor/pc-nrfutil/blob/mesh_dfu/nordicsemi/dfu/dfu_transport_mesh.py#L259 and https://github.com/NordicSemiconductor/pc-nrfutil/blob/mesh_dfu/nordicsemi/dfu/dfu_transport.py#L158.

For hardware, I'm using two nRF52840 DKs. For software, I'm using Segger Embedded Studio for ARM 4.16, nrfjprog packaged with the nRF Command Line Tools (v9.8.1 on OSX), and nrfutil that was built from the pc-nrfutil Github repo on the mesh_duf branch (commit 2fdcdf25).

Thanks!

Related