Modem firmware updates via serial interface

Good day

We are currently working with the nrf9160 and using it as a serial modem via AT commands by loading the serial_lte_modem application. I am currently investigating the implementation of modem firmware updates (the zip package) in the field and see that a few options exists as described in the documentation. For our application, updating the modem via its serial interface from our main processor would work best, as described in https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/libraries/dfu/fmfu_mgmt.html, but it seems that this implementation cannot co-exist with the serial_lte_modem application. I am quite new to Zephyr and the Nordic build environment, so not sure if there is a simple way to add an AT command to activate the fmfu_mgmt application, placing the modem in an upgrade mode, reboot when done to the usual AT command mode? Not sure if there is a better way to approach the problem? Any guidance would be appreciated.

Thanks

  • Some updates on my initial investigation, it seems the slm_at_host.c file provides a enter_datamode function. Would it be feasible to create a new at command to enable the datamode from where the fmfu serial packets can be handled similar to what is done in fmfu_firmware_upload?

  • Hi Johan,

    Thank you for contacting DevZone at NordicSemi.

    but it seems that this implementation cannot co-exist with the serial_lte_modem application

    What do you mean by that?

    Our serial_lte_modem application uses FOTA Download and Download client libraries along with other nCS libraries.

    Moreover, serial_lte_modem (application) accepts both modem-specific AT commands and our proprietary AT commands. 

    Creating / designing a new AT command is at your discretion. However, XFOTA command from SLM-specific AT commands provides functionality for different types of FOTA requests. I hope it will be helpful.

    With regards,

    Naeem

  • Hi Naeem, thanks for your reply.

    As explained in the first post, I would like to upgrade the modem firmware over the nrf9160's serial uart interface. XFOTA cannot do that as far as I understand, it can only download binaries via http or am I wrong? Is there perhaps another way to use XFOTA to upgrade the modem firmware over serial uart without first storing the image on external flash? I do not want to add external flash to our product just for firmware updates if possible.

    The fmfu_smp_svr sample seems to demonstrate what I would like to do, however it uses the CONFIG_MCUMGR_SMP_UART=y option which I cannot activate in the serial_lte_modem application as it seems to interfere with the at command parser of serial_lte_modem.

    Do you have any suggestions for me to try? 

    Regards 

  • Hi Johan,

    Yes you are right that XFOTA would download the target image from the url.

    I was also thinking to refer you to fmfu_smp_svr sample.

    What do you mean by "can not activate in serial_lte_modem application"?

    I just added this configuration in the serial lte modem app and was able to compile correctly.

    Also, what do you mean by "interfere with the at command parser"?

    What interference or error you are getting?

    Also,

    we can see from the documentation of nrf9160, that:

    A full modem firmware upgrade requires external flash.

    Also (on the same page), full-upgrade (using wired connection) uses SMP protocol to provide interface over UART and enables the device to perform the update. The same protocol is used in fmfu_smp_svr sample.

  • Hi Naeem

    I just added this configuration in the serial lte modem app and was able to compile correctly.

    That is good news, I was not able to get the serial lte modem to compile when I added the fmfu_smp_svr  configuration in prj.conf file. I am using v2.2.99-dev3. Is there a possibility that you can send the prj.conf file for the serial lte modem with SMP activated so that I can test please? That would be exactly what I require.

Related