Migration notes for nRF Connect SDK v3.4.0

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.

Partition Manager deprecation

The Partition Manager is a component in the nRF Connect SDK and is responsible for handling the memory partitioning at build time.

This functionality has been deprecated and replaced by Zephyr’s default devicetree-based memory partitioning. It is recommended that all new designs using Nordic devices are built with DTS instead of Partition Manager. Partition Manager will be removed from the nRF Connect SDK main branch by the end of 2026.

Samples, tests, and applications that previously relied on Partition Manager must now provide devicetree overlays that define the required flash and RAM partitions. For cellular use cases, you can reuse the partition layouts from nrf/dts/samples/cellular/*.dtsi by including the appropriate file in your board overlay.

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.

Security

Removal of legacy PSA Crypto API

The Mbed TLS module was updated to v4.1.0 (from v3.6.6).

This change removed support for legacy, deprecated mbedcrypto APIs and related tests (prefixed with mbedtls_). As a consequence, the nRF Security subsystem was updated: Kconfig options related to Mbed TLS were rearranged and the outdated Kconfig options were removed. The subsystem now uses the Mbed TLS integration from Zephyr as-is CONFIG_MBEDTLS_BUILTIN) while replacing upstream TF-PSA-Crypto with Oberon PSA Crypto (CONFIG_TF_PSA_CRYPTO_CUSTOM).

From this update onwards:

For an overview of the changes brought by this update in Mbed TLS and Zephyr, see the following pages:

Build and configuration system

HAL global define deprecation

Global HAL defines are deprecated. Do not reference the following global defines in code:

  • NRF51

  • NRF51422_XXAA

  • NRF51422_XXAB

  • NRF51422_XXAC

  • NRF52805_XXAA

  • NRF52810_XXAA

  • NRF52811_XXAA

  • NRF52820_XXAA

  • NRF52832_XXAA

  • NRF52833_XXAA

  • NRF52840_XXAA

  • NRF5340_XXAA_APPLICATION

  • NRF5340_XXAA_NETWORK

  • NRF54H20_XXAA

  • NRF54L05_XXAA

  • DEVELOP_IN_NRF54L15

  • NRF54L10_XXAA

  • NRF54L15_XXAA

  • DEVELOP_IN_NRF54LM20B

  • NRF54LM20A_XXAA

  • NRF7120_ENGA_XXAA

  • NRF54LM20B_XXAA

  • NRF_FLPR

  • NRF9120_XXAA

  • NRF9160_XXAA

  • NRF_APPLICATION

  • NRF_RADIOCORE

  • NRF_PPR

  • ENABLE_APPROTECT

  • ENABLE_APPROTECT_USER_HANDLING

  • ENABLE_AUTHENTICATED_APPROTECT

  • ENABLE_SECURE_APPROTECT

  • ENABLE_SECUREAPPROTECT

  • ENABLE_SECURE_APPROTECT_USER_HANDLING

  • ENABLE_AUTHENTICATED_SECUREAPPROTECT

  • NRF_SKIP_FICR_NS_COPY_TO_RAM

  • NRF_CONFIG_CPU_FREQ_MHZ

  • NRF_SKIP_CLOCK_CONFIGURATION

  • NRF_DISABLE_FICR_TRIMCNF

  • NRF_SKIP_TAMPC_SETUP

  • NRF_SKIP_GLITCHDETECTOR_DISABLE

  • NRF54L_CONFIGURATION_56_ENABLE

Use the corresponding Kconfig symbols instead.

Samples and applications

This section describes the changes related to samples and applications.

nRF Audio (formerly nRF5340 Audio)

  • The buildprog.py script no longer supports the -u (user name) option. Use the -cn (custom name) option instead. The custom name is now used for both unicast and broadcast. Changing this parameter requires a pristine build. The option is intended as a convenience argument; set names through configuration options for persistent configuration.

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 .dtsi files for all supported SoCs have been created in the nrf/dts/samples/matter directory. The files from the nrf/dts/samples/matter directory 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 .dtsi files for your own custom partitioning, find the appropriate base .dtsi file for your SoC and include it in your .overlay board file. For example, to reuse the base file for the nrf54lm20dk/nrf54lm20b/cpuapp board target, add the following line to your sample/boards/nrf54lm20dk_nrf54lm20b_cpuapp.overlay board 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 Visual Editor, or manually edit the .overlay file.

    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.conf extra argument to the build command.

Libraries

This section describes the changes related to libraries.

  • Location library:

    • The library now always uses the chosen zephyr,wifi node to find the used Wi-Fi device. If your application uses the deprecated ncs,location-wifi node, you need to change it to use the zephyr,wifi node instead:

      chosen {
              zephyr,wifi = &mywifi;
      };
      

Wi-Fi®

  • The Wi-Fi Enterprise snippet has changed. Use the nRF Connect SDK nordic-wifi-enterprise snippet instead of Zephyr’s wifi-enterprise snippet for Wi-Fi Enterprise builds. The nRF Connect SDK snippet is available in snippets/nordic-wifi-enterprise.