Migration notes for nRF Connect SDK v3.4.0 (Working draft)
This document describes the changes required or recommended when migrating your application from nRF Connect SDK v3.3.0 to nRF Connect SDK v3.4.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.
Matter
The Partition Manager has been deprecated, removed from the Matter samples and applications and replaced by Zephyr’s default devicetree-based memory partitioning. The base
.dtsifiles for all supported SoCs have been created in thenrf/dts/samples/matterdirectory. The files from thenrf/dts/samples/matterdirectory are used by default in all Matter samples and applications. You can also reuse them as a base for your own custom partitioning.To reuse the base
.dtsifiles for your own custom partitioning, find the appropriate base.dtsifile for your SoC and include it in your.overlayboard file. For example, to reuse the base file for thenrf54lm20dk/nrf54lm20b/cpuappboard target, add the following line to yoursample/boards/nrf54lm20dk_nrf54lm20b_cpuapp.overlayboard file:#include "<samples/matter/nrf54lm20_cpuapp_partitions.dtsi>"
After that, once the base is ready, you can modify partitions by using the nRF Connect for VS Code with its Devicetree language support and the Devicetree Visual Editor, or manually edit the
.overlayfile.For more information on how to configure partitions using DTS and how to migrate your existing configuration to DTS, see the Migrating partition configuration from Partition Manager to devicetree (DTS) page.
The Matter: Window covering sample now uses the Thread Sleepy End Device (SED) device type by default. You can enable the Thread Synchronized Sleepy End Device (SSED) device type as an optional feature. To enable the Thread SSED support, add the
-DEXTRA_CONF_FILE=ssed.confextra argument to the build command.
Libraries
This section describes the changes related to libraries.
Location library:
The library now always uses the chosen
zephyr,wifinode to find the used Wi-Fi device. If your application uses the deprecatedncs,location-wifinode, you need to change it to use thezephyr,wifinode instead:chosen { zephyr,wifi = &mywifi; };
Recommended changes
The following changes are recommended for your application to work optimally after the migration.
Build and configuration system
The Kconfig options
CONFIG_SRAM_SIZEandCONFIG_SRAM_BASE_ADDRESShave been deprecated. Use the devicetreezephyr.sramchosen node to specify which RAM node is used. If you adjust either option manually,CONFIG_SRAM_DEPRECATED_KCONFIG_SETis set to indicate the deprecation. However, applications will continue to build and work with this notice. For the majority of cases, you should not change these values as they default to the values of thezephyr,sramchosen node. If the code references these Kconfig options, you should update them. No deprecation warning will be emitted when these values are referenced due to the Kconfig define generation process.Note
This is listed in the recommended changes for this nRF Connect SDK release. In the next nRF Connect SDK release, this will be a required change.
Nordic SoC platform symbols (Haltium / Lumos)
The internal Haltium and Lumos platform names have been removed from the Nordic SoC integration in favor of the explicit Zephyr SOC_SERIES_* symbols.
Old symbols, headers, and macros are kept as deprecated aliases for one release cycle and emit a deprecation warning at build time.
Update your application as follows:
Kconfig options:
Replace
CONFIG_NRF_PLATFORM_HALTIUMwithCONFIG_SOC_SERIES_NRF54HorCONFIG_SOC_SERIES_NRF92(whichever applies).Replace
CONFIG_NRF_PLATFORM_LUMOSwithCONFIG_SOC_SERIES_NRF54LorCONFIG_SOC_SERIES_NRF71(whichever applies).Replace
SB_CONFIG_NRF_HALTIUM_GENERATE_UICRwithSB_CONFIG_NRF_GENERATE_UICRin yoursysbuild.conffile.
C headers (
zephyr/soc/nordic/common/):Replace
#include <haltium_power.h>with#include <soc_power.h>.Replace
#include <haltium_pm_s2ram.h>with#include <soc_pm_s2ram.h>.
C macros:
Replace
HALTIUM_PLATFORM_PSA_KEY_ID(...)withNRF_PLATFORM_PSA_KEY_ID(...)frominclude/psa/nrf_platform_key_ids.h.
The following table summarizes the renames:
Old name |
New name |
Type |
|---|---|---|
|
Kconfig |
|
|
Kconfig |
|
|
Sysbuild Kconfig |
|
|
|
Header |
|
|
Header |
|
|
Macro |
Note
The MDK-defined HALTIUM_XXAA and LUMOS_XXAA preprocessor symbols are managed by the MDK release schedule and are not affected by this migration.
Code that needs to distinguish hardware should use the corresponding NRF54H_SERIES, NRF92_SERIES, NRF54L_SERIES, or NRF7120_ENGA_XXAA defines instead.
Samples and applications
This section describes the changes related to samples and applications.
No changes since the latest nRF Connect SDK release.
Libraries
This section describes the changes related to libraries.
nRF Cloud library
The default value of the
CONFIG_NRF_CLOUD_CLIENT_ID_SRCchoice has changed fromCONFIG_NRF_CLOUD_CLIENT_ID_SRC_IMEIto the device UUID. On an nRF9160 device, the new default isCONFIG_NRF_CLOUD_CLIENT_ID_SRC_INTERNAL_UUID. On the nRF91x1 and future SoCs, the new default isCONFIG_NRF_CLOUD_CLIENT_ID_SRC_MDM_DEVICE_UUID.If your application relied on the previous IMEI-based default without setting it explicitly in the
prj.conffile, the device will connect to nRF Cloud with a different client ID after the upgrade and appear as a new, unprovisioned device. To preserve the previous behavior, add the following line to yourprj.conffile:CONFIG_NRF_CLOUD_CLIENT_ID_SRC_IMEI=y
The
CONFIG_NRF_CLOUD_CLIENT_ID_SRC_IMEIandCONFIG_NRF_CLOUD_CLIENT_ID_SRC_HW_IDKconfig options are deprecated but kept functional for fleet operators with IMEI-provisioned devices already in the field. New applications should use the UUID default to match the device ID that the nRF Cloud provisioning tools generate.