Migration guide for nRF Connect SDK v2.7.0
This document describes the changes required or recommended when migrating your application from nRF Connect SDK v2.6.0 to nRF Connect SDK v2.7.0.
Required changes
The following changes are mandatory to make your application work in the same way as in previous releases.
Samples and applications
This section describes the changes related to samples and applications.
Applications using the dfu_application.zip
file
For all applications using the dfu_application.zip
file generated by the nRF Connect SDK build system:
Make sure that your DFU host tools support the
dfu_application.zip
file with the new format version (1
). If the tools do not support the new format version and you cannot update them, you can manually align the content of the zip archive generated with format version1
to version0
:Build your application in the same configuration with the nRF Connect SDK v2.6 release to obtain a reference file
dfu_application.zip
with format version0
.Manually align the content of the
dfu_application.zip
file generated with format version1
:
Align the properties described in the
manifest.json
file. Make sure to update all of the fields that are used by the selected DFU host tool.Rename the binary files that are included in the zip archive to match the file names used by the updated manifest. The binary file content is interoperable across nRF Connect SDK releases.
Samples and applications using short-range radio
All samples and applications built for multi-core SoCs were migrated to use IPC radio firmware as the default image for the network core (on nRF5340) or the radio core (on nRF54H20).
The samples previously built for those cores are no longer used in the default builds: Bluetooth: HCI IPC, nRF IEEE 802.15.4: Serialization RPMsg, nRF5340: Multiprotocol RPMsg, and Bluetooth: Host for nRF RPC Bluetooth Low Energy.
nRF5340 Audio applications
The nRF5340 Audio applications has removed all references to bt_ll_acs_nrf53 and will now only support the default controller SoftDevice Controller (LE Isochronous Channels). SoftDevice Controller is included and built automatically. Make sure to remove references to LE Audio controller for nRF5340 from your application and transition to the new controller.
Wi-Fi
Wi-Fi: Shell sample:
The parameters of the
connect
andap enable
commands have been updated. Check the updated parameters using the-h
help option of the command.
Serial LTE Modem (SLM)
The AT command parsing has been updated to utilize the Custom AT commands library. If you have introduced custom AT commands to the SLM, you need to update the command parsing to use the new library. See the Extending the application page for more information.
Peripheral samples
Radio test (short-range) sample:
The CLI command
fem tx_power_control <tx_power_control>
replacesfem tx_gain <tx_gain>
. This change applies to the sample built with the CONFIG_RADIO_TEST_POWER_CONTROL_AUTOMATIC set ton
.
Matter
With the inheritance of Zephyr’s Sysbuild (System build) in the nRF Connect SDK Sysbuild, some changes are provided to the Matter samples and applications:
CONFIG_CHIP_FACTORY_DATA_BUILD
Kconfig option is deprecated and you need to use theSB_CONFIG_MATTER_FACTORY_DATA_GENERATE
Kconfig option instead to enable or disable creating the factory data set during building a Matter sample. To enable factory data support on your device, you still need to set theCONFIG_CHIP_FACTORY_DATA
toy
.Factory data output files are now located in the
<application_name>/zephyr/
directory within the build directory.
CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE
Kconfig option is deprecated in sysbuild and you need to use theSB_CONFIG_MATTER_FACTORY_DATA_MERGE_WITH_FIRMWARE
Kconfig option instead to enable or disable merging the factory data HEX file with the final firmware HEX file.
SB_CONFIG_MATTER_OTA
Kconfig option has been added to enable or disable generating Matter OTA package during the building process.
CONFIG_CHIP_OTA_IMAGE_FILE_NAME
Kconfig option is deprecated and you need to use theSB_CONFIG_MATTER_OTA_IMAGE_FILE_NAME
Kconfig option instead to define Matter OTA output filename.
Note
If you want to build a sample without using sysbuild, you need to use the old Kconfig options.
Libraries
This section describes the changes related to libraries.
MQTT helper library
For applications using the MQTT helper library:
The
CONFIG_MQTT_HELPER_CERTIFICATES_FILE
is now replaced byCONFIG_MQTT_HELPER_CERTIFICATES_FOLDER
. The new option is a folder path where the certificates are stored. The folder path must be relative to the root of the project.If you are using the MQTT helper library, you must update the Kconfig option to use the new option.
When using the
CONFIG_MQTT_HELPER_PROVISION_CERTIFICATES
Kconfig option, the certificate files must be in standard PEM format. This means that the PEM files need not be converted to string format anymore.
FEM abstraction layer
For applications using FEM abstraction layer:
The function
fem_tx_power_control_set()
replaces the functionfem_tx_gain_set()
.The function
fem_default_tx_output_power_get()
replaces the functionfem_default_tx_gain_get()
.
Modem library
For applications using Modem library integration layer:
The option
CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_UART_ZEPHYR
is now deprecated. To enable the UART trace backend, use thenrf91-modem-trace-uart
snippet instead, or add a similar configuration in application overlays. The snippet is located insnippets/nrf91-modem-trace-uart/
.
Recommended changes
The following changes are recommended for your application to work optimally after the migration.
Samples and applications
Applications using build types
For applications using build types:
The CONF_FILE used for Custom build types is now deprecated and is being replaced with the FILE_SUFFIX variable, inherited from Zephyr. You can read more about it in Custom configurations, Providing CMake options, and the related Zephyr documentation.
If your application uses build types, it is recommended to update the
sample.yaml
to use the new variable instead of CONF_FILE.
For applications using child images:
With the inheritance of Zephyr’s sysbuild in the |NCS|, the Multi-image builds using child and parent images are deprecated.
If your application uses parent and child images, it is recommended to migrate your application to sysbuild before the multi-image builds are removed in one of the upcoming nRF Connect SDK releases. See Migrating from multi-image builds to sysbuild.
See the documentation in Zephyr for more information about sysbuild.
Matter
For the Matter samples and applications:
All Partition Manager configuration files (
pm_static
files) have been removed from theconfiguration
directory. Instead, apm_static_<BOARD>
file has been created for each target board and placed in the samples’ directories. Setting thePM_STATIC_YML_FILE
argument in theCMakeLists.txt
file has been removed, as it is no longer needed.Configuration files
Kconfig.mcuboot.defaults
,Kconfig.hci_ipc.defaults
, andKconfig.multiprotocol_rpmsg.defaults
that stored a default configuration for the child images have been removed. This was done because of the Sysbuild integration and the child images deprecation.The Matter samples and applications have been migrated to use sysbuild, though you can still use the child images. To migrate an application from the previous to the new version and keep using child images, complete the following steps:
Copy the content of the image configuration file
prj.conf
located in thesysbuild/<image_name>
directory (for example,sysbuild/mcuboot
) to theprj.conf
file located in thechild_image/<image_name>
directory.Copy the content of the board configuration file located in the
sysbuild/<image_name>/boards
directory (for example,sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf
) to the board file located in thechild_image/<image_name>/boards
directory.
All Partition Manager configuration files (
pm_static
files) with the suffixrelease
have been removed from all samples. Those files are now redundant, since the new build system allows using the file without the additional suffix if you use FILE_SUFFIX and it is available in the project’s directory.For example, if you add
-DFILE_SUFFIX=release
to the CMake arguments while building an nRF Connect SDK Matter sample on thenrf52840dk/nrf52840
target, the filepm_static_nrf52840dk_nrf52840.yaml
will be used as a fallback. This means that the filepm_static_nrf52840dk_nrf52840_release.yaml
with the exact same contents is not needed anymore. The CONF_FILE argument is deprecated, but if you want to keep using it within your project, you need to create thepm_static_nrf52840dk_nrf52840_release.yaml
file and copy the content of thepm_static_nrf52840dk_nrf52840.yaml
file to it.
Libraries
This section describes the changes related to libraries.
LwM2M carrier library
Many event defines have received new values. If you are using the values directly in your application, you need to check the events listed in
lwm2m_carrier.h
. The most likely place these changes are needed is Serial LTE modem application, where LwM2M carrier library AT commands are relying on the value of the defines instead of the names.