nRF Connect SDK v2.2.0 Release Notes

nRF Connect SDK delivers reference software and supporting libraries for developing low-power wireless applications with Nordic Semiconductor products in the nRF52, nRF53, nRF70, and nRF91 Series. The SDK includes open source projects (TF-M, MCUboot, OpenThread, Matter, and the Zephyr RTOS), which are continuously integrated and redistributed with the SDK.

Release notes might refer to “experimental” support for features, which indicates that the feature is incomplete in functionality or verification, and can be expected to change in future releases. To learn more, see Software maturity levels.

Highlights

The following list includes the summary of the most relevant changes introduced in this release.

  • Added support for the following features:

    • Connected AoA transmitter.

    • Wi-Fi location in nRF Cloud Location Services.

  • Added experimental support for the following features:

    • Distance Measurement vendor models supporting distance measurement between Bluetooth mesh devices.

    • LE Power Control Request, which enables a device to request a change in TX power to a peer device.

    • Periodic Advertising Sync Transfer (only Sending supported).

    • TCP/IP and TLS over Thread.

    • ANT on nRF5340.

    • Power optimizing AS Release Assistance Indication (RAI) feature with LwM2M with samples and documentation for use on supported cellular networks.

    • Arm Platform Security Architecture best practice on nRF5340 and nRF9160. Includes new samples:

      • TF-M: Provisioning image sample for production line provisioning of keys and advancing lifecycle states.

      • TF-M: PSA template sample demonstrating secure application design using Trusted Firmware-M, nRF Secure Immutable Bootloader, and MCUboot.

    • Target Wake Time (TWT) feature in the Wi-Fi driver for nRF7002.

  • Improved:

    • Predicted GPS: Location object split into different datasets for improved flexibility and a new API in the location library for predictive GPS location.

    • Neighbor cell measurement functionality for single-cell and multi-cell location services using Modem firmware v1.3.4. Customers can optimize for lower power consumption or performance.

    • The default advertiser implementation in Bluetooth mesh subsystem by changing it from adv_legacy.c to adv_ext.c. This provides performance and reliability improvements in terms of reduced latency and increased relay throughput under high network load.

    • Enabling Power Envelope Control with hardware including nRF21540 to flatten the output power over temperature and frequency.

See Changelog for the complete list of changes.

Sign up for the nRF Connect SDK v2.2.0 webinar to learn more about the new features.

The official nRF Connect for VS Code extension also received improvements. See the latest release notes for nRF Connect for Visual Studio Code for more information.

Release tag

The release tag for the nRF Connect SDK manifest repository (https://github.com/nrfconnect/sdk-nrf) is v2.2.0. Check the west.yml file for the corresponding tags in the project repositories.

To use this release, check out the tag in the manifest repository and run west update. See Get the nRF Connect SDK code and Updating the repositories for more information.

For information on the included repositories and revisions, see Repositories and revisions for v2.2.0.

IDE and tool support

nRF Connect extension for Visual Studio Code is the only officially supported IDE for nRF Connect SDK v2.2.0. SEGGER Embedded Studio Nordic Edition is no longer tested or expected to work with nRF Connect SDK v2.2.0.

Toolchain Manager, used to install the nRF Connect SDK automatically from nRF Connect for Desktop, is available for Windows, Linux, and macOS.

Supported modem firmware

See Modem firmware compatibility matrix for an overview of which modem firmware versions have been tested with this version of the nRF Connect SDK.

Use the latest version of the nRF Programmer app of nRF Connect for Desktop to update the modem firmware. See Updating the modem firmware for instructions.

Known issues

Known issues are only tracked for the latest official release. See known issues for nRF Connect SDK v2.2.0 for the list of issues valid for the latest release.

Changelog

The following sections provide detailed lists of changes by component.

Application development

  • Updated:

    • The Software maturity levels page with a section about API deprecation.

    • The Board support page with a section about processing environments. Also, updated terminology across the documentation to avoid the use of “secure domain” and “non-secure domain” when referring to the adoption of Cortex-M Security Extensions for the _ns build targets.

RF Front-End Modules

  • Added the nRF21540 GPIO+SPI built-in power model that keeps the nRF21540’s gain constant and as close to the currently configured value of gain as possible.

Build system

  • Fixed:

    • An issue with the nRF Connect SDK Toolchain where protoc and nanopb would not be correctly detected by the build system, resulting in builds trying to find locally installed versions instead of the version shipped with the nRF Connect SDK Toolchain.

    • An issue with passing quoted settings to child images.

Wi-Fi

See Wi-Fi samples for details about how to use Wi-Fi in your application.

Protocols

This section provides detailed lists of changes by protocol. See Samples for lists of changes for the protocol-related samples.

Bluetooth LE

For details, see the SoftDevice Controller changelog.

Bluetooth mesh

Also, see Bluetooth mesh samples for the list of changes.

Enhanced ShockBurst (ESB)

nRF IEEE 802.15.4 radio driver

  • Added:

    • Functionality where Radio trim values are reapplied after a POWER register write as a workaround for the hardware Errata 158 of the nRF5340 chip.

    • API that allows for Coordinated Sampled Listening (CSL) Phase calculation based on an absolute anchor time and CSL Period.

Matter

See Matter samples for the list of changes for the Matter samples.

Matter fork

The Matter fork in the nRF Connect SDK (sdk-connectedhomeip) contains all commits from the upstream Matter repository up to, and including, bc6b43882a56ddb3e94d3e64956bd5f3292b4058.

Thread

  • Added experimental TCP support as required by Thread 1.3 Specification.

See Thread samples for the list of changes for the Thread samples.

Wi-Fi

See Wi-Fi samples for the list of changes for the Wi-Fi samples.

Applications

This section provides detailed lists of changes by application.

nRF9160: Asset Tracker v2

  • Added:

    • Handling for the new data receive events in the nRF Cloud library. This is a major change in the application code but a minor change from the user perspective.

    • Location module. GNSS is used through the Location library.

  • Updated:

    • The application now uses the new LwM2M location assistance objects through the LwM2M location assistance library.

    • The application now uses passive mode as the default mode for Thingy:91 builds.

    • The application now uses the Location library for retrieving location information. This is a major change in the application code but a minor change from the user perspective.

    • Neighbor cell handling moved from Modem module to Location module to be used through Location library.

    • The Location module triggers a location_request() with GNSS being the first priority method and cellular the second priority if they are enabled in the application configuration.

    • A-GPS/P-GPS are not requested based on triggers in the application but only based on Location library events LOCATION_EVT_GNSS_ASSISTANCE_REQUEST and LOCATION_EVT_GNSS_PREDICTION_REQUEST.

    • Currently, you cannot configure or define the LTE LC neighbor cell search type with the Location library. The default search type is always used.

    • The Kconfig option CONFIG_GNSS_MODULE_PGPS_STORE_LOCATION (calling nrf_cloud_pgps_set_location()) is not supported in the Location library.

  • Removed:

    • GNSS module.

    • A-GPS and P-GPS processing. It is now handled by the nRF Cloud library.

    • NMEA support. This was there only because originally, nRF Cloud did not support PVT but that has changed.

nRF9160: Serial LTE modem

  • Added:

  • Updated the service info JSON payload to use GNSS instead of GPS.

  • Removed automatic quit of data mode in GNSS, FTP, and HTTP services.

nRF5340 Audio

  • Added:

    • Kconfig options for different sample rates and BAP presets.

    • Bidirectional mode for the CIS mode.

    • A walkie talkie demo for bidirectional CIS.

    • Minimal Media Control Service (MCS) functionality to the Play/Pause button.

    • Coordinated Set Identification Service (CSIS) for the CIS headset.

    • Functionality for supporting multiple streams on BIS headsets.

  • Updated:

    • LE Audio Controller Subsystem for nRF53 from version 3303 to version 3307. This version provides improved Android compatibility.

  • Fixed:

    • An issue with the figure for I2S-based firmware for gateway and headsets in the nRF5340 Audio applications documentation. The figure now correctly shows the interaction with the Bluetooth modules.

    • An issue with Simple Management Protocol (SMP) not advertising in the CIS mode.

    • An issue with the mcumgr command being unable to receive in the BIS mode.

    • The Testing FOTA upgrades section in the documentation did not mention long-pressing BTN 4 while resetting the development kit to start DFU. This has now been added to the documentation.

  • Removed support for the nRF5340 Audio DK (PCA10121) board version 0.7.1 or older.

nRF Machine Learning (Edge Impulse)

  • Removed the support for Thingy:52 (thingy52_nrf52832).

nRF Desktop

  • Added:

  • Updated:

    • The CONFIG_DESKTOP_BLE_SCANNING_ENABLE Kconfig option has been renamed to CONFIG_DESKTOP_BLE_SCAN_ENABLE.

    • The UUID16 values of GATT Human Interface Device Service (HIDS) and GATT Battery Service (BAS) have been moved from advertising data to scan response data.

    • The CONFIG_BT_GATT_SERVICE_CHANGED Kconfig option is disabled on nRF Desktop dongles to reduce memory footprint.

    • The CONFIG_BT_ID_UNPAIR_MATCHING_BONDS is now enabled by default. This is done to pass the Fast Pair Validator’s end-to-end integration tests and to improve the user experience during the erase advertising procedure.

    • The CONFIG_BT_ID_ALLOW_UNAUTH_OVERWRITE Kconfig option is enabled by default for the HID peripherals. This setting improves the user experience as it is no longer required to delete the bonding information from the old identity to pair using the new one.

Samples

This section provides detailed lists of changes by sample, including protocol-related samples. For lists of protocol-specific changes, see Protocols.

Bluetooth samples

Bluetooth mesh samples

nRF9160 samples

  • Added Cellular: Modem trace external flash backend sample that demonstrates how to add a modem trace backend that stores the trace data to external flash.

  • Cellular: LwM2M Client sample:

    • Added:

    • Updated:

      • The sample now uses the new LwM2M location assistance objects through the LwM2M location assistance library.

      • Removed all read callbacks from sensor code because of an issue of read callbacks not working properly when used with LwM2M observations. This is due to the fact that the engine does not know when data is changed.

      • Sensor samples are now enabled by default for Thingy:91 and disabled by default on nRF9160 DK.

  • Cellular: Modem Shell sample:

    • Added:

      • The functionality where LED 1 (nRF9160 DK)/Purple LED (Thingy:91) is lit for five seconds indicating that the current location has been acquired by using the location get command.

      • Overlay files for nRF9160 DK with nRF7002 EK to enable Wi-Fi scanning support. With this configuration, you can, for example, obtain the current location using the location get command.

      • Support for new GCI (Global Cell ID) search types for link ncellmeas command, which are supported by the modem firmware versions from and including 1.3.4.

      • Handling for the new data receive events in the nRF Cloud library.

      • Support for connecting to cloud using the LwM2M client utils library. An overlay file is provided for building with the LwM2M support and an optional overlay to enable P-GPS.

    • Removed A-GPS and P-GPS processing. It is now handled by the nRF Cloud library.

  • Cellular: Location sample:

    • Added overlay files for nRF9160 DK with nRF7002 EK to obtain the current location by using Wi-Fi scanning results.

  • Cellular: LTE Sensor Gateway sample:

    • Added handling for the new data receive events in the nRF Cloud library.

    • Removed A-GPS and P-GPS processing. It is now handled by the nRF Cloud library.

  • Cellular: nRF Cloud multi-service sample:

    • Added:

      • Support for the Location library Wi-Fi location method with the nRF7002 EK.

      • Handling for the new data receive events in the nRF Cloud library.

      • Board overlay file for nRF9160 DK with external flash.

      • Overlay file to enable P-GPS data storage in external flash.

    • Removed A-GPS and P-GPS processing. It is now handled by the nRF Cloud library.

  • Renamed the nRF9160: nRF Cloud REST cellular position sample to Cellular: nRF Cloud REST cellular location sample. Sample files are moved from samples/nrf9160/nrf_cloud_rest_cell_pos to samples/nrf9160/nrf_cloud_rest_cell_location.

Trusted Firmware-M (TF-M) samples

  • Added:

    • TF-M: Platform security architecture test for validating compliance with Arm PSA Certified requirements.

    • TF-M: Regression tests to run secure and non-secure Trusted Firmware-M (TF-M) regression tests.

    • TF-M: PSA template, providing a template for Arm PSA best practices on nRF devices and enforcing correct transition and usage of the PSA lifecycle states.

    • TF-M: Provisioning image sample that provisions the PSA platform root of trust parameters (such as the PSA Implementation ID and lifecycle state) in a manner compatible with Trusted Firmware-M (TF-M).

Thread samples

  • Thread: CLI sample:

    • Removed the Thread Certification support files in favor of regular sample overlays.

Matter samples

Note

All Matter samples in the nRF Connect SDK v2.2.0 that offer Wi-Fi support have been tested using the nRF7002 DK (PCA10143) rev. A and are built with rev. A support by default. You can configure Matter samples to use rev. B by setting the CONFIG_NRF700X_REV_A Kconfig option to n. Make sure that you build the samples for the revision of the nRF7002 DK that you are using.

  • Updated ZAP configuration of the samples to conform with device types defined in Matter 1.0 specification.

  • Matter: Light bulb sample:

    • Added:

      • Support for Matter over Wi-Fi on standalone nrf7002dk_nrf5340_cpuapp and on nrf5340dk_nrf5340_cpuapp with the nrf7002_ek shield attached.

      • Deferred attribute persister class to reduce the flash wear caused by handling the MoveToLevel command from the Level Control cluster.

nRF5340 samples

Wi-Fi samples

Other samples

  • Added Hardware ID sample.

  • Radio test (short-range) sample:

    • Added:

      • Support for the Front-end module feature TX power split feature. The new total_output_power shell command is introduced for sample builds with front-end module support. It enables automatic setting of the SoC output power in a radio peripheral and front-end module gain to achieve requested output power or less if an exact value is not supported.

      • Support for +1 dBm, +2 dBm, and +3 dBm output power on nRF5340 DK.

    • Updated:

      • Front-end module support is now provided by the Front-end module feature API instead of the custom driver that was part of this sample.

      • On the nRF5340 development kit, the nRF5340: Remote IPC shell sample is now a mandatory sample that must be programmed to the application core.

      • On the nRF5340 development kit, this sample uses the IPC service shell transport library to forward shell data through the physical application core UART interface.

CAF samples

Drivers

This section provides detailed lists of changes by driver.

Libraries

This section provides detailed lists of changes by library.

Binary libraries

Bluetooth libraries and services

See Bluetooth mesh samples for the list of changes for the Bluetooth mesh samples.

Bootloader libraries

  • Bootloader storage library:

    • Added:

      • PSA compatible lifecycle state.

      • PSA compatible implementation ID.

    • Removed the option of application using the library to read OTP memory when the nRF Secure Immutable Bootloader (NSIB) is enabled.

Modem libraries

  • Added the Custom AT commands library to add custom AT commands with application callbacks.

  • Modem information library:

    • Removed:

      • The modem_info_json_string_encode() and modem_info_json_object_encode() functions.

      • The network_mode field from network_param structure.

      • The macro MODEM_INFO_NETWORK_MODE_MAX_SIZE.

      • The CONFIG_MODEM_INFO_ADD_BOARD Kconfig option.

  • Modem library integration layer library:

    • Added:

      • The CONFIG_NRF_MODEM_LIB_IPC_IRQ_PRIO_OVERRIDE Kconfig option to override the IPC IRQ priority from the devicetree.

      • The CONFIG_NRF_MODEM_LIB_IPC_IRQ_PRIO Kconfig option to configure the IPC IRQ priority when the Kconfig option CONFIG_NRF_MODEM_LIB_IPC_IRQ_PRIO_OVERRIDE is enabled.

      • The CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_BITRATE Kconfig option to enable the measurement of the modem trace backend bitrate.

      • The CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_BITRATE_LOG Kconfig option to enable logging of the modem trace backend bitrate.

      • The CONFIG_NRF_MODEM_LIB_TRACE_BITRATE_LOG Kconfig option to enable logging of the modem trace bitrate.

    • Updated:

      • The IPC IRQ priority is now set using the devicetree.

      • The EGU peripheral is no longer used to generate software interrupts to process network data.

      • The getaddrinfo() function to return EAFNOSUPPORT instead of EPROTONOSUPPORT when socket family is not supported.

      • The bind() function to return EAFNOSUPPORT instead of ENOTSUP when socket family is not supported.

      • The sendto() function to return EAFNOSUPPORT instead of ENOTSUP when socket family is not supported.

      • The connect() function to not override the error codes set by the Modem library when called with raw parameters (non-IP).

    • Fixed:

      • An issue where the getsockopt() function causes segmentation fault when the optlen parameter is provided as NULL.

      • An issue where the recvfrom() function causes segmentation fault when the from and fromlen parameters are provided as NULL.

  • Location library:

    • Added:

      • Timeout for the entire location request.

      • Location data details such as entire PVT data.

      • MQTT support for nRF Cloud Wi-Fi positioning.

      • Improved LTE-GNSS interworking and added possibility to trigger GNSS priority mode if GNSS does not get long-enough time windows due to LTE idle mode operations.

    • Updated:

  • LTE link control library:

    • Added support for GCI (Global Cell ID) neighbor cell measurement search types, which are supported by the modem firmware versions from and including v1.3.4.

    • Updated the parameter type in the lte_lc_neighbor_cell_measurement() function to lte_lc_ncellmeas_params. It includes both search type and GCI count that have an impact only on GCI search types.

  • Modem key management library:

    • Added:

    • Updated:

      • All the functions to return -EACCES instead of -EPERM when the access to the credential is not allowed.

      • All the functions to return -EPERM instead of -EACCES when the operation is not permitted because the LTE link is active.

  • Renamed the AT SMS Cert library to GCF SMS. The GCF SMS library now uses the Custom AT commands library to register filtered AT commands.

Libraries for networking

  • Added LwM2M location assistance library that supports using A-GPS, P-GPS, and ground fix assistance from nRF Cloud through an LwM2M Server.

  • Multicell location library:

    • Removed the Kconfig option CONFIG_MULTICELL_LOCATION_MAX_NEIGHBORS. The maximum number of supported neighbor cell measurements for HERE location services depends on the CONFIG_LTE_NEIGHBOR_CELLS_MAX Kconfig option.

  • Download client library:

    • Updated the library so that it does not retry download on disconnect.

    • Fixed a race condition when starting the download.

  • nRF Cloud library:

    • Added:

      • A possibility to override used default OS memory alloc/free functions.

      • More unit tests for the library.

      • Events NRF_CLOUD_EVT_RX_DATA_CELL_POS and NRF_CLOUD_EVT_RX_DATA_SHADOW.

    • Updated:

      • The stack size of the MQTT connection monitoring thread can now be adjusted by setting the CONFIG_NRF_CLOUD_CONNECTION_POLL_THREAD_STACK_SIZE Kconfig option.

      • The library now subscribes to a wildcard cloud-to-device (/c2d) topic. This enables the device to receive nRF Cloud Location Services data on separate topics.

      • The event NRF_CLOUD_EVT_RX_DATA is replaced with NRF_CLOUD_EVT_RX_DATA_GENERAL.

      • The library now processes A-GPS and P-GPS data; it is no longer passed to the application.

      • The status field of NRF_CLOUD_EVT_ERROR events uses values from the enumeration nrf_cloud_error_status.

      • UI service info and sensor type strings now refer to GNSS instead of GPS.

      • Renamed the enumeration value NRF_CLOUD_EVT_RX_DATA_CELL_POS to NRF_CLOUD_EVT_RX_DATA_LOCATION.

    • Removed:

      • An unused parameter of the nrf_cloud_connect() function.

      • An unused nrf_cloud_shadow_update() function.

  • LwM2M client utils library:

    • Added support for using X509 certificates.

  • FOTA download library:

  • nRF Cloud REST library:

  • nRF Cloud P-GPS library:

    • Added access to P-GPS predictions in external flash.

    • Fixed:

      • An issue where zero predictions would be requested from the cloud.

      • An issue where subsequent updates were locked out after the first one completes. This happened when custom download transport was not used.

  • Renamed the nRF Cloud cellular positioning library to nRF Cloud location. In addition to cellular location, the library now supports device location from nRF Cloud using Wi-Fi network information.

Libraries for NFC

Other libraries

Common Application Framework (CAF)

DFU libraries

MPSL libraries

sdk-nrfxlib

See the changelog for each library in the nrfxlib documentation for additional information.

Scripts

  • Software Bill of Materials:

    • Updated the SPDX License List database to version 3.18.

  • Partition Manager:

    • Added:

    • Updated the ncs/nrf/subsys/partition_manager/pm.yml.pgps file to place P-GPS partition in external flash when so configured.

    • Fixed an issue with the driver and devicetree symbol for the external flash memory where the driver was sometimes NULL, even if the DT node was chosen.

      Note

      If your project includes MCUboot and uses external flash for storing secondary images, after applying this fix, you need to configure nordic,pm-ext-flash property in a devicetree overlay for the MCUboot child image. Otherwise, MCUboot will not be able to read a flash area in the external flash to pick up a new firmware image.

  • Unity:

    • Added:

      • Support for excluding functions from mock generation. This provides a framework to implement custom mocks.

    • Updated:

      • The generated mock functions have been renamed from __wrap to __cmock.

      • The generated mock headers have been renamed from mock_<header_file>.h to cmock_<header_file>.h.

      • The compiler option --defsym is used instead of --wrap.

MCUboot

The MCUboot fork in nRF Connect SDK (sdk-mcuboot) contains all commits from the upstream MCUboot repository up to and including cfec947e0f8be686d02c73104a3b1ad0b5dcf1e6, with some nRF Connect SDK specific additions.

The code for integrating MCUboot into nRF Connect SDK is located in the ncs/nrf/modules/mcuboot folder.

The following list summarizes both the main changes inherited from upstream MCUboot and the main changes applied to the nRF Connect SDK specific additions:

  • Added:

    • Precise check of the image size.

    • CONFIG_USE_NRF53_MULTI_IMAGE_WITHOUT_UPGRADE_ONLY Kconfig option to specify that you want to use nRF53 multi-image upgrade without the upgrade only setting in MCUboot. Enabling this option has drawbacks. See the Developing with nRF53 Series user guide for details.

    • CONFIG_BOOT_SERIAL_MAX_RECEIVE_SIZE Kconfig option to specify the size of the serial recovery command buffer, which was previously fixed at 512 bytes. The new default value is 1024 bytes to allow for larger commands (and increased transfer speed).

  • Updated loader by adding post copy hook to swap function.

  • Fixed:

    • RAM loading for Arm with correct handling of vector table when code has moved to RAM.

    • An issue with QSPI stack alignment in serial recovery, which prevented writing data to QSPI slots.

    • An issue in serial recovery where rc is wrongly returned as an unsigned integer.

Zephyr

The Zephyr fork in nRF Connect SDK (sdk-zephyr) contains all commits from the upstream Zephyr repository up to and including cd16a8388f71a6cce0cea871f75f6d4ac8f56da9, with some nRF Connect SDK specific additions.

For the list of upstream Zephyr commits (not including cherry-picked commits) incorporated into nRF Connect SDK since the most recent release, run the following command from the ncs/zephyr repository (after running west update):

git log --oneline cd16a8388f ^71ef669ea4

For the list of nRF Connect SDK specific commits, including commits cherry-picked from upstream, run:

git log --oneline manifest-rev ^cd16a8388f

The current nRF Connect SDK main branch is based on revision cd16a8388f of Zephyr.

Trusted Firmware-M

  • Added:

    • Reading, updating, and attesting the lifecycle state stored in nRF OTP. The storage is managed by the Bootloader storage library.

    • Reading and attesting an implementation ID stored in nRF OTP. The storage is managed by the Bootloader storage library.

    • Enabling the APPROTECT and the device reset when transitioning to the SECURED lifecycle state.

    • Support for provisioning as described in the Platform Security Architecture (PSA) security model.

Documentation