nRF Connect SDK v1.8.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. Wireless protocol stacks and libraries may be experimental if they are under development or based on verification and certification status. Labels in Kconfig indicate experimental configurations and can generate warnings in build output if they are used in a project. These configurations should not be used in production. See the release notes and documentation for those protocols and libraries for further information.

Highlights

  • The Bluetooth Low Energy Remote Procedure Call library now has full API support to interface the Bluetooth® LE Host on another CPU core.

  • The Bluetooth: Central and Peripheral HRS sample has been added to demonstrate how to use Bluetooth® with Central and Peripheral roles concurrently.

  • The Modem library for nRF9160 has been updated to version 1.4.1 with improvements and support for Modem version 1.3.1.

  • Wi-Fi coexistence with Bluetooth LE and LTE coexistence with Bluetooth LE have been added for the nRF52 family.

  • Experimental configuration labels in Kconfig now generate warnings when experimental configurations are used. For more information, check the Experimental features section on the Application Development page in the Zephyr documentation.

  • Energy consumption of Matter over Thread devices that are using Thread’s Sleepy End Device role has beed improved.

  • Apple HomeKit ADK v6.1 has been integrated and support for nRF5340 for Bluetooth LE and Thread HomeKit accessories has been added.

  • Support for the Gazell protocol has been added for the nRF52 family, with related libraries and samples.

  • The Common Application Framework preview sample has been added to demonstrate how to use CAF components to build event-based applications and interface with some simple IO like LEDs and Buttons.

Release tag

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

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

Changelog

The following sections provide detailed lists of changes by component.

Application development

  • Integrated Partition Manager with the new build type configuration scheme and updated several applications accordingly. The new scheme infers the build type from CONF_FILE instead of using the CMake variable CMAKE_BUILD_TYPE. See Configuring build types for details.

  • Build system:

    • Added an option to control the inclusion of RPMsg samples on the nRF53 network core NCS_INCLUDE_RPMSG_CHILD_IMAGE.

    • Updated generation of the manifest.json file in the dfu_application.zip and dfu_mcuboot.zip files to include nrf and zephyr revisions reported by the new build file zephyr.meta.

    • Build warnings are now printed when experimental features are enabled (NCSDK-6336). Warnings can be disabled by disabling CONFIG_WARN_EXPERIMENTAL

    • Fixed the NCSIDB-581 bug where application signing and file conversion for Device Firmware Update (DFU) could fail in SEGGER Embedded Studio during a build.

Protocols

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

Bluetooth LE Controller

These changes are valid for SoftDevice Controller.

  • Added:

    • Experimental support for Periodic Advertising.

    • Production support for a 3-wire Packet Traffic Arbitration (PTA) interface for external radio coexistence on the nRF52 Series. This interface is typically implemented in the Wi-Fi products.

    • Experimental support for a 1-wire PTA interface for external radio coexistence for the nRF52 Series. This interface is specific to Nordic Semiconductor’s nRF91 Series. See Bluetooth External Radio Coexistence for more information.

    • Support for the Simple GPIO Front-End Module implementation on the nRF53 Series.

Bluetooth mesh

  • Updated several samples and libraries. For details, see Bluetooth mesh samples and Bluetooth libraries, respectively.

Matter

Zigbee

  • Updated ZBOSS Zigbee stack to version v3.9.0.1+v4.1.0. See the Changelog in the nrfxlib documentation for detailed information.

  • Added new version of the ZBOSS NCP Host (v2.0.0).

  • Added Zigbee quick start guide.

  • Removed experimental support for Green Power Combo Basic functionality.

  • Changed the default logging level in Zigbee applications to INF from Zephyr’s Logging default level, which is set to ERR by default.

Gazell

HomeKit

  • Added:

    • Production support for nRF5340 for Thread and Bluetooth LE HomeKit accessories.

    • Production support for the nRF21540 front-end module combined with nRF53 Series SoCs.

    • Development support for Weather Station application on Thingy:53 for HAP over Bluetooth LE.

    • Using LED for indicating the state of Thread connectivity.

  • Updated:

    • Modified the structure of folders for examples and applications.

    • ADK version has been updated to ADK 6.1.

  • Bug fixes:

    • Fixed a stability issue in the Stateless Programmable Switch application.

    • Fixed memory access issues.

    • Fixed an issue with setting advertising interval.

Applications

This section provides detailed lists of changes by application.

nRF9160: Asset Tracker v2

  • Added:

    • Content-type and encoding properties to outgoing Azure MQTT messages.

    • Support for A-GPS and P-GPS in Azure IoT Hub integration.

    • New overlay configuration files and split the prj.conf file to several files that now bind specific features. To build with a specific feature, such as P-GPS, Memfault or communications with AWS IoT, you need to include the respective overlay configuration in the build command. This is documented in Application description.

  • Updated:

    • Updated the application to start sending batch messages to the new bulk endpoint topic supported in nRF Cloud.

    • Updated the application to use nRF Cloud A-GPS directly without the A-GPS library. SUPL is no longer supported.

    • Updated the application to start sending neighbor cell measurement data to nRF Cloud.

    • Updated the application to start sending neighbor cell measurement data to Azure IoT Hub.

nrf9160: Asset Tracker

  • Added timestamps to environment sensor data when compiled with CONFIG_USE_BME680_BSEC

  • Updated the application to clear the ephemeris and almanac flags from an A-GPS request when P-GPS is enabled.

nRF Machine Learning (Edge Impulse)

nRF Desktop

  • Added:

  • Removed:

    • Removed configuration files used for building the application with CONFIG_BT_LL_SW_SPLIT for various boards. The configuration files for boards that do not have room for the SoftDevice LL in flash or SRAM remain untouched.

  • Updated:

    • Updated to use DTS overlays instead of Kconfig configuration files for setting up external flash memory.

    • Updated information about custom build types.

    • The application switched to using the configuration file scheme based on prj.conf files. See Configuring build types for details.

    • Updated documentation for USB state module.

    • Updated documentation for Configuration channel and added more detailed protocol description.

    • Updated Configuration channel to respond with the disconnected status to explicitly inform the host tools that the given HID instance cannot be used to configure device.

    • Updated documentation with information about forwarding boot reports. See the documenation page of nRF Desktop’s HID forward module for details.

  • Bug fixes:

    • Fixed an issue that was causing the HID keyboard LEDs to remain turned on after host disconnection while no other hosts were connected.

    • Fixed an issue that was causing an assertion failure in the HID state module on the nRF Desktop peripheral device during the boot of the host device connected through USB.

nRF Pelion Client

  • Updated:

    • Updated to use DTS overlays instead of Kconfig configuration files for setting up external flash memory.

    • The application switched to using the configuration file scheme based on prj.conf files. See Configuring build types for details.

Thingy:53: Matter weather station

  • Added:

    • Support for the Power Source cluster, used to expose information about the battery.

    • Support for the Identify cluster, which uses the built-in buzzer to help find the device.

  • Updated:

    • Updated to use DTS overlays instead of Kconfig configuration files for setting up external flash memory.

    • The application switched to using the configuration file scheme based on prj.conf files. See Configuring build types for details.

nRF Machine Learning

  • Updated:

    • Updated to use DTS overlays instead of Kconfig configuration files for setting up external flash memory.

nRF9160: Serial LTE modem

  • Updated the #XFOTA command to accept an integer parameter to specify the PDN ID to be used for the download, instead of the APN name.

  • Added new AT commands related to the General Purpose Input/Output (GPIO).

  • Added the #XUUID command to read out the device UUID from the modem.

  • Added to the XNRFCLOUD command the following features:

    • The possibility to send to and receive from nRF Cloud JSON messages in data mode.

    • The ability to read out the sec_tag and the UUID of the device.

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

Gazell samples

HomeKit samples

  • Added samples are using Apple HomeKit ADK v6.1.

  • Updated the role of buttons in all samples due to the ADK update:

    • Button 1 - Clear pairing

    • Button 2 - Factory reset

    • Button 3 - Enter pairing mode

    • Button 4 - Application action

Matter samples

  • Added a table that lists variants and extensions available out of the box for each Matter sample on the Matter samples page.

  • Matter: Door lock:

    • Added multi-image Device Firmware Upgrade over Bluetooth LE support for the nRF5340 DK.

    • Added low-power build support.

  • Matter: Light bulb:

    • Added multi-image Device Firmware Upgrade over Bluetooth LE support for the nRF5340 DK.

NFC samples

nRF9160 samples

  • Added:

  • nRF9160: HTTPS Client sample:

    • Added a possibility to use TF-M and Zephyr Mbed TLS instead of using the offloaded TLS stack in modem.

  • nRF9160: LwM2M Client sample:

    • Added support for Thingy:91.

    • Added more LwM2M objects.

    • LwM2M sensor objects now use the actual sensors available to the Thingy:91. If the nRF9160 DK is used, the object uses simulated sensors instead.

    • Added support for polling sensors and notifying the server if the measured changes are large enough.

    • Added support for full modem firmware update.

    • Increased the NB-IoT time (in seconds) before the registration timeout when the LwM2M Registration Update message is sent by the engine.

  • nRF9160: Multicell location sample:

    • Modified to use runtime location service selection instead of compile-time configurations.

  • nRF9160: Modem Shell sample:

    • Added a new shell command rest for sending simple REST requests and receiving responses to them.

    • Added a new shell command location for using the Location library to retrieve device’s location with different methods.

    • Updated the sample to use DTS overlays instead of Kconfig configuration files for setting up external flash memory.

    • Added support for nRF Cloud A-GPS and P-GPS. A-GPS support is enabled by default.

    • Added PPP-related updates:

      • Added IPv6 support.

      • Added LTE link MTU to be informed to PC.

      • Improved autostart of PPP.

      • Made changes for better performance.

  • nRF9160: GNSS sample:

    • Added support for periodic fixes.

    • Added support for power saving.

    • Added support for low accuracy fixes.

    • Renamed. The previous name was “nRF9160: GPS with SUPL client library”.

    • Added support for nRF Cloud A-GPS and P-GPS.

    • LTE now remains connected to the network all the time when assistance is enabled. With A-GPS, the sample can be configured to connect to network only when needed.

  • nRF9160: A-GPS sample:

    • The sample has been removed. nRF Cloud A-GPS and P-GPS are demonstrated in the nRF9160: GNSS sample.

OpenThread samples

  • Added:

    • Support for nrf5340dk_nrf5340_cpuapp_ns build target for nRF5340 DK. This allows to build the OpenThread samples with Trusted Firmware-M and the PSA crypto API support. This platform is experimental, so OpenThread pre-built libraries are not generated for it.

Zigbee samples

Other samples

  • Added the Hardware unique key sample.

  • Added the Common Application Framework preview sample.

  • nRF Secure Immutable Bootloader sample:

    • Improved how hardware unique keys are handled.

      • Introduced CONFIG_HW_UNIQUE_KEY_LOAD with fewer dependencies than CONFIG_HW_UNIQUE_KEY solely for loading the key.

      • The bootloader now allows a single boot with no key present, to allow the app to write a key. After the first boot, the key must be present or the bootloader won’t boot the app.

    • Bug fixes:

      • Fixed the NCSDK-10209 issue with alignment errors caused by changes in the size of partitions. The nRF Secure Immutable Bootloader and MCUboot have been made more robust against such errors.

  • Radio test sample:

    • Clarified units for numerical parameters in shell commands.

Drivers

This section provides detailed lists of changes by driver.

Libraries

This section provides detailed lists of changes by library.

Bluetooth libraries and services

Common Application Framework (CAF)

Gazell libraries

Modem libraries

  • Added the following libraries:

  • LTE link controller library:

    • Changed the value of an invalid E-UTRAN cell ID from zero to UINT32_MAX for the LTE_LC_EVT_NEIGHBOR_CELL_MEAS event.

    • Added support for multiple LTE event handlers. Thus, deregistration is not possible by using lte_lc_register_handler(NULL) anymore and it is done by the lte_lc_deregister_handler() function in the API.

    • Added neighbor cell measurement search type parameter in lte_lc_neighbor_cell_measurement().

    • Added timing advance measurement time to current cell data in LTE_LC_EVT_NEIGHBOR_CELL_MEAS event.

    • Updated the library to use the AT interface API and the AT monitor library for AT commands.

    • Added support for periodic search configuration. API functions have been added to set, read and clear the configuration, and to request extra searches.

  • Modem library integration layer library:

    • Added a possibility to create native sockets when nRF91 socket offloading is enabled.

  • PDN library:

    • Added an optional family parameter to pdn_activate(), which is used to report when the IP family of a PDN changes after activation.

    • Aligned the return values of pdn_init() to return negative errnos on error.

    • Added logging on modem errors.

    • Changed the return values on modem errors to -ENOEXEC to avoid conflicts with return of other positive values.

  • A-GPS library:

    • The A-GPS library has been deprecated in favor of using the nRF Cloud A-GPS library directly.

Libraries for networking

  • LwM2M client utils library:

    • Added support for Firmware Update object to use FOTA download library for downloading firmware images.

    • Added support for full modem firmware update.

  • Multicell location library:

    • Updated to only request neighbor cell measurements when connected and to only copy neighbor cell measurements if they exist.

    • Added support for Polte location service.

    • Removed device ID from the multicell_location_get() parameter list. nRF Cloud and HERE did not use it Skyhook will now set modem UUID as its device ID.

    • Selection of location service changed from compile-time to runtime configuration.

    • Added support for MQTT transport for nRF Cloud service.

  • nRF Cloud library:

    • Removed the CONFIG_NRF_CLOUD Kconfig option.

    • Removed GNSS socket API support from A-GPS and P-GPS.

    • Added support for sending data to a new bulk endpoint topic that is supported in nRF Cloud. A message published to the bulk topic is typically a combination of multiple messages.

    • Changed REST API for A-GPS to use GNSS interface structure instead of GPS driver structure. Also changed from GPS driver GPS_AGPS_ request types to NRF_CLOUD_AGPS_ request types.

    • Added function nrf_cloud_jwt_generate() that generates a JWT using the library’s configured values.

    • Added handling of MQTT ping failures and MQTT input failures.

    • Updated the nrf_cloud_configured_client_id_get() function to use nrf_modem_at_cmd() instead of the deprecated at_cmd_write().

    • Added state checks to functions nrf_cloud_agps_request(), nrf_cloud_cell_pos_request(), nrf_cloud_pgps_request(), and json_send_to_cloud(). These functions should be called only after the device has connected to the nRF Cloud d2c topic.

  • nRF Cloud A-GPS library:

    • Removed GNSS socket API support.

    • Updated to always request ephemerides and almanacs. The application is now responsible for clearing the flags if P-GPS is enabled.

  • nRF Cloud P-GPS library:

  • nRF Cloud REST library:

  • REST client library:

    • Added REST client library for sending REST requests and receiving their responses.

  • AWS IoT library:

    • Added handling of MQTT ping failures and MQTT input failures.

  • Azure IoT Hub library:

    • Added handling of MQTT ping failures and MQTT input failures.

    • Updated the API version used in MQTT connection to Azure IoT Hub to 2020-09-30.

    • Added the azure_iot_hub_dps_reset() function for resetting the DPS information.

    • Added a note about the credentials and their location.

  • Download client library:

    • Removed the apn field in the download_client_cfg configuration structure.

  • FOTA download library:

  • nRF Cloud cellular positioning library:

    • Added callback parameter to nrf_cloud_cell_pos_request() to handle response data from the cloud.

  • LwM2M carrier library:

    • Updated to v0.21.0. See the Changelog for detailed information.

Libraries for NFC

Trusted Firmware-M libraries

  • Added support for non-secure storage. This feature enables non-secure applications to use the Zephyr Settings API to save and load persistent data.

Other libraries

  • New libraries:

  • Application Event Manager library:

    • Added a weak function to allow overriding the allocation in Event Manager.

    • Increased the number of supported Event Manager events.

    • Moved the Event Manager features responsible for profiling events into the Application Event Manager profiler tracer module.

    • Added a sample showing the use of the profiler for Event Manager events.

  • Edge Impulse wrapper library:

    • Expanded API to provide information about input data sampling frequency, every label used by the machine learning model, and results associated with every label.

    • Removed FPU dependency. The FPU is implied to speed up calculations.

  • Hardware flash write protection library:

    • Added a new function fprotect_is_protected() for devices with the ACL peripheral.

  • Hardware unique key library:

    • Made the checking for hw_unique_key_write_random() more strict. This change will trigger panic if any key is unwritten after writing random keys.

    • Refactored the HUK_HAS_* macros to be defined or undefined instead of 1 or 0.

    • Added a new sample Hardware unique key showing how to use a hardware unique key to derive an encryption key. The sample can be run with or without TF-M.

    • Fixed hw_unique_key_is_written() which would previously trigger a fault under certain circumstances.

  • Profiler library:

    • Updated Python scripts to use multiple processes that communicate over pipes.

    • Increased the number of supported profiler events.

    • Added a special profiler event for indicating a situation where the profiler’s data buffer has overflowed and some events have been dropped, which causes the device to stop sending events.

  • Secure Partition Manager (SPM):

    • Fixed the NCSDK-5156 issue with the size calculation for the non-secure callable region, which prevented users from adding a large number of custom secure services.

    • All EGU peripherals, instead of just EGU1 and EGU2, are now configurable to be non-secure and are configured as non-secure by default.

    • Fixed a bug where the fp context could be overwritten by other threads if both threads are using Non-secure-callable functions (secure services).

  • Memfault:

    • Added PSM and eDRX configuration metrics that are collected when MEMFAULT_NCS_LTE_METRICS is enabled.

  • Date-Time library:

    • The library now stores the received date-time information as Zephyr and modem time. Also modem XTIME notifications are used as time source. Added the CONFIG_DATE_TIME_AUTO_UPDATE option to trigger a time update when device has connected to LTE.

Libraries for Zigbee

sdk-nrfxlib

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

Modem library
  • Updated:

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

    • nrf_errno values have been aligned with the errno values of newlibc C library.

    • The Modem API (nrf_modem.h) has been updated to return negative errno values on error.

    • The Full Modem DFU API (nrf_modem_full_dfu.h) has been updated to return negative errno values on error.

    • The GNSS API (nrf_modem_gnss.h) has been updated to return negative errno values on error.

  • Removed:

    • The GNSS socket has been removed.

    • The PDN socket has been removed.

Scripts

This section provides detailed lists of changes by script.

Partition Manager

  • Partition manager information is no longer appended to the rom_report target. To inspect the current partition manager configuration please use the partition_manager_report target.

  • Updated the share_size functionality to let a partition share size with a partition in another region.

  • Added a new directive, align_next, which controls the alignment of the next partition. See the Partition Manager documentation for more information.

DFU target

  • Fixed an issue where the offset to the last erased page was set incorrectly one page ahead whenever the flash write ended just after a page boundary.

MCUboot

The MCUboot fork in nRF Connect SDK (sdk-mcuboot) contains all commits from the upstream MCUboot repository up to and including 680ed07, plus 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:

  • Fixed support for Low Power in Zephyr’s single-thread mode. See MCUBOOT_CPU_IDLE() macro.

  • Switched USB CDC ACM serial recovery I/O device configuration from Kconfig to Devicetree with the compatible "zephyr,cdc-acm-uart" property.

  • Switched UART serial recovery I/O device configuration from Kconfig to Devicetree using Zephyr’s zephyr,console property of the chosen node.

  • Fixed a deadlock issue with cryptolib selectors in Kconfig.

  • Fixed an issue with the serial recovery skipping on nRF5340.

  • Added cleanup of UARTE devices before chainloading the application. This allows the application to initialize the devices correctly and fixes potential missing output of the application’s log.

Mcumgr

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

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

  • No changes for this release.

Zephyr

The Zephyr fork in nRF Connect SDK (sdk-zephyr) contains all commits from the upstream Zephyr repository up to and including 3f82656, 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 3f82656 ^v2.6.0-rc1-ncs1

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

git log --oneline manifest-rev ^3f82656

The current nRF Connect SDK main branch is based on the Zephyr v2.7 development branch.

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, bbd19d92f6d58ef79c98793fe0dfb2979db6336d.

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

  • Added:

    • Support for Administrator Commissioning Cluster, which allows enabling or disabling the commissioning window on a Matter device. This is required by the Matter multi-admin functionality.

    • Support for Power Source Cluster, which exposes information about the power source of a Matter device, including the battery level.

    • Initial support for Thread Sleepy End Devices.

Documentation

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