nRF Connect SDK v1.6.0 Release Notes

nRF Connect SDK delivers reference software and supporting libraries for developing low-power wireless applications with Nordic Semiconductor products. It includes the TF-M, MCUboot and the Zephyr RTOS open source projects, which are continuously integrated and re-distributed with the SDK.

The nRF Connect SDK is where you begin building low-power wireless applications with Nordic Semiconductor nRF52, nRF53, and nRF91 Series devices. nRF53 Series devices are now supported for production. Wireless protocol stacks and libraries may indicate support for development or support for production for different series of devices based on verification and certification status. See the release notes and documentation for those protocols and libraries for further information.

Highlights

  • Added production support for nRF5340 for Bluetooth LE in single protocol configuration and in multiprotocol operation with Thread for Bluetooth Peripheral role.

  • Added production support for multiple advertising sets to SoftDevice Controller.

  • Added features available in Trusted Firmware-M (TF-M), which is supported for development with nRF5340 and nRF9160.

  • Integrated Apple Find My, supported for production.

  • Added development support for the Pelion Device Management library for LTE-M/NB-IoT and Thread.

  • Added the nRF Machine Learning application for Thingy:52, which further integrates Edge Impulse Machine Learning with the nRF Connect SDK.

  • Added support for all Thread 1.2 mandatory features for routers and end devices supported for development for the nRF52 family.

  • Integrated more complete support for Matter (Project CHIP) which is supported for development for nRF52840 and nRF5340.

  • Integrated Apple HomeKit ADK v5.3 and added development support for nRF52832 and nRF52833 for Bluetooth LE HomeKit accessories.

  • The application layer part of ZBOSS Zigbee stack is available in source code now.

  • New sample nRF9160: Modem Shell can be used to test various connectivity features.

Release tag

The release tag for the nRF Connect SDK manifest repository (https://github.com/nrfconnect/sdk-nrf) is v1.6.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 for more information.

Supported modem firmware

See Modem firmware compatibility matrix for an overview of which modem firmware versions have been tested with this version of 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

See known issues for nRF Connect SDK v1.6.0 for the list of issues valid for this release.

Important known issues

These known issues are potential regressions or high impact issues:

Changelog

The following sections provide detailed lists of changes by component.

nRF9160

  • Added:

    • Modem JWT library:

      • The library provides an API to obtain a JSON Web Token (JWT) from the modem.

      • This functionality requires modem firmware v1.3.0 or higher.

    • Modem attestation token library:

      • The library provides an API to get an attestation token from the modem.

      • Functionality requires modem firmware v1.3.0 or higher.

    • Memfault module and integration on nRF Connect SDK for nRF9160-based devices:

      • Integration of Memfault SDK into nRF Connect SDK.

    • nRF9160: Memfault sample:

      • Implements Memfault module and shows how to use the Memfault SDK functionality in an application.

    • nRF9160: Modem Shell sample:

      • Enables testing of various connectivity features such as link handling, TCP/IP connections, data throughput (curl and iPerf3), SMS, GNSS, FOTA, and PPP.

    • nRF Cloud P-GPS library:

      • The library adds P-GPS (Predicted GPS) support to the nRF Cloud library.

    • nRF9160: SMS sample:

      • Demonstrates how you can send and receive SMS messages with your nRF9160-based device using the SMS subscriber library.

    • nRF9160: PDN sample:

      • Demonstrates how to create and configure a Packet Data Protocol (PDP) context, activate a Packet Data Network connection, and receive events on its state and connectivity using the PDN library.

    • PDN library:

      • Manages Packet Data Protocol (PDP) contexts and PDN connections.

    • LwM2M client utils library:

      • Created from common parts of nRF9160: LwM2M Client sample.

      • This module can be reused to add common objects to LwM2M applications.

  • Updated:

    • nRF Cloud library:

      • Added cellular positioning support to the nRF Cloud location library.

      • Added Kconfig option CONFIG_NRF_CLOUD_CELL_POS to obtain cell-based location from nRF Cloud instead of using the modem’s GPS.

      • Added function nrf_cloud_modem_fota_completed(), which is to be called by the application after it re-initializes the modem (instead of rebooting) after a modem FOTA update.

      • Updated to include the FOTA type value in the NRF_CLOUD_EVT_FOTA_DONE event.

      • Updated configuration options for setting the source of the MQTT client ID (nRF Cloud device ID).

      • Updated nRF Cloud FOTA to use type-validated FOTA download.

    • nRF9160: Asset Tracker application:

      • Added optional P-GPS support.

      • Added application-specific option CONFIG_PGPS_STORE_LOCATION.

      • Added overlay-pgps.conf to enable P-GPS support.

      • Added overlay-agps-pgps.conf to enable A-GPS and P-GPS support.

      • Updated to handle new Kconfig options:

        • CONFIG_NRF_CLOUD_CELL_POS

    • nRF9160: Asset Tracker v2 application:

      • Added support for Azure IoT Hub.

      • Added support for nRF Cloud.

    • Modem information library:

    • FOTA download library:

      • Added an API to retrieve the image type that is being downloaded.

      • Added an API to cancel current downloading.

      • Added an API to validate FOTA image type before starting installation.

    • FTP client library:

      • Support subset of RFC959 FTP commands only.

      • Added support of STOU and APPE (besides STOR) for “put”.

      • Added detection of socket errors, report with proprietary reply message.

      • Increased FTP payload size from NET_IPV4_MTU(576) to MSS as defined on modem side (708).

      • Added polling “226 Transfer complete” after data channel TX/RX, with a configurable timeout of 60 seconds.

      • Ignored the reply code of “UTF8 ON” command as some FTP servers return abnormal replies.

    • AT parameters library:

      • Added function at_params_int64_get() that allows for getting AT param list entries containing signed 64-bit integers.

    • LTE link controller library:

      • Added support for %XT3412 AT command notifications, which allows the application to get prewarnings before Tracking Area Updates.

      • Added support for neighbor cell measurements.

      • Added support for %XMODEMSLEEP AT command notifications, which allows the application to get notifications related to modem sleep.

      • Added support for %CONEVAL AT command that can be used to evaluate the LTE radio signal state in a cell prior to data transmission.

    • nRF9160: Serial LTE modem application:

      • Fixed TCP/UDP port range issue (0~65535).

      • Added AT#XSLEEP=2 to power off UART interface.

      • Added support for the verbose, uput, mput commands and data mode to the FTP service.

      • Added URC (unsolicited response code) to the FOTA service.

      • Enabled all SLM services by default.

      • Updated the HTTP client service code to handle chunked HTTP responses.

      • Added data mode to the MQTT Publish service to support JSON-type payload.

      • Added SMS support, to send/receive SMS in plain text.

    • AT command parser library:

      • Added support for parsing parameters of type unsigned int or unsigned short.

    • Secure Partition Manager (SPM) library:

      • Added support for the nRF9160 pulse-density modulation (PDM) and inter-IC sound (I2S) peripherals in non-secure applications.

      • Fixed an issue where SPM and the application could have incompatible FPU configurations, resulting in a HardFault. Now, the application is free to use FPU regardless of SPM configuration.

    • GPS driver:

      • Renamed gps_agps_request() to gps_agps_request_send().

    • nRF9160: GNSS sample:

      • Added optional P-GPS support.

      • Added overlay-pgps.conf to enable P-GPS support.

      • Added overlay-agps-pgps.conf to enable A-GPS and P-GPS support.

    • nRF9160: AWS FOTA sample:

      • Removed nRF Cloud support code, because fota_v1 is no longer supported in nRF Cloud.

      • Removed provisioning using Modem key management and certificates.h, because this is not the recommended way of provisioning private certificates.

      • Renamed the following Kconfig options:

        • CONFIG_CLOUD_CERT_SEC_TAG renamed to CONFIG_CERT_SEC_TAG.

        • CONFIG_USE_CLOUD_CLIENT_ID renamed to CONFIG_USE_CUSTOM_CLIENT_ID.

        • CONFIG_CLOUD_CLIENT_ID renamed to CONFIG_CLIENT_ID.

        • CONFIG_NRF_CLOUD_CLIENT_ID_PREFIX renamed to CONFIG_CLIENT_ID_PREFIX.

    • AWS FOTA library:

      • Updated internal state handling and fault tolerance.

    • SMS subscriber library:

      • Updated to enable sending of SMS and decoding of received SMS payload.

    • LwM2M carrier library:

      • Updated to v0.20.1. See Changelog for details.

nRF5

Bluetooth LE

Bluetooth mesh

  • Added:

    • Support for vendor-specific mesh model Silvair EnOcean Proxy Server.

    • A new API function bt_mesh_rpl_pending_store to manually store pending RPL entries in the persistent storage without waiting for the timeout.

    • A bt_mesh_scene_entry::recall_complete callback that is called for each model that has a scene entry when recalling a scene data is done.

  • Updated:

    • Updated the Light xyL Server model to publish its state values that were loaded from flash after powering up.

    • Replaced the linked list of scene entries in the model contexts, with a lookup in ROM-allocated scene entries.

    • Updated so the transition pointer can be NULL, if no transition time parameters are provided in APIs.

    • Renamed Kconfig option CONFIG_BT_MESH_LIGHT_CTRL_STORE_TIMEOUT to CONFIG_BT_MESH_MODEL_SRV_STORE_TIMEOUT, and default value is set to 0.

    • Updated the Light Lightness Control Server model with a timer, allowing it to resume operation after a certain delay.

    • Updated the proportional-integral (PI) feedback regulator to use instant transition time to relieve the application from overhead.

    • Fixed an issue where an undefined state for some sensor properties is a valid state, and should be handled without giving errors.

    • Fixed an issue with storing and recalling the Light OnOff state in Light Lightness Control Server.

    • Fixed an issue where Light Lightness Server publishes twice if extended by two models.

    • Updated Light Hue Server and Light Saturation Server to store their states upon a change.

    • Fixed an issue where Light Hue Server and Light Saturation Server did not erase model data on reset.

    • Fixed an issue where Scene Server called scene recall at startup.

    • Fixed an issue by publishing a new value during scene recall in Generic OnOff Server and Generic Level Server.

    • Fixed issues where extended models stored or recalled instead of the extending model.

    • Updated the extending models by adding the extension API by default through Kconfig.

    • Forced the extension of Light Lightness Server to be initialized before Light Lightness Control Server.

    • Fixed an issue where Light Lightness Control Server should disable control when the lightness is set by receiving a message.

    • Added persistent storage to the Scheduler models to restore previously configured entries on power-up.

    • Fixed an issue where CTL temperature bindings should use rounding operation for division in the binding formula.

    • Samples are using CONFIG_NVS instead of CONFIG_FCB as the default storage backend.

    • Fixed an issue in Light Lightness Control Server by always setting the transition time to a Fade Standby Manual state time when a Light Off event is received.

    • Fixed an issue by reporting maximum remaining time for all components for CTL state transition time when GET is processed.

    • Fixed an issue where a deleted Scene Server did not delete all its pages from the file system.

    • Fixed an issue where Sensor Threshold was trimmed and an invalid value was calculated.

    • Updated Scheduler Server to no longer extend Scene Server, but they must be present on the same element.

    • Moved the configuration settings for acknowledged messages into Kconfig to make them public.

    • Fixed an issue where an Occupancy On event did not transition to a Fade On state even if Occupancy Mode is disabled.

    • Added a flag to Generic OnOff Server to skip Default Transition Time on Generic OnOff Set (Unack) messages.

    • Fixed an issue by correcting the bindings between the Generic OnOff state and the Light OnOff state.

    • Fixed an issue by clearing the internal sum in the proportional-integral (PI) feedback regulator when entering the OFF state of the state machine.

    • Fixed an issue where Light Lightness Server could accidentally disable Light Lightness Control Server before it was started.

    • Fixed an issue by publishing the Light Lightness Status message on startup even if the OnPowerUp state is OFF.

    • Fixed issues by publishing the Light OnOff Status when disabling and restoring the Light LC state.

    • Fixed an issue where temperature and range should be within a valid default range for the Light CTL Temperature Server.

    • Removed sensor type BT_MESH_SENSOR_DELTA_DISABLED as it is removed from specification.

    • Replaced struct bt_mesh_model_ack_ctx with struct bt_mesh_msg_ack_ctx from Message.

Matter (Project CHIP)

  • Project CHIP has been officially renamed to Matter.

  • Added:

  • Updated:

    • Renamed occurrences of Project CHIP to Matter.

    • Updated the Matter fork in the nRF Connect SDK to the revision mentioned in the Matter (Project CHIP) submodule section below.

Thread

  • Added support for the following Thread 1.2 features:

    • Domain Unicast Addresses

    • Multicast Listener Registration

    • Backbone Router (Thread Network side only)

    • Link Metrics

    • Coordinated Sampled Listening (CSL)

    Link Metrics and CSL are supported for the nRF52 Series devices.

  • NCP sample renamed to Co-processor, with added support for the Radio co-processor (RCP) architecture.

Zigbee

In this release, Zigbee is supported for development and should not be used for production. nRF Connect SDK v1.5.1 contains the certified Zigbee solution supported for production.

nRF Desktop

  • Fixed issues with boot reports on the USB backend.

  • Adapted the application to use common modules from the Common Application Framework library.

  • Fixed minor bugs.

Common

The following changes are relevant for all device families.

Trusted Firmware-M

  • Added support for hardware-accelerated cryptography in TF-M using the Nordic Security module (nrf_security). When enabled (default), any calls to psa_crypto APIs will utilize the CryptoCell hardware on nRF9160 and nRF5340.

  • Added support for using hardware unique keys (HUKs) for key derivation (TFM_CRYPTO_ALG_HUK_DERIVATION). TF-M automatically generates and stores random hardware unique keys (if not present), using the Hardware unique key library.

  • TFM_MINIMAL: Added a size-optimized configuration of TF-M which provides a minimal set of features:

    • This configuration requires 32 KB of flash and provides random number generation, SHA-256, and the platform memory read service, which is analogous to the feature set of Secure Partition Manager.

    • The configuration is showcased in the TF-M Hello World sample.

  • The TF-M protected storage service is now using non-static labels when deriving encryption keys. The derivation labels are generated by combining the client ID of the requesting service and the UID of the resource.

  • The TF-M protected storage on nRF9160 is now configured to use AES CCM to perform authenticated encryption and decryption.

  • You can now run PSA tests (psa-arch-tests) and TF-M regression tests in the nRF Connect SDK. The tests can be found as samples in zephyr/samples/tfm_integration.

Crypto

  • Cryptography samples:

    • Added samples showcasing the usage of the Platform Security Architecture (PSA) Crypto APIs. The samples perform various cryptographic operations such as encryption/decryption using symmetric and asymmetric ciphers, key exchange, hashing, and random number generation. Both TF-M enabled targets and secure-only targets are supported.

  • Hardware unique key library:

    • New library for managing and using hardware unique keys (HUKs), building on the APIs in nrf_cc3xx_platform. HUKs are secret keys that are kept hidden from the application code, but which can be used by the application for deriving keys for other purposes, such as encrypting data for storing.

Edge Impulse

  • Added the nRF Machine Learning application that integrates the Edge Impulse wrapper library with sensor sampling.

  • Sample reference to a public pre-trained model.

Pelion

  • Added the integration of Pelion Device Management library, available as one of the external submodule repositories in the nRF Connect SDK. For more information, see Using Pelion with the nRF Connect SDK.

  • Added the nRF Pelion Client application that showcases the usage of Pelion Device Management library.

Common Application Framework (CAF)

Hardware flash write protection

  • Fixed an issue where Hardware flash write protection did not properly add protection on devices with the ACL peripheral, if multiple boot stages were using the flash write protection.

sdk-nrfxlib

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

Modem library
  • Updated Modem library to version 1.2.1. See the Changelog for detailed information.

  • Added a new function-based GNSS API with support for new GNSS features in modem firmware v1.3.0. See GNSS interface for more information.

    • GNSS socket API is now deprecated.

  • PDN socket API is deprecated. The functionality has been replaced by the PDN library.

Crypto
  • nrf_security:

    • Added functionality to configure and enable crypto hardware acceleration as part of the TF-M build.

    • Added configurations to enable PSA Crypto APIs in non-TF-M builds.

    • psa_eits: added a library to provide ITS APIs for using the Zephyr settings subsystem for non-volatile storage of key material. This library is development quality and the storage format is likely to change without backwards compatibility.

  • nrf_cc3xx_platform/nrf_cc3xx_mbedcrypto:

    • Added low-level APIs for managing and using hardware unique keys located in the KMU peripheral, or flash + K_DR, when no KMU is available.

    • Added platform APIs for hmac_drbg.

    • Updated the used Mbed TLS version to 2.26.0 to align with upstream TF-M.

    • For full information, see Changelog - nrf_cc3xx_platform and Changelog - nrf_cc3xx_mbedcrypto.

nRF IEEE 802.15.4 radio driver
  • Added production support for nRF5340 in multiprotocol configuration (IEEE 802.15.4 and Bluetooth Peripheral Role).

MCUboot

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

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

The following list summarizes the most important changes inherited from upstream MCUboot:

  • Added support for indicating serial recovery through LED.

  • Made the debounce delay of the serial detect pin state configurable.

  • Added support for Mbed TLS ECDSA for signatures.

  • Added an option to use GPIO PIN to enter to USB DFU class recovery.

  • Added an optional check that prevents attempting to boot an image built for a different ROM address than the slot it currently resides in. The check is enabled if the image was signed with the IMAGE_F_ROM_FIXED flag.

nrfx

See the Changelog for nrfx 2.5.0 for detailed information.

Mcumgr

The mcumgr library contains all commits from the upstream mcumgr repository up to and including snapshot 5c5055f5a.

The following list summarizes the most important changes inherited from upstream mcumgr:

  • Fixed an issue with the file system management failing to open files due to missing initializations of fs_file_t structures.

  • Fixed an issue where multiple SMP commands sent one after the other would corrupt CBOR payload.

  • Fixed a problem where mcumgr over shell would stall and wait for retransmissions of frames.

Zephyr

The Zephyr fork in nRF Connect SDK (sdk-zephyr) contains all commits from the upstream Zephyr repository up to and including 730acbd6ed (v2.6.0-rc1), plus some nRF Connect SDK specific additions.

For a complete list of upstream Zephyr 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 v2.6.0-rc1 ^v2.4.99-ncs1

For a complete list of nRF Connect SDK specific commits, run:

git log --oneline manifest-rev ^v2.6.0-rc1

The current nRF Connect SDK release is based on Zephyr v2.6.0-rc1. See the Zephyr 2.6.0 Release Notes for an overview of the most important changes inherited from upstream Zephyr.

Zephyr Workqueue API Migration

nRF Connect SDK v1.6.0 includes changes to the Zephyr Workqueue API introduced as part of Zephyr pull request #29618. This pull request deprecates part of the current Workqueue API, and introduces new APIs to cover the same usage scenarios. The new API fixes issues discussed in Zephyr issue #27356.

nRF Connect SDK code has been migrated for these changes and it is recommended that all applications migrate to the new k_work API when upgrading to nRF Connect SDK v1.6.0. All of the deprecated APIs have a corresponding new API that can be used as a drop-in replacement, except k_delayed_work_submit_for_queue() and k_delayed_work_submit(). These functions have both been split into two functions to cover two different usage scenarios:

Replacing the deprecated APIs with their new counterparts will fix most of the internal issues observed in the old Workqueue implementation. However, to avoid the most common pitfalls, you should also make sure they follow the Workqueue best practices, documented under the “Workqueue Best Practices” section of Workqueue Threads.

The following is a full list of the deprecated Workqueue APIs in nRF Connect SDK v1.6.0 and their respective replacements:

k_work API replacements

Deprecated API

Corresponding new API

k_work_pending()

k_work_is_pending()

k_work_q_start()

k_work_queue_start()

k_delayed_work()

k_work_delayable()

k_delayed_work_init()

k_work_init_delayable()

k_delayed_work_submit_to_queue()

k_work_schedule_for_queue() or k_work_reschedule_for_queue()

k_delayed_work_submit()

k_work_schedule() or k_work_reschedule()

k_delayed_work_pending()

k_work_delayable_is_pending()

k_delayed_work_cancel()

k_work_cancel_delayable()

k_delayed_work_remaining_get()

k_work_delayable_remaining_get()

k_delayed_work_expires_ticks()

k_work_delayable_expires_get()

k_delayed_work_remaining_ticks()

k_work_delayable_remaining_get()

K_DELAYED_WORK_DEFINE

K_WORK_DELAYABLE_DEFINE

For more information about the new Workqueue API, refer to Workqueue Threads.

Matter (Project CHIP)

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

The following list summarizes the most important changes inherited from the upstream Matter:

  • Added:

    • Completed the persistent storage feature, which allows Matter devices to successfully communicate with each other even after reboot.

    • Added support for OpenThread’s Service Registration Protocol (SRP) to enable the discovery of Matter nodes using the DNS-SD protocol.

    • Added support for Network Commissioning Cluster, used when provisioning a Matter node.

    • Enabled Message Reliability Protocol (MRP) for the User Datagram Protocol (UDP) traffic within a Matter network.

    • Added support for Operational Credentials Cluster, used to equip a Matter node with an operational certificate.

Documentation

In addition to documentation related to the changes listed above, the following documentation has been updated:

Applications and samples

Libraries and drivers

nrfxlib