Migration notes for Serial Modem v2.0.0 (working draft)

This document provides guidance for migrating from Serial Modem v1.x.x to v2.0.0. The general principle has been to keep v2.0.0 backwards compatible. However, a small number of changes have been introduced to reduce both maintenance and flash usage. Some of these modifications might not require any updates on the host side, even if corresponding features are in use.

Required changes

The following changes are mandatory to make your application work in the same way as in previous releases.

  • Application logging backend changed from RTT to UART — The default application log backend has changed from SEGGER RTT to UART1 (VCOM1 on the nRF9151 DK). The UART is suspended at startup and activated at runtime with AT#XLOG=1. See Trace AT commands for the full command reference. If you cannot move to UART logs, see Enabling RTT logs for how to re-enable RTT logs.

  • Full FOTA - When compiling, rename overlay-full_fota.conf to overlay-full-fota.conf and add overlay-full-fota.overlay to the build configuration. See FOTA AT commands for more information.

  • #XGNSS notification had two meanings with alternative syntaxes as follows:

    #XGNSS: <gnss_service>,<gnss_status>
    #XGNSS: <latitude>,<longitude>,<altitude>,<accuracy>,<speed>,<heading>,<datetime>
    

    The latter is now renamed to #XGNSSPOS as follows:

    #XGNSSPOS: <latitude>,<longitude>,<altitude>,<accuracy>,<speed>,<heading>,<datetime>
    

    The former syntax remains unchanged.

  • AT#XNRFCLOUDPOS:

    • Changed <cell_pos> parameter to <cell_count>. The meaning changes from no cell positioning, single-cell or multi-cell to the number of cells to be included in the location request. 0 means that cellular positioning is not requested at all.

    • The AT#XNRFCLOUDPOS command has been updated to use the AT%NCELLMEAS command internally, so the host must not use it anymore.

    • #XNRFCLOUDPOS notification now includes the status of the location request. The syntax has changed from:

      #XNRFCLOUDPOS: <error>
      #XNRFCLOUDPOS: <type>,<latitude>,<longitude>,<uncertainty>
      

      to:

      #XNRFCLOUDPOS: <status>[,<type>,<latitude>,<longitude>,<uncertainty>]
      

Custom static partition layout migration

The Serial Modem no longer uses the nRF Connect SDK Partition Manager. All flash and SRAM partitions are now defined in devicetree overlays instead of pm_static_*.yml files.

If you maintained a custom pm_static_*.yml file, recreate the partition layout as a devicetree overlay, using the files in app/boards/ and app/overlay-*.overlay as a reference. For a general guide on migrating from Partition Manager to DTS, see the nRF Connect SDK PM to DTS migration page.

If you are planning to upgrade the applications in field from v1.x.x to v2.0.0 and were using the default partition layout, see Building without the immutable B0 bootloader for how to disable the B0 partition, which is used by default in v2.0.0.

Informational changes

The following changes are listed for informational purposes, and many hosts will work without any changes.

  • Application rollback prevention - Application firmware DFU now uses MCUboot downgrade prevention (CONFIG_MCUBOOT_DOWNGRADE_PREVENTION). The device rejects signed application images older than the version currently running. Set app/VERSION before each published build; see Releasing Serial Modem.

  • AT#XSMVER - No change to the response layout for hosts. <sm_version> is still a quoted Git-describe-style string (for example "v2.0.0-18-g2c85d9224fca"). Existing parsers can keep using it as in v1.x.x. The major.minor.patch part now follows app/VERSION (same value used for rollback prevention), the -N-g<hash> suffix still comes from Git.

  • Ring Indication (RI) - Change RI from pulse (100 ms) to level triggered, meaning RI stays asserted until the host asserts DTR. After the Serial Modem has enabled UART, RI will be deasserted.

  • HTTP client has been added and it’s enabled by default. Use CONFIG_SM_HTTPC=n if you do not need it and want to save flash.

  • nRF Cloud transport has been changed from MQTT to CoAP.

  • CONFIG_SM_NRF_CLOUD_LOCATION is enabled by default whenever CONFIG_SM_NRF_CLOUD is enabled. Use CONFIG_SM_NRF_CLOUD_LOCATION=n if you do not need it and want to save flash.