Over the Air Update with 2 DK

Hello,

we are currently testing the capability of updating the firmware of 2 Nordic Development Kits.

The Situation is following:

1 DK simulates a Device which  is  standalone battery powered.

The other DK shall simulate the BLE Board in the main machine. 

The Main machine should be able to update the Standalone DK over BLE. The Firmware is received on the main machine over CAN-Bus.

There are multiple documentations on how to perform DFU on Uart or over mobile devices but not much about how to update over BLE from one Device to another.

I have found 2 mabye possible solutions:

- BLE OTA over SMP Server and Client. 

- Bluetooth Central Uart. 

Could these 2 approaches work? Which one would be better suited? Or is there even a better solution?

Furthermore, which SDK Version is recommended?

Thank you in advance!

  • Hi,

    It is as you say, no samples that shows an update over BLE from one device to another in the official documentation. One solution, that is quite hacky and I'm not sure if I would recommend it since it's not been verified and tested, is as shown here in this older, unofficial sample written by a colleague of mine (based on another unofficial and even older sample from a previous colleague of us both): https://github.com/hellesvik-nordic/samples_for_nrf_connect_sdk/tree/main/bootloader_samples/client_smp/smp_client_ble 

    I would say that you should examine this sample https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/cellular/lwm2m_client/fota_external_mcu.html and combine it with the smp server and client would be a good angle. The Lwm2m sample doesn't show how to do this over BLE, but you can replace the transport that is used there and change it with BLE, for instance similar to smp server and client.

    As for which SDK version you're going to use, that will depend on the features you need. If you're working with the nRF54L15 as the tags suggest you do, then I would recommend you to start with nRF Connect SDK v2.9.0 or v2.8.0.

    I hope this is enough to get you going

    Kind regards,
    Andreas

  • Thanks for the Answer,

    i will check it out.

    One question about the Wireless Uart. We have used a similar approach in an erlier version with different Microcontroller. So there is a big interest in the Team if that would work here as well.

    I have seen that Nordic offers an example for Bluetooth Peripheral/Central UART. In our first test, we set up the example, connected board 1 to a windows pc and run mcumgr image upload in an console. As expected, the BLE UART did its job passing the Uart Data trough to board 2 and outputing it on the console.

    So the question: Can i use that approach to run OTA Updates on board 2? It would considerably simplify our work.

  • Hi again,

    I understand why you're asking this, but I would not recommend you to spend time on customizing the UART to convert back and forth between ASCII so that you can use it to transport an image when you can use MCUMgr, which is a service to send binaries over BLE instead. I'm not saying it is impossible to do so, but if you intend to go down the custom UART route, we will be severely limited in giving you support, if any at all.

    The only sample we have as of now is as mentioned the LWm2m -> SMP Client -> UART sample. This sample requires that to update device B from A, then A needs to run a SMP client that uses mcumgr. Since this sample also don't include how to do it over BLE, customers will unfortunately have to add this solution themselves.

    Kind regards,
    Andreas

Related