BLE DFU update for multiple mcu architecture

Hi,

I am on NCS 2.9.0, I have tested lesson 5 exercice from NRF Intermediate course about BLE DFU, I have some questions about it:

- with mcumger, is there a way to update different mcu ? Like I receive firmware from mcu A through BLE, to update mcu B ? Maybe put information about which chip to update in firmware file.

- I have seen that this example uses a fixed service/characteristic, is it possible to use this service in our products legally, when they will be sold ?

- Is there a way to modify this service, or a way to use another custom service ?

Thanks !

  • Hello,

    with mcumger, is there a way to update different mcu ? Like I receive firmware from mcu A through BLE, to update mcu B ? Maybe put information about which chip to update in firmware file.

    That should be possible. See both the SMP server and SMP client samples, which can be used here.

    I have seen that this example uses a fixed service/characteristic, is it possible to use this service in our products legally, when they will be sold ?

     Yes, refer to the SMP transport specification. The SMP BLE UUIDs are custom 128-bit values defined by the Zephyr/MCUmgr specification.

    - Is there a way to modify this service, or a way to use another custom service ?

    You can modify the UUIDs, but when you do, please make sure that your client is looking for the modified service UUIDs, not the standard SMP UUIDs used for DFU. You can refer to the Academy course on this.

    Kind Regards,

    Abhijith

  • Hello,

    That should be possible. See both the SMP server and SMP client samples, which can be used here.

    I have found this example which helps a bit.

    You can modify the UUIDs, but when you do, please make sure that your client is looking for the modified service UUIDs, not the standard SMP UUIDs used for DFU. You can refer to the Academy course on this.

    Can you indicate how to modify them concretely ? 

  • Hello,

    The sample you pointed out updates both cores of the nRF5340 simultaneously. Please note that these are the two cores of a single chip, not two separate MCUs.

    I am a bit unsure about your use case as well, so I’m not certain how this sample would fit the scenario you described in your original query.

    Kind regards,
    Abhijith

  • Hello,

    Yeah, what I want to do is to use MCUmgr to update a device with multiple MCU. Main MCU is the one with BLE, and is connected in UART to a second one(with no BLE). I want to be able to update the main MCU, or the second one via BLE.

    So for the case where main CPU is updated, this course describes it pretty well. But in my case, i don't know yet how to use MCUmgr when i want to update second MCU, that's why I have looked at the example of multi core update with NRF5340.

    Is it clearer for you ? Do you have clues how i can manage this case ?

  • Hello,

    I’m not sure if I fully understand the situation, but I’ll try to explain what I understood and what I think the best option might be.

    You have two MCUs: only the main one has BLE (let’s call it A), and you want to use MCUmgr over BLE either to update the main MCU itself or to update the second MCU (let’s call it B), which is only reachable via UART from the main MCU (A).

    In this case, I think the best option is to use the SMP server sample. The main MCU (A) can run the SMP server over BLE so that it can receive the image via BLE, while the second MCU (B) can run the SMP server over UART or make use of serial recovery.

    I don’t see how the sample you mentioned, which is for the simultaneous update of the nRF5340, would apply in this scenario.

    Kind regards,
    Abhijith

Related