Question about Over the Air update in NCS_V2

Does the NCS V2 .x support OTA updates ? I used OTA update with encryption in older SDK and i was looking to migrate that to the new SDK. Is there some example or  guide to how to do the exact same implementation in NCS ? I know NCS uses mcuboot but does that mean that DFU and OTA is no longer supported in NCS ?

Thank you.

Parents
  • Hi Midhunjac,

    NCS v2.x supports OTA updates.

    If you are asking if NCS v2.x support the same OTA solution as the nRF5 SDK, then no.

    If you are asking if a nRF5 SDK device can be OTA upgrade to a NCS firmware, then theoretically yes. However, there are no official documentations and samples for it.

    Hieu 

  • Hi, Thanks for the reply.

    I have upgraded my device to the NCS based application. I now need to run OTA updates on this. Is there some kind of guide which I can use as a starting point for my purpose ? I understand that the solution may not be the exact same as the one in NRF5 but that is okay. I am willing to make changes. I just need some documentation or example to use as a reference. Is there something like that ?

Reply
  • Hi, Thanks for the reply.

    I have upgraded my device to the NCS based application. I now need to run OTA updates on this. Is there some kind of guide which I can use as a starting point for my purpose ? I understand that the solution may not be the exact same as the one in NRF5 but that is okay. I am willing to make changes. I just need some documentation or example to use as a reference. Is there something like that ?

Children
  • As you say you are moving from the nRF5 SDK, I assume you want DFU over BLE when you say OTA.

    There are two resources you can refer to for adding DFU over BLE:
    Zephyr SMP Server sample, where you can enable BLE support.
    Our colleague Simon's guide, with instructions to add DFU to a BLE application.

  • Okay. Thanks. I'll take a look at these and come back if I have any questions. Thanks again !!

  • I did a bit of research and I have a few questions. What I want to achieve is over-the-air firmware update using NRF Secure Immutable bootloader. I am using nrf52832 and 840 and NCSV2.1.0

    1. What i understand from the docs is that to use OTA updates with  NSIB, I should include MCUboot as a second stage bootloader because NSIB does not support this and I do not have any other option. Am I right here ? Is what i am trying possible ? If I am right, are there any samples incorporating these ideas ?
    2. To use a custom key for MCUboot, I need to use CONFIG_BT_SIGNATURE_KEY_FILE="path to private key" . But from what I have learned, MCUBoot is not built from source.So where does the public key come from ? How can I embed my custom public key into MCUboot ?
    3. If I am right about (1), then my MCUboot and NSIB will be my projects two child images. Does this mean that every time I try to update my project I will have to build fresh images of signed MCUboot and NSIB ?
    4. Also I found this sample for OTA. But that is only for nrf9160. Is it because other devices does not support it that the sample is not provided for others or is it because of some other reason ? Can I follow the example and use it on my nrf52832 and 840 ?

    Thank you for your time.

  • From your choice of words, it seems that you just want NSIB to be the immutable bootloader, and don't really need a second stage bootloader. Is that right?

    While I research this use case, can I ask why you would like to use NSIB as the immutable bootloader and not MCUboot?

  • From your choice of words, it seems that you just want NSIB to be the immutable bootloader, and don't really need a second stage bootloader. Is that right?

    Right. I do NOT want a second stage bootloader.. As I told, my end goal is over-the-air firmware update using NRF Secure Immutable bootloader. I will take anything to help me get this. That is all.

    But as I understand from the docs, OTA cannot be done with NRF Secure Immutable bootloader. Or am I understanding it wrong ?

    can I ask why you would like to use NSIB as the immutable bootloader and not MCUboot?

    My updates does not involve updating the bootloader. It only updates my application. And from this page, I believe that in this case, first stage immutable bootloader is what I want. Again, if I am wrong in my understanding, please correct me. The whole information is a lot and is vague in my mind.

    Thank you

Related