LwM2M OTA failures due to "Connection lost" when using a OpenThread network

Hi All,

Hardware Details:

nRF-SDK: 2.8

Microcontroller: nRF52840

Setup:

We have an OpenThread (OT) mesh network consisting of approximately 15 devices. All devices are managed and updated using LwM2M over UDP, leveraging the Zephyr LwM2M stack.

Our border router (ESP-based) utilises a cellular modem for network connectivity.

The firmware server is configured using Californium: Californium Simple File Server.

Issue Description:

Devices that require multiple OT hops to reach the border router are failing pull-based firmware downloads (at random download percentage). These downloads consistently fail with Update State 4: "Connection lost during downloading process."

While we understand this may occur due to the large data size and the involvement of multiple wireless devices, we aim to improve the resilience of our OTA system to handle brief communication interruptions.

Questions:

Based on my understanding of the CoAP block-wise transfer standard, the system should be able to recover from a failed block transfer by either re-downloading the failed block or restarting the download from the correct point.

  • Is this functionality supported by the Zephyr LwM2M stack?
  • Does the Zephyr LwM2M stack require additional intervention on our side to enable this recovery mechanism?
  • Is my understanding of CoAP block-wise transfer wrong?
  • Could the issue be related to a firmware server configuration problem?

Due to our limited available flash and RAM, switching to TCP is not an option.

Thanks for the help!

Sam

Related