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

Mesh DFU/bootloader internal state is not reset when DFU completes

we have a linux gateway with an nrf52832 connected via serial port.
the gateway communicates with a modified connectivity HCI application on the nrf52.
the gateway device is responsible for performing FW updates on mesh nodes.
on the gateway, we have implemented DFU using the mesh dfu example and python files used for pc-nrfutil as a reference.

we are using the SERIAL_OPCODE_CMD_OPENMESH_DFU_DATA opcode to get the node fw data to the nrf52 application and bootloader.
we use the packet format and procedure from pc-nrfutil/nordicsemi/dfu/dfu_transport_mesh.py.
the update process completes successfully, however it seems that the internal state of the gateway's nrf52 bootloader does not reset.
the state flag (m_state) remains at DFU_STATE_RELAY, so when the next DFU is attempted it fails immediately (in handle_state_packet()) when the gateway sends the state packet.

is there something we have missed in the mesh dfu process to reset the bootloader's internal state after it successfully relays a fw update?

Related