Migration notes for nRF Connect SDK v3.0.0
This document describes the changes required or recommended when migrating your application from nRF Connect SDK v2.9.0 to nRF Connect SDK v3.0.0.
Required changes
The following changes are mandatory to make your application work in the same way as in previous releases.
IDE, OS, and tool support
The nRF Command Line Tools have been archived and replaced by nRF Util. No further updates will be made to the nRF Command Line Tools. Last supported operating systems are Windows 10, Linux Ubuntu 22.04, and macOS 13. The nRF Command Line Tools will remain available for download, but do not install the SEGGER J-Link version they provide if you have a newer version installed.
It is recommended to install the latest version of nRF Util, as listed in the Install prerequisites section of the installation page.
Installation of the SDK and toolchain
Starting from the nRF Connect SDK v3.0.0, the Toolchain Manager app no longer provides the latest toolchain and nRF Connect SDK versions for installation.
Use one of the two installation methods to manage the toolchain and SDK versions, either the recommended nRF Connect for VS Code or the command line with nRF Util.
Build system
The default runner for the
west flashcommand has been changed to use nRF Util instead ofnrfjprogthat is part of the archived nRF Command Line Tools. This affects all boards that usednrfjprogas the west runner backend for programming the following SoCs and SiPs:nRF91 Series (including nRF91x1)
nRF7002
nRF5340 (including nRF5340 Audio DK)
Nordic Thingy:53
nRF52 Series
nRF21540
This change is made to ensure that the programming process is consistent across all boards and to provide a more robust programming experience. The
west flashcommand now uses thenrfutil devicesubcommand by default to flash the application to the board.Note
For nRF Connect SDK 3.0.0, use the nrfutil-device v2.8.8.
It is recommended to install nRF Util to avoid potential issues during programming. Complete the following steps:
Follow the steps for Installing nRF Util in its official documentation.
Install the nrfutil device using the following command:
nrfutil install device=2.8.8 --force
If you prefer to continue using
nrfjprogfor programming devices, specify the west runner withwest flash.Erasing the external memory when programming a new firmware image with the
west flashseries now always correctly honors the--eraseflag (and its absence) both when using thenrfjprogandnrfutilbackends. Before this release, thenrjfprogbackend would always erase only the sectors of the external flash used by the new firmware, and thenrfutilbackend would always erase the whole external flash.
Application development
The following are the changes required to migrate your applications to the nRF Connect SDK 3.0.0.
ZMS settings backend
The new settings backend for ZMS is not compatible with the old version.
To keep using the legacy backend, enable the CONFIG_SETTINGS_ZMS_LEGACY Kconfig option.
To migrate from the legacy backend to the new backend remove the Kconfig options CONFIG_SETTINGS_ZMS_NAME_CACHE
and CONFIG_SETTINGS_ZMS_NAME_CACHE_SIZE from your conf files.
Bluetooth® LE legacy pairing
Support for Bluetooth LE legacy pairing is no longer enabled by default because it is not secure.
The CONFIG_BT_SMP_SC_PAIR_ONLY Kconfig option is enabled by default in Zephyr.
If you still need to support the Bluetooth LE legacy pairing and you accept the security risks, disable the option in the configuration.
Caution
Using Bluetooth LE legacy pairing introduces, among others, a risk of passive eavesdropping. Supporting Bluetooth LE legacy pairing makes devices vulnerable to downgrade attacks.
CRACEN initialization
In the nRF Connect SDK versions 2.8.0 and 2.9.0, you must explicitly configure the CRACEN initialization.
It is done by adding the CONFIG_CRACEN_LOAD_MICROCODE Kconfig option to the image configuration.
This option allows to select the given image to initialize CRACEN.
However, from nRF Connect SDK 3.0.0, CRACEN is automatically initialized.
The new build configuration option (SB_CONFIG_CRACEN_MICROCODE_LOAD_ONCE) now controls this process at the sysbuild level.
When enabled, the build system automatically determines which image must handle the initialization of CRACEN.
Unlike in the nRF Connect SDK versions 2.8.0 and 2.9.0, where CRACEN initialization is disabled by default in the MCUboot configuration, CRACEN is initialized by the earliest bootloader by default in the nRF Connect SDK 3.0.0. This change can lead to scenarios where CRACEN might be initialized twice or not initialized at all. When migrating from the nRF Connect SDK v2.9.0 to v3.0.0, you must analyze which image is responsible for initializing CRACEN before and after the firmware update to ensure correct operation. Make sure to adjust your bootloader or application upgrade path accordingly to avoid any issues related to CRACEN initialization.
nRF54H20
This section describes the changes specific to the nRF54H20 SoC and DK support in the nRF Connect SDK.
Dependencies
The following required dependencies for the nRF54H20 SoC and DK have been updated.
nRF Util
nrfutilhas been updated to v7.13.0.Install nRF Util v7.13.0 as follows:
Download the nRF Util executable file from the nRF Util development tool product page.
Add nRF Util to the system path on Linux and macOS, or environment variables on Windows, to run it from anywhere on the system. On Linux and macOS, use one of the following options:
Add nRF Util’s directory to the system path.
Move the file to a directory in the system path.
On macOS and Linux, give
nrfutilexecute permissions by typingchmod +x nrfutilin a terminal or using a file browser. This is typically a checkbox found under file properties.On macOS, to run the nRF Util executable, you need to allow it in the system settings.
Verify the version of the nRF Util installation on your machine by running the following command:
nrfutil --version
If your version is lower than 7.13.0, run the following command to update nRF Util:
nrfutil self-upgrade
For more information, see the nRF Util documentation.
nRF Util device
nRF Util
devicecommand has been updated to v2.8.8.Install the nRF Util
devicecommand v2.8.8 as follows:nrfutil install device=2.8.8 --force
For more information, consult the nRF Util documentation.
nRF Util trace
nRF Util
tracecommand has been updated to v3.3.0. Install the nRF Utiltracecommand v3.3.0 as follows:nrfutil install trace=3.3.0 --force
For more information, consult the nRF Util documentation.
nRF Util suit
nRF Util
suitcommand has been updated to v0.9.0. Install the nRF Utilsuitcommand v0.9.0 as follows:nrfutil install suit=0.9.0 --force
For more information, consult the nRF Util documentation.
nRF54H20 BICR
The nRF54H20 BICR has been updated (from the one supporting nRF Connect SDK v2.9.0 as well as nRF Connect SDK v2.9.0-nRF54H20-1). To update the BICR of your development kit while in Root of Trust, do the following:
Build your application using nRF Connect SDK v3.0.0.
Connect the nRF54H20 DK to your computer using the DEBUGGER port on the DK.
Note
On MacOS, connecting the DK might repeatedly trigger a popup displaying the message
Disk Not Ejected Properly. To disable this, runJLinkExe, then runMSDDisablein the J-Link Commander interface.List all the connected development kits to see their serial number (matching the one on the DK’s sticker):
nrfutil device list
Program the BICR by running nRF Util from your application folder using the following command:
nrfutil device program --options chip_erase_mode=ERASE_NONE --firmware ./build/<your_application_name>/zephyr/bicr.hex --core Application --serial-number <serial_number>
nRF54H20 SoC binaries
The nRF54H20 SoC binaries bundle has been updated to version 0.9.6.
Caution
If migrating from nRF Connect SDK v2.9.0 or lower, you must follow steps from Migration notes for nRF Connect SDK v2.9.0-nRF54H20-1 to update the nRF54H20 SoC binaries bundle to version 0.9.2.
Note
The nRF54H20 SoC binaries only support specific versions of the nRF Connect SDK and do not support rollbacks to a previous version. Upgrading the nRF54H20 SoC binaries on your development kit might break the DK’s compatibility with applications developed for previous versions of the nRF Connect SDK. For more information, see IronSide SE ABI compatibility.
To update the SoC binaries bundle of your development kit while in Root of Trust, do the following:
Download the nRF54H20 SoC binaries v0.9.6.
Note
On macOS, ensure that the ZIP file is not unpacked automatically upon download.
Purge the device as follows:
nrfutil device recover --core Application --serial-number <serial_number> nrfutil device recover --core Network --serial-number <serial_number> nrfutil device reset --reset-kind RESET_PIN --serial-number <serial_number>
Run
west update.Move the correct
.zipbundle to a folder of your choice, then run nRF Util to program the binaries using the following command:nrfutil device x-suit-dfu --firmware nrf54h20_soc_binaries_v0.9.6.zip --serial-number <serial_number>
Purge the device again as follows:
nrfutil device recover --core Application --serial-number <serial_number> nrfutil device recover --core Network --serial-number <serial_number> nrfutil device reset --reset-kind RESET_PIN --serial-number <serial_number>
SDK and toolchain
To update the SDK and the toolchain, do the following:
Open Toolchain Manager in nRF Connect for Desktop.
Click SETTINGS in the navigation bar to specify where you want to install the nRF Connect SDK.
In SDK ENVIRONMENTS, click the Install button next to the nRF Connect SDK version v3.3.0.
Application development
The following are the changes required to migrate your applications to the nRF Connect SDK 3.0.0.
Entropy source for radio applications
The default entropy source was changed to use the SSF service. As a result, the communication channel as well as RAM regions, dedicated to communicate with the SDFW are now enabled by default. This can result in incompatible UICRs if your application relies on the defaults. If UICRs are incompatible, the application cannot be upgraded using DFU, but must be programmed using the DEBUGGER port. If you want to update your application using DFU, add the following overlay to your radio application if you want to maintain UICR compatibility:
/* Switch back to the pseudo-random entropy source. */ / { chosen { zephyr,entropy = &prng; }; /delete-node/ psa-rng; prng: prng { compatible = "nordic,entropy-prng"; status = "okay"; }; }; /* Disable IPC between cpusec <-> cpurad. */ &cpusec_cpurad_ipc { status = "disabled"; }; &cpurad_ram0x_region { status = "disabled"; }; &cpusec_bellboard { status = "disabled"; };
SUIT MPI configuration
The SUIT MPI configuration has been moved from local Kconfig options to sysbuild.
To migrate your application, move all CONFIG_MPI_* options from the application configuration into the sysbuild.conf file.
For example, to migrate the root manifest vendor ID, remove the following line from the prj.conf file:
CONFIG_SUIT_MPI_ROOT_VENDOR_NAME="acme.corp"
And add the following line inside the sysbuild.conf file:
SB_CONFIG_SUIT_MPI_ROOT_VENDOR_NAME="acme.corp"
If your project does not use the sysbuild.conf file, you must create one.
Samples and applications
This section describes the changes related to samples and applications.
Asset Tracker v2
The Asset Tracker v2 application has been removed. For development of asset tracking applications, refer to the Asset Tracker Template.
The factory-programmed Asset Tracker v2 firmware is still available to program the nRF91xx DKs using the Programmer app, the Quick Start app, and the Cellular Monitor app.
nRF Desktop
The default device names (the CONFIG_DESKTOP_DEVICE_PRODUCT Kconfig option) have been updated to remove the “52” infix, because the nRF Desktop application supports other SoC Series also. As a result of this change, peripherals using firmware from nRF Connect SDK 3.0.0 (or newer) will not pair with dongles using firmware from an older nRF Connect SDK release, and the other way around. Also aligned the
99-hid.rulesfile inside the HID Configurator script. The HID Configurator rule will not work with old device names.To keep backwards compatibility, revert locally, the changes introduced by commit hash
5b80e46478462907a3cc4fd1686e241591775ffe:The CONFIG_DESKTOP_DEVICE_PRODUCT Kconfig option defines the device name used by HID peripheral.
The
peer_namearray inside theble_scan_def.hfile determines device name filters used by HID dongle while scanning for unpaired HID peripherals.The
99-hid.rulesfile allows HID configurator Python script to configure nRF Desktop devices without root access.
nRF5340 Audio applications
The nRF Audio applications Building and programming using script now requires the transport (
-t/--transport) type to be included.The nRF Audio applications Building and programming using standard methods now requires an extra CMake option to provide extra Kconfig fragments to select the device type.
Libraries
This section describes the changes related to libraries.
Google Fast Pair
For applications and samples using the Google Fast Pair Service (GFPS) library:
If you use sysbuild for generating a hex file with the Fast Pair provisioning data, you must align your application with the new approach for passing the provisioning parameters (the Model ID and the Anti-Spoofing Private Key). The
FP_MODEL_IDandFP_ANTI_SPOOFING_KEYCMake variables are replaced by the correspondingSB_CONFIG_BT_FAST_PAIR_MODEL_IDandSB_CONFIG_BT_FAST_PAIR_ANTI_SPOOFING_PRIVATE_KEYKconfig options that are defined at the sysbuild level. The following additional build parameters for Fast Pair are no longer valid:-DFP_MODEL_ID=0xFFFFFF -DFP_ANTI_SPOOFING_KEY=AbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbA=You must replace them with the new sysbuild Kconfig options. You can provide them as additional build parameters to the build command as follows:
-DSB_CONFIG_BT_FAST_PAIR_MODEL_ID=0xFFFFFF -DSB_CONFIG_BT_FAST_PAIR_ANTI_SPOOFING_PRIVATE_KEY='\"AbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbA=\"'-DSB_CONFIG_BT_FAST_PAIR_MODEL_ID=0xFFFFFF -DSB_CONFIG_BT_FAST_PAIR_ANTI_SPOOFING_PRIVATE_KEY=\"AbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbAbA=\"You can replace this exemplary method with any other configuration method that is supported by sysbuild.
Note
To avoid build failures, you must surround the string value for the Anti-Spoofing Private Key parameter with the special character sequence instead of the typical
"character. The surrounding characters depend on your operating system:Replace the standard
"character with the\"characters.Surround the modified string value with the
'character.
Replace the standard
"character with the\"characters.The special character sequence is only required when you pass the
SB_CONFIG_BT_FAST_PAIR_ANTI_SPOOFING_PRIVATE_KEYKconfig option as an additional build parameter.You must remove the
SB_CONFIG_BT_FAST_PAIRKconfig option from the sysbuild configuration in your project. TheSB_CONFIG_BT_FAST_PAIRoption no longer exists in this nRF Connect SDK release. Additionally, if you rely on theSB_CONFIG_BT_FAST_PAIRKconfig option to set theCONFIG_BT_FAST_PAIRKconfig option in the main image configuration of your application, you must align your main image configuration and set theCONFIG_BT_FAST_PAIRKconfig option explicitly.If your Fast Pair application uses the Find My Device (FMD) extension, you must update your application code to correctly track the FMDN provisioning state. From this nRF Connect SDK release, you must not rely on the
bt_fast_pair_fmdn_info_cb.provisioning_state_changedcallback to report the initial provisioning state right after the Fast Pair module is enabled with thebt_fast_pair_enable()function call. Instead, you must use thebt_fast_pair_fmdn_is_provisioned()function to initialize the FMDN provisioning state right after thebt_fast_pair_enable()function call. For more details, see the Provisioning state section in the Fast Pair integration guide.
nRF Cloud library
For applications and samples using the nRF Cloud library:
You must set the
CONFIG_NRF_CLOUDKconfig option to access the nRF Cloud libraries. This option is now disabled by default to prevent the unintended inclusion of nRF Cloud Kconfig variables in non-nRF Cloud projects, addressing a previous issue.
Location library
For applications and samples using the Location library:
Support for HERE location services and the
CONFIG_LOCATION_SERVICE_HEREKconfig option has been removed. To use external location services, enable theCONFIG_LOCATION_SERVICE_EXTERNALoption and implement the required APIs.The
serviceparameter inlocation_cellular_configandlocation_wifi_confighas been removed. The library supports only one location service, so theserviceparameter is no longer needed.
Recommended changes
The following changes are recommended for your application to work optimally after the migration.
Application development
The following are the changes recommended to migrate your applications to the nRF Connect SDK 3.0.0.
Performance optimization for ZMS settings backend
For the new backend you can now enable some performance optimizations using the following Kconfig options:
CONFIG_SETTINGS_ZMS_LL_CACHE: Used for caching the linked list nodes related to Settings Key/Value entries.CONFIG_SETTINGS_ZMS_LL_CACHE_SIZE: The size of the linked list cache (each entry occupies 8B of RAM).CONFIG_SETTINGS_ZMS_NO_LL_DELETE: Disables deleting the linked list nodes when deleting a Settings Key. Use this option only when the application is always using the same Settings Keys. When the application uses random Keys, enabling this option could lead to incrementing the linked list nodes without corresponding Keys and cause excessive delays to loading of the Keys. Use this option only to accelerate the delete operation for a fixed set of Settings elements.CONFIG_SETTINGS_ZMS_LOAD_SUBTREE_PATH: Loads first the subtree path passed in the argument, then continue to load all the Keys in the same subtree if the handler returns a zero value.
Samples and applications
This section describes the changes related to samples and applications.
Serial LTE Modem
The error event LWM2M_CARRIER_ERROR_RUN has been removed from the LwM2M carrier library AT commands.
Errors that were previously notified to the application with the
LWM2M_CARRIER_ERROR_RUNevent type have instead been added toLWM2M_CARRIER_ERROR_CONFIGURATION.
Bluetooth Fast Pair Locator tag
If you want to align your application project with the newest version of the Bluetooth Fast Pair: Locator tag sample and still maintain the DFU backwards compatibility for your already deployed products that are based on the
nrf52840dk/nrf52840and thenrf54l15dk/nrf54l15/cpuappboard targets, use the RSA signature algorithm (theSB_CONFIG_BOOT_SIGNATURE_TYPE_RSAKconfig option) that is supported as part of the previous nRF Connect SDK releases. In the current nRF Connect SDK release, the MCUboot DFU signature type has been changed:To the Elliptic curve digital signatures with curve P-256 (ECDSA P256 - the
SB_CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256Kconfig option) in case of thenrf52840dk/nrf52840board target.To the Edwards-curve digital signature with curve Curve25519 (ED25519 - the
SB_CONFIG_BOOT_SIGNATURE_TYPE_ED25519Kconfig option) in case of thenrf54l15dk/nrf54l15/cpuappboard target.
As a result, you will not be able to perform DFU from an old version to a new one.
Wi-Fi®
For samples using Wi-Fi features:
The nRF70 driver heap was part of the system shared heap
CONFIG_HEAP_MEM_POOL_SIZE. Now dedicated heaps have been defined for Wi-Fi driver control plane and data plane operations. Default value of heap for control plane operations is 20000 bytes and for data plane operations, it is 130000. It is recommended to disableCONFIG_HEAP_MEM_POOL_IGNORE_MIN, and let system calculate theK_HEAPsize. Any subsequent RAM overflow issues need to be solved by fine-tuningCONFIG_NRF_WIFI_CTRL_HEAP_SIZEandCONFIG_NRF_WIFI_DATA_HEAP_SIZE.
Libraries
This section describes the changes related to libraries.
Download client
The Download client library has been deprecated in favor of the Downloader library and will be removed in a future nRF Connect SDK release.
You can follow this guide to migrate your application to use the Downloader library. This will reduce the footprint of the application and will decrease memory requirements on the heap.
To replace Download client with the Downloader, complete the following steps.
Kconfig options:
Replace:
The
CONFIG_DOWNLOAD_CLIENTKconfig option with theCONFIG_DOWNLOADERKconfig option.The
CONFIG_DOWNLOAD_CLIENT_MAX_HOSTNAME_SIZEKconfig option with theCONFIG_DOWNLOADER_MAX_HOSTNAME_SIZEKconfig option.The
CONFIG_DOWNLOAD_CLIENT_MAX_FILENAME_SIZEKconfig option with theCONFIG_DOWNLOADER_MAX_FILENAME_SIZEKconfig option.The
CONFIG_DOWNLOAD_CLIENT_STACK_SIZEKconfig option with theCONFIG_DOWNLOADER_STACK_SIZEKconfig option.The
CONFIG_DOWNLOAD_CLIENT_SHELLKconfig option with theCONFIG_DOWNLOADER_SHELLKconfig option.The
CONFIG_DOWNLOAD_CLIENT_TCP_SOCK_TIMEO_MSKconfig option with theCONFIG_DOWNLOADER_HTTP_TIMEO_MSKconfig option.The
CONFIG_DOWNLOAD_CLIENT_COAP_MAX_RETRANSMIT_REQUEST_COUNTKconfig option with theCONFIG_DOWNLOADER_COAP_MAX_RETRANSMIT_REQUEST_COUNTKconfig option.The
CONFIG_DOWNLOAD_CLIENT_COAP_BLOCK_SIZEKconfig option with theCONFIG_DOWNLOADER_COAP_BLOCK_SIZE_512Kconfig option.
Remove:
The
CONFIG_DOWNLOAD_CLIENT_BUF_SIZEKconfig option.The
CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZEKconfig option.The
CONFIG_DOWNLOAD_CLIENT_RANGE_REQUESTSKconfig option.The
CONFIG_DOWNLOAD_CLIENT_CIDKconfig option.
Add:
The
CONFIG_DOWNLOADER_TRANSPORT_COAPKconfig option to enable CoAP support.The
CONFIG_NET_IPV4Kconfig option to enable IPv4 support.The
CONFIG_NET_IPV6Kconfig option to enable IPv6 support.
Replace header files:
Remove:
#include <net/download_client.h>
Add:
#include <net/downloader.h>
Replace download client initialization:
Remove:
static struct download_client dlc; static int callback(const struct download_client_evt *event); download_client_init(&dlc, callback)
Add:
static struct downloader dl; static int callback(const struct downloader_evt *event); static char dl_buf[2048]; /* Use buffer size set by CONFIG_DOWNLOAD_CLIENT_BUF_SIZE previously */ static struct downloader_cfg dl_cfg = { .callback = callback, .buf = dl_buf, .buf_size = sizeof(dl_buf), }; downloader_init(&dl, &dl_cfg);
Update download client callback:
Replace:
DOWNLOAD_CLIENT_EVT_FRAGMENTevent withDOWNLOADER_EVT_FRAGMENT.DOWNLOAD_CLIENT_EVT_ERRORevent withDOWNLOADER_EVT_ERROR.DOWNLOAD_CLIENT_EVT_DONEevent withDOWNLOADER_EVT_DONE.
Remove:
DOWNLOAD_CLIENT_EVT_CLOSEDevent.
Add:
DOWNLOADER_EVT_STOPPEDevent.DOWNLOADER_EVT_DEINITIALIZEDevent.
Server connect and disconnect:
The
download_client_disconnect()function is not ported to the new downloader. The downloader is expected to connect when the download begins. If thekeep_connectionflag is set in the host configuration the connection persists after the download completes or is aborted by thedownloader_cancel()function. In this case, the downloader is disconnected when it is deinitialized by thedownloader_deinit()function.
Replace file download:
We show the changes for the
download_client_start()function here, though the required work is similar to thedownload_client_get()function.Remove:
int err; const struct download_client_cfg dlc_config = { ... }; err = download_client_set_host(&dlc, dl_host, &dlc_config); err = download_client_start(&dlc, dl_file, offset);
Add:
/* Note: All configuration of the downloader is done through the config structs. * The downloader struct should not be modified by the application. */ static struct downloader_host_cfg dl_host_cfg = { ... /* Note: * .frag_size_override is replaced by .range_override. * .set_tls_hostname is replaced by .set_native_tls. * dlc.close_when_done is moved here and inverted(.keep_connection). * Set .cid if CONFIG_DOWNLOAD_CLIENT_CID was enabled in the download client. */ }; int err = downloader_get_with_host_and_file(&dl, &dl_host_cfg, dl_host, dl_file, offset);
Note
The new downloader has an API to download the file using the URI directly.
[optional] Deinitialize the downloader after use:
The new downloader can be deinitialized to free its resources. If another download is required later on, a new downloader instance needs to be initialized.
Add:
err = downloader_deinit(&dl);
Modem SLM
For applications and samples using the Modem SLM library:
Replace the
CONFIG_MODEM_SLM_WAKEUP_PINKconfig option withCONFIG_MODEM_SLM_POWER_PIN.Replace the
CONFIG_MODEM_SLM_WAKEUP_TIMEKconfig option withCONFIG_MODEM_SLM_POWER_PIN_TIME.Replace the
modem_slm_wake_up()function withmodem_slm_power_pin_toggle().
Protocols
This section describes the changes related to protocols.
Bluetooth Mesh
Support for TinyCrypt-based security toolbox (
CONFIG_BT_MESH_USES_TINYCRYPT) has started the deprecation procedure and is not recommended for future designs.For platforms that do not support the TF-M: The default security toolbox is based on the Mbed TLS PSA API (
CONFIG_BT_MESH_USES_MBEDTLS_PSA).For platforms that support the TF-M: The default security toolbox is based on the TF-M PSA API (
CONFIG_BT_MESH_USES_TFM_PSA).The Configuring Bluetooth Mesh in nRF Connect SDK page provides more information about the updating of the images based on different security toolboxes.
Due to an incompatibility between the old and new ZMS backend for Settings, the mesh device will not be able to load its settings and provisioning data. This affects nRF54L Series devices.
Make sure to unprovision mesh device before flashing the new firmware.
Alternatively, enable the
CONFIG_SETTINGS_ZMS_LEGACYKconfig option to use the old backend and recover the device settings and provisioning data. EnableCONFIG_SETTINGS_ZMS_NAME_CACHEand adjustCONFIG_SETTINGS_ZMS_NAME_CACHE_SIZEaccording to the device needs.