nRF9160 modem FOTA - what library to use

Hi, 

We are considering a modem delta FOTA on our 9160 devices in field, but find two "approaches" described to this;
Either using the modem AT command set (AT#XFOTA=2,*  etc) as described here: https://docs.nordicsemi.com/bundle/ncs-2.5.0/page/nrf/applications/serial_lte_modem/doc/FOTA_AT_commands.html
Or, by using the nrfxlib stuff and delta DFU API as described here: https://docs.nordicsemi.com/bundle/ncs-2.2.0/page/nrfxlib/nrf_modem/doc/api.html#delta_dfu_api

We also find the sample application "HTTP modem delta update" seems to be using the latter.

What is to be recommended, and why (what seems to be) two "similar" ways of achieving this?

We currently use SDK 2.5.0.

TIA

Alf

  • Here's the deal with modem delta FOTA on the nRF9160 using SDK 2.5.0. You’ve got two solid options:

    1. AT Commands (AT#XFOTA=2)
      Using the AT command method is a no-fuss way to get FOTA up and running. With Serial LTE Modem (SLM), you just issue the command, and it handles the update. You get a quick trigger for firmware updates but don’t get fine control over each step or real-time feedback from within your application code.

    2. Delta DFU API (nrfxlib)
      The Delta DFU API gives you a lot more control if your application needs it. You can kick off the update, monitor progress, handle any issues directly in your code, and even manage how the update downloads. Nordic’s “HTTP modem delta update” sample shows how to use this API to pull updates over HTTP. If you’re running custom backend services or need to integrate the FOTA process tightly with the rest of your app, this is the way to go.

    Bottom Line
    If you just need a quick way to trigger updates, go with the AT command. But if you need to monitor, manage, or customize the process, Delta DFU API is better suited. Both approaches will work with SDK 2.5.0, so it comes down to the level of control you need.

  • Hi
    and thank you for your quick and thorough reply to my request!

    I think then we will be best off with 1.) the AT Command-approach, we will start looking into it soon.
    Your sample programs are of good help, do you have a suitable sample of this solution too?

    BR

    Alf

  • The app should be at nrf/applications/serial_lte_modem. This app has built-in support for the AT commands required to trigger firmware updates, so it’s a good starting point.

    I haven't verified this settiings but the below prj.conf should be a good start to enable FOTA download support

    CONFIG_NRF_MODEM_LIB=y
    CONFIG_NRF_MODEM_LIB_SYS_INIT=y
    CONFIG_FOTA_DOWNLOAD=y
    CONFIG_SLM_AT_FOTA=y
    

    Then you issue the AT command which ever way you like

    AT#XFOTA=2,<delta_update_url>
    

Related