Migration guide for nRF Connect SDK v2.5.0
This document describes the changes required or recommended when migrating your application from nRF Connect SDK v2.4.0 to nRF Connect SDK v2.5.0.
Required changes
The following changes are mandatory to make your application work in the same way as in previous releases.
All references to GNSS assistance have been changed from
A-GPS
to A-GNSS. This affects the GNSS API, as well as nRF Cloud, Location, and LwM2M location assistance libraries. See release notes for changes related to each component.For the Serial LTE Modem (SLM) application:
The
CONFIG_SLM_AGPS
Kconfig option has been replaced byCONFIG_NRF_CLOUD_AGNSS
and is now enabled by default.The
CONFIG_SLM_PGPS
Kconfig option has been replaced byCONFIG_NRF_CLOUD_PGPS
.The
CONFIG_SLM_LOCATION
Kconfig option has been replaced byCONFIG_NRF_CLOUD_LOCATION
and is now enabled by default.The
#XCELLPOS
and#XWIFIPOS
AT commands have been replaced by#XNRFCLOUDPOS
.The
#XAGPS
and#XPGPS
AT commands have been replaced by#XGPS
.The operations to update bootloader (
3
) and read (6
) or erase (8
) the MCUboot secondary slot have been removed from the#XFOTA
AT command.The
#XSLMUART
AT command has been removed. UART is now configured using only devicetree.UART settings that were previously saved for this command now provoke error logs on startup. The errors are harmless. To remove these errors, you can erase all settings by doing a full erase of the device. This will be fixed in the next nRF Connect SDK release.
Hardware flow control is now required for the UART. If hardware flow control for the UART cannot be enabled, use the
CONFIG_SLM_UART_RX_BUF_SIZE
Kconfig option to ensure that there is adequate buffer space for the worst case scenario.UART TX now allows multiple AT command responses and notifications to be bundled together in a single transmission. Ensure that you correctly parse multiple responses and notifications, and do not rely on UART disablement between them.
The Kconfig option
CONFIG_SLM_CARRIER_APP_DATA_CONTAINER_BUFFER_LEN
has been renamed toCONFIG_SLM_CARRIER_APP_DATA_BUFFER_LEN
.The
#XDFUGET
,#XDFUSIZE
and#XDFURUN
AT commands have been removed.The
#XSOCKETOPT
optionSO_BINDTODEVICE
has been replaced bySO_BINDTOPDN
.The value of the
#XSSOCKETOPT
optionTLS_DTLS_HANDSHAKE_TIMEO
has been updated.
Applications using MCUboot must update to setting their version using an application VERSION file instead of the previously used
CONFIG_MCUBOOT_IMAGE_VERSION
Kconfig option. Alternatively, you can set the version in Kconfig by using theCONFIG_MCUBOOT_IMGTOOL_SIGN_VERSION
option, but using aVERSION
file is the recommended approach.
Recommended changes
The following changes are recommended for your application to work optimally after the migration.
Latest changes in Zephyr and nRF Connect SDK allow power optimization for the LwM2M Client. Using DTLS Connection Identifier reduces the DTLS handshake overhead when performing the LwM2M Update operation. This is enabled using the
CONFIG_LWM2M_CLIENT_UTILS_DTLS_CID
Kconfig option and requires modem firmware v1.3.5 or newer. Zephyr’s LwM2M engine now support tickless operation mode when the Kconfig optionCONFIG_LWM2M_TICKLESS
is enabled. This prevents the device from waking up on every 500 ms and achieves longer sleep periods. These power optimizations are enabled on the Cellular: LwM2M Client sample when using theoverlay-dtls-cid.conf
overlay file.Applications that use Zephyr’s LwM2M stack and the LwM2M client utils library must refactor to use the new event
LWM2M_FOTA_UPDATE_MODEM_RECONNECT_REQ
when updating the modem firmware to avoid rebooting the device. For an example, see the Cellular: LwM2M Client sample.Applications that use Zephyr’s LwM2M stack are recommended to use the
CONFIG_LWM2M_UPDATE_PERIOD
Kconfig option to set the LwM2M update sending interval.For the Serial LTE Modem (SLM) application:
If you are using the LwM2M carrier library, make sure to take into account the addition of the auto-connect feature that is enabled by default.
When performing a modem firmware update, you can now reset only the modem (instead of the whole device) using the new
#XMODEMRESET
AT command.
Applications that use
prj_<board>.conf
Kconfig configurations should be transitioned to usingboards/<board>.conf
Kconfig fragments.