nRF Connect SDK v1.5.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
Introduced support for nRF5340 DK.
Added minimal configuration to Bluetooth: Peripheral UART sample for nRF52810 and nRF52811 SoCs.
All the models in Bluetooth Mesh Models v1.0.x are now supported for development.
Added experimental support for Trusted Firmware-M (TF-M) for nRF5340 and nRF9160.
Integrated Apple HomeKit ecosystem support into the nRF Connect SDK.
Integrated Project Connected Home over IP, which is supported for development.
Added production support for nRF5340 for Thread in single protocol configuration, and development support for Thread in multiprotocol operation with Bluetooth LE.
Added development support for nRF5340 for Zigbee, including multiprotocol operation with Bluetooth LE.
Added nRF9160: Asset Tracker v2 as an ultra-low-power, real-time configurable application.
Implemented major updates to Modem library (previously called BSD library).
Added support for full modem DFU for nRF9160, over-the-air (OTA) and via UART.
Introduced support for Edge Impulse machine learning models.
Release tag
The release tag for the nRF Connect SDK manifest repository (https://github.com/nrfconnect/sdk-nrf) is v1.5.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
This version of the nRF Connect SDK has been tested with the following modem firmware for cellular IoT applications:
mfw_nrf9160_1.2.3
mfw_nrf9160_1.1.4
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.
Changelog
The following sections provide detailed lists of changes by component.
nRF9160
Added:
nRF9160: Asset Tracker v2 application, which is a low-power asset tracking example for nRF9160 DK and Thingy:91.
nRF9160: Full modem firmware update using SMP Server sample, which shows how to add the full modem serial update functionality to an application using SMP Server.
nRF9160: HTTP full modem update sample, which demonstrates how to add full modem upgrade support to an application. Note that this requires an external flash memory of a minimum of 2 MB to work, hence the sample will only work on the nRF9160 DK v0.14.0 or later.
nRF9160: HTTP modem delta update sample, which demonstrates how to add delta modem upgrade support to an application.
Mcumgr based full modem update, which is a new library that implements parts of the mcumgr management protocol for doing full modem serial updates.
Updated:
nRF9160: Asset Tracker application - Updated to use the new FOTA (fota_v2) based on nRF Connect for Cloud.
nRF9160: Serial LTE modem application:
Fixed an issue where FOTA downloads were interrupted if an AT command was issued.
Fixed an issue with overflowing HTTP request buffers.
Fixed issues with TCP/UDP server restart.
Added support for allowing only specified TCP/TLS client IP addresses (using the #XTCPFILTER command).
Fixed the unsolicited result code (URC) message format following the 3GPP TS27.007 specification.
Fixed a bug that occurred when the size of an AT command was exactly the maximum buffer size.
Optimized SRAM usage.
Disabled external XTAL usage for UARTE by default.
Added a recovery mechanism for cases where a UART frame error happens.
Enhanced data mode support for TCP/UDP proxy.
nRF9160: LwM2M Client sample - Added handling of network failures. The sample now tries to reconnect to the LTE network when a failure is reported.
nRF9160: nRF CoAP Client sample - Updated the default server URL to
californium.eclipseprojects.io
.nRF9160: Simple MQTT sample - Updated the default server URL to
mqtt.eclipseprojects.io
.Extracted the certificate, button, and LED handling functionality from nRF9160: HTTP application update sample to
samples/nrf9160/http_update/common
, to share them with nRF9160: HTTP modem delta update sample.Moved the nRF9160: HTTP application update sample from
samples/nrf9160/http_application_update/
tosamples/nrf9160/http_update/application_update
.Download client library:
Reintroduced the optional TCP timeout (enabled by default) on the TCP socket that is used for the download. Upon timeout on a TCP socket, the HTTP download will fail and the
ETIMEDOUT
error will be returned via the callback handler.Added an option to set the hostname for TLS Server Name Indication (SNI) extension. This option is valid only when TLS is enabled.
Date-Time library :
Added an API to check if the Date-Time library has obtained a valid date-time. If the function returns false, it implies that the library has not yet obtained valid date-time to base its calculations and time conversions on, and hence other API calls that depend on the internal date-time will fail.
FOTA download library - Enabled SNI TLS extension for HTTPS downloads.
nRF Cloud library:
nRF Connect for Cloud FOTA replaced AWS Jobs as the FOTA mechanism for devices connected to nRF Connect for Cloud.
Removed
CONFIG_CLOUD_API
dependency fromCONFIG_NRF_CLOUD_CONNECTION_POLL_THREAD
.Added a new API
nrf_cloud_send()
that can be used for sending pre-encoded data to specified endpoint topics in nRF Connect for Cloud.
AT command parser library - The library can now parse AT command strings with negative numbers in the range supported by the int32_t type.
Azure IoT Hub library - Improved the internal connection state handling.
LTE link controller library - Added support for manufacturer-specific default eDRX/PSM values.
LwM2M carrier library - Updated to v0.10.2. See Changelog for details.
Removed:
USB-UART bridge sample
DFU target
Added:
New target
dfu_target_full_modem
, which is used for full modem firmware updates. This requires an external flash memory of a minimum of 2 MB to work.
Updated:
Renamed
dfu_target_modem
todfu_target_modem_delta
.Moved the
dfu_target
code fromsubsys/dfu
tosubsys/dfu/dfu_target
.Extracted the stream flash memory functionality from
dfu_target_mcuboot
todfu_target_stream_flash
to facilitate code reuse for otherdfu_targets
, which write large objects to the flash memory.
nRF5
The following changes are relevant for the nRF52 and nRF53 Series.
nRF52832 SoC
Updated:
Removed support for nRF52832 revision 1 workarounds in Enhanced ShockBurst for Errata 102, Errata 106, and Errata 107.
nRF5340 SoC
Added:
nRF5340: Multiprotocol RPMsg sample for network core, which enables support for multiprotocol, IEEE 802.15.4, and Bluetooth LE applications.
Updated:
Enhanced ShockBurst subsystem - Added support for nRF5340 (CPUNET) in the ESB subsystem.
Secure Partition Manager (SPM) subsystem - Added support for nRF5340 peripherals in non-secure applications.
Bluetooth samples - Added configuration overlays for child image to the required Bluetooth LE samples so that no Kconfig updates in the Bluetooth: HCI RPMsg sample are needed by default.
nRF5340: Empty firmware for application core sample - Disabled the kernel memory pool option
CONFIG_KERNEL_MEM_POOL
to reduce the memory footprint.bl_boot
library - Disabled clock interrupts before booting the application. This change fixes an issue where the nRF Secure Immutable Bootloader sample would not be able to boot a Zephyr application on the nRF5340 SoC.
Front-end module (FEM)
Added support for nRF21540 revision 1 or older to Bluetooth: Direct Test Mode and Radio test samples.
Added support for RF front-end Modules (FEM) in Multiprotocol Service Layer library. The front-end module feature in MPSL currently supports the SKY66112-11 device, but does not support nRF21540 revision 1 or older.
Bluetooth LE
Added:
Support for nRF21540 front-end module (revision 1 or older) to Bluetooth: Direct Test Mode sample.
Minimal configuration (
prj_minimal.conf
) to the Bluetooth: Peripheral UART sample, thus enabling support for building for nRF52810 and nRF52811 devices.GATT Current Time Service (CTS) Client service that is used to retrieve the current time from a connected peer that is running the GATT server with the Current Time Service.
Bluetooth: Peripheral CTS client sample that demonstrates how to use the GATT Current Time Service (CTS) Client.
Updated:
Bluetooth: Throughput sample:
Uses Zephyr’s Shell for setting up the test parameters.
Role selection can be done using buttons instead of UART.
Fixed the throughput calculation on the application level by removing the dependency from remote terminal speed (disabled UART flow control).
Bluetooth: Central HIDS sample - Restored numeric comparison pairing.
Project Connected Home over IP (Project CHIP)
Project CHIP is now supported for development as an nRF Connect SDK submodule for Windows, Linux, and macOS.
Added:
Matter protocol user guide
Project CHIP door lock sample
Project CHIP light switch sample
Project CHIP light bulb sample
Bluetooth Mesh
Added:
Time client model callbacks for all message types.
Support for the nRF52833 DK in the Bluetooth: Mesh light and Bluetooth: Mesh light switch samples.
Support for the following mesh models:
Scene Current/Target Scene Get API (Gets the current/target scene that the scene server is set to).
Sensor Client All Get API (Reads sensor data from all sensors on a server).
Generic Client Properties Get API (Gets the list of Generic Client Properties on the bound server).
Updated:
Light Lightness Server to disable the light control server when manual control has taken effect. This follows the Mesh Model Specification section 6.2.3.
Deleting a non-existing scene from the Scene Server returns success, instead of not found.
Removed the Light CTL setup server publications, which was not in use.
Disabled light control on all changes in lightness.
Added model reset callbacks so that the Mesh stack can be reset.
Implemented missing Light Linear Level Get/Set API functions.
Fixed several bugs.
Apple HomeKit Ecosystem support
Integrated HomeKit Accessory Development Kit (ADK) v5.1. MFi licensees can get access to the HomeKit repository by contacting us via Nordic DevZone private ticket.
Enabled Thread certification by inheritance.
HomeKit samples now use qualified Bluetooth LE libraries.
nRF IEEE 802.15.4 radio driver
Production support for nRF5340 in single protocol configuration.
Development support for nRF5340 in multiprotocol configuration (IEEE 802.15.4 and Bluetooth LE).
Added PA/LNA GPIO interface support for RF front-end modules (FEM) in the radio driver. The front-end module feature in the radio driver currently has support for the SKY66112-11 device, but does not support nRF21540 revision 1 or older.
Thread
Added:
Production support for nRF5340 in single protocol configuration.
Development support for nRF5340 in multiprotocol configuration (Thread and Bluetooth LE).
Support for nRF5340 for all samples except the Thread: Co-processor sample.
PA/LNA GPIO interface support for RF front-end modules (FEM) in Thread. The front-end module feature in Thread currently has support for SKY66112-11 device, but does not support nRF21540 revision 1 or older.
Updated:
Optimized ROM and RAM used by Thread samples.
Disabled Hardware Flow Control on the serial port in Thread: CoAP Client and Thread: CoAP Server samples.
Thread 1.1 pre-built libraries:
Included the latest OpenThread changes.
Added libraries for nRF5340 platform.
Libraries will be certified after the release in multiple feature variants (certification IDs and status can be found in the compatibility matrices in the Nordic Semiconductor Infocenter).
Zigbee
Added:
Development support for NCP (Network Co-Processor).
Development support for the nRF5340 DK in single and multi-protocol (Zigbee and Bluetooth LE) configuration for the Zigbee: Light switch, Zigbee: Light bulb, and Zigbee: Network coordinator samples.
PA/LNA GPIO interface support for RF front-end modules (FEM) in Zigbee. The front-end module feature in Zigbee currently has support for SKY66112-11 device, but does not support nRF21540 revision 1 or older.
Zigbee: NCP sample, which is a Network Co-Processor example for nRF52840 (DK and dongle) and nRF52833 DK.
Supports USB and UART transports.
Enables USB DFU when USB transport is used.
New
zcl ping
command in the Zigbee shell library.New libraries that were extracted from common code under
subsys/zigbee/common
:Zigbee application utilities library
Zigbee endpoint logger library
Updated:
ZBOSS Zigbee stack to version 3_3_0_6+11_30_2020. See ZBOSS library configuration for detailed information.
Added development (unstable) ZBOSS Zigbee stack libraries (v3.5.0.0). See ZBOSS library configuration for detailed information.
nRF Desktop
Added selective HID report subscription in the USB state. This allows the USB HID instance on the peripheral to subscribe only for a subset of HID reports. If USB does not subscribe for the given HID report, Bluetooth LE HIDs can still receive it.
Common
The following changes are relevant for all device families.
Edge Impulse
Added Edge Impulse wrapper library that runs the machine learning model.
Added Edge Impulse: Wrapper sample that demonstrates the functionality of Edge Impulse wrapper.
Added Edge Impulse: Data forwarder sample that demonstrates the usage of Edge Impulse’s data forwarder to provide sensor data to Edge Impulse studio when Using Edge Impulse with the nRF Connect SDK respectively.
Trusted Firmware-M
Added a simple sample TF-M Hello World that demonstrates how to integrate TF-M in an application.
Enabled the use of platform code that resides outside of the Trusted Firmware-M repository. This allows configurable memory partitioning in the nRF Connect SDK.
Added support for running the nRF9160: Download client sample with TF-M.
Partition Manager
Changed the naming convention for partition names in
pm.yml
andpm_static.yml
.Updated Partition Manager to prevent users from using partition names in
pm.yml
andpm_static.yml
that match the names of the child images that define them inCMakeLists.txt
:If the invalid naming scheme is used in
pm.yml
files, Partition Manager will now fail the builds.If the invalid naming scheme is used in
pm_static.yml
files, the build will instead print a warning prompting the user to change this, if possible.
Renamed
b0
andb0n
container partitions tob0_container
andb0n_container
, respectively.Renamed
b0_image
andb0n_image
image partitions to appropriately match their child image name,b0
andb0n
, respectively.Migration notes: While in development, you should rename partitions appropriately. You can still build firmware updates under the invalid scheme, but they will still be built with the improper sizes for the related partitions.
sdk-nrfxlib
See the changelog for each library in the nrfxlib documentation for additional information.
Modem library
BSD library has been renamed to
nrf_modem
(Modem library) andnrf_modem_lib
(glue).Updated to version 1.0.1. See the Changelog for detailed information.
Crypto
Added:
nrf_cc3xx_platform v0.9.7, with the following highlights:
Fixed an issue with mutex slab allocation in Zephyr RTOS platform file.
The library is built against mbed TLS v2.24.0.
See the Changelog - nrf_cc3xx_platform for detailed information.
Added nrf_cc3xx_mbedcrypto v0.9.7, with the following highlights:
Fixed issues where
mbedtls_rsa_complete
was not able to deduce missing parameters.Fixed an issue with calculating the correct salt length for certain combinations of RSA key and digest sizes.
Added missing function:
mbedtls_ecp_write_key
.The library is built against mbed TLS v2.24.0.
See the Changelog - nrf_cc3xx_mbedcrypto for detailed information.
Added nrf_oberon v3.0.8, with the following highlights:
Added APIs for doing ECDH calculation using secp256r1 in incremental steps.
Added
ocrypto_
APIs for SHA-224 and SHA-384.Added
ocrypto_
APIs for pbkdf2 for SHA-1 and SHA-256.The library is built against mbed TLS v2.24.0.
See the Changelog - nRF Oberon for detailed information.
Updated:
-
Added Kconfig options for TLS/DTLS and x509 certificates.
Added Kconfig options for
PK
andPK_WRITE
(CONFIG_MBEDTLS_PK_C
andCONFIG_MBEDTLS_PK_WRITE_C
).Rewrote the stripping mechanism of the library to not use the
POST_BUILD
option in a custom build rule. The library stripping mechanism was non-functional in certain versions of SEGGER Embedded Studio Nordic Edition.
-
SoftDevice Controller
See the Changelog for detailed information.
Renamed and reconfigured the libraries. Following are the new names of the libraries:
libsoftdevice_controller_peripheral.a
libsoftdevice_controller_central.a
libsoftdevice_controller_multirole.a
All libraries are now compatible with all the platforms within a given device family. The smallest sized library fitting the use case of the application will automatically be selected. In most cases, the final binary size is reduced.
Multiprotocol Service Layer
See the Changelog for detailed information.
Added a new signal
MPSL_TIMESLOT_SIGNAL_OVERSTAYED
to the MPSL timeslot. This signal is given to the application when the closing of timeslot session is delayed beyond a limit.Added a new clock configuration option
skip_wait_lfclk_started
inmpsl_clock_lfclk_cfg_t
, which does not wait for the start of Low Frequency Clock.Added support for RF front-end modules (FEM) in MPSL. The front-end module feature in MPSL currently supports the SKY66112-11 device, but does not support nRF21540 revision 1 or older.
nrfx
See the Changelog for nrfx 2.4.0 for detailed information.
MCUboot
sdk-mcuboot
The MCUboot fork in nRF Connect SDK (sdk-mcuboot
) contains all commits from the upstream MCUboot repository up to and including 3fc59410b6
, 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:
Bootloader:
Added hardening against hardware level fault injection and timing attacks. See
CONFIG_BOOT_FIH_PROFILE_HIGH
and similar Kconfig options.Introduced abstract crypto primitives to simplify porting.
Added ram-load upgrade mode (not enabled for Zephyr yet).
Renamed single-image mode to single-slot mode. See the
CONFIG_SINGLE_APPLICATION_SLOT
option.Added a patch for turning off cache for Cortex-M7 before chain-loading.
Fixed an issue that caused HW stack protection to catch the chain-loaded application during its early initialization.
Added reset of Cortex SPLIM registers before boot.
Fixed a build issue that occurred if the CONF_FILE contained multiple file paths instead of a single file path.
Added watchdog feed on nRF devices. See the
CONFIG_BOOT_WATCHDOG_FEED
option.Removed the
flash_area_read_is_empty()
port implementation function.Updated the ARM core configuration to only be initialized when selected by the user. See the
CONFIG_MCUBOOT_CLEANUP_ARM_CORE
option.Allowed the final data chunk in the image to be unaligned in the serial-recovery protocol.
Updated the
CONFIG_BOOT_DIRECT_XIP_REVERT
option to be valid only in xip-mode.Added an offset parameter to the tinycrypt ctr mode so that it can be properly used as a streaming cipher.
Configured the bootloader to use a minimal CBPRINTF (
CONFIG_CBPRINTF_NANO
) implementation.Configured logging to use
CONFIG_LOG_MINIMAL
by default.Fixed a vulnerability with nokogiri<=1.11.0.rc4.
Introduced a bootutil_public library that contains code common to MCUboot and the DFU application. See
CONFIG_MCUBOOT_BOOTUTIL_LIB
.
Image tool:
Updated the tool to print an image digest during verification.
Added a possibility to set a confirm flag for HEX files as well.
Updated the usage of
--confirm
to imply--pad
.Fixed the argument handling of
custom_tlvs
.Added support for setting a fixed ROM address in the image header.
Mcumgr
The mcumgr library contains all commits from the upstream mcumgr repository up to and including snapshot 74e77ad08
.
The following list summarizes the most important changes inherited from upstream mcumgr:
Fixed an issue with devices running MCUboot v1.6.0 or earlier where a power outage during erase of a corrupted image in slot 1 could result in the device not being able to boot. In this case, it was not possible to update the device and mcumgr would return error code 6 (
MGMT_ERR_EBADSTATE
).Added support for invoking shell commands (shell management) from the mcumgr command line.
Added optional verification of an uploaded direct-xip binary, which will reject any binary that cannot boot from the base address of the offered upload slot. This verification can be enabled through
CONFIG_IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT
.
Zephyr
sdk-zephyr
The Zephyr fork in nRF Connect SDK (sdk-zephyr
) contains all commits from the upstream Zephyr repository up to and including ff720cd9b343
, 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 ff720cd9b343 ^v2.4.0-ncs1
For a complete list of nRF Connect SDK specific commits, run:
git log --oneline manifest-rev ^ff720cd9b343
The current nRF Connect SDK release is based on Zephyr v2.4.99.
The following list summarizes the most important changes inherited from upstream Zephyr:
Architectures:
Enabled interrupts before
main()
in single-thread kernel mode for Cortex-M architecture.Introduced functionality for forcing core architecture HW initialization during system boot, for chain-loadable images.
Fixed inline assembly code in Cortex-M system calls.
Boards:
Added support for board versioning. With this concept, multiple board revisions can now share a single folder and board name.
Fixed arguments for the J-Link runners for nRF5340 DK and added the DAP Link (CMSIS-DAP) interface to the OpenOCD runner for nRF5340.
Marked the nRF5340 PDK as deprecated and updated the nRF5340 documentation to point to the nRF5340 DK.
Added enabling of LFXO pins (XL1 and XL2) for nRF5340.
Removed non-existing documentation links from partition definitions in the board devicetree files.
Updated documentation related to QSPI use.
Kernel:
Restricted thread-local storage, which is now available only when the toolchain supports it. Toolchain support is initially limited to the toolchains bundled with the Zephyr SDK.
Added support for condition variables.
Added support for aligned allocators.
Added support for gathering basic thread runtime statistics.
Removed the following deprecated kernel APIs:
k_enable_sys_clock_always_on()
k_disable_sys_clock_always_on()
k_uptime_delta_32()
K_FIFO_INITIALIZER
K_LIFO_INITIALIZER
K_MBOX_INITIALIZER
K_MEM_SLAB_INITIALIZER
K_MSGQ_INITIALIZER
K_MUTEX_INITIALIZER
K_PIPE_INITIALIZER
K_SEM_INITIALIZER
K_STACK_INITIALIZER
K_TIMER_INITIALIZER
K_WORK_INITIALIZER
K_QUEUE_INITIALIZER
Removed the following deprecated system clock APIs:
__ticks_to_ms()
__ticks_to_us()
sys_clock_hw_cycles_per_tick()
z_us_to_ticks()
SYS_CLOCK_HW_CYCLES_TO_NS64()
SYS_CLOCK_HW_CYCLES_TO_NS()
Removed the deprecated
CONFIG_LEGACY_TIMEOUT_API
option. All time-outs must now be specified using thek_timeout_t
type.Updated
k_timer_user_data_get()
to take aconst struct k_timer *timer
instead of a non-const
pointer.Added a
K_DELAYED_WORK_DEFINE
macro.Added a
CONFIG_MEM_SLAB_TRACE_MAX_UTILIZATION
option. If enabled,k_mem_slab_max_used_get()
can be used to get a memory slab’s maximum utilization in blocks.Bug fixes:
Fixed a race condition between
k_queue_append()
andk_queue_alloc_append()
.Updated the kernel to no longer try to resume threads that are not suspended.
Updated the kernel to no longer attempt to queue threads that are already in the run queue.
Updated
k_busy_wait()
to return immediately on a zero time-out, and improved accuracy on nonzero time-outs.The idle loop no longer unlocks and locks IRQs. This avoids a race condition; see Zephyr issue 30573.
An arithmetic overflow that prevented long sleep times or absolute time-outs from working properly has been fixed; see Zephyr issue #29066.
A logging issue where some kernel debug logs could not be removed was fixed; see Zephyr issue #28955.
Devicetree:
Removed the legacy DT macros.
Started exposing dependency ordinals for walking the dependency hierarchy.
Added documentation for the DTS bindings.
Added the
UICR
andFICR
peripherals to the devicetree.Changed the interrupt priorities in devicetree for Nordic Semiconductor devices to default to
NRF_DEFAULT_IRQ_PRIORITY
instead of hard-coded values.
Drivers:
Deprecated the
DEVICE_INIT()
macro. UseDEVICE_DEFINE
instead.Introduced macros (
DEVICE_DT_DEFINE
and related ones) that allow defining devices using information from devicetree nodes directly and referencing structures of such devices at build time. Most drivers have been updated to use these new macros for creating their instances.Deprecated the
DEVICE_AND_API_INIT()
macro. UseDEVICE_DEFINE
orDEVICE_DT_INST_DEFINE
instead.ADC:
Improved the default routine that provides sampling intervals, to allow intervals shorter than 1 millisecond.
Reworked, extended, and improved the
adc_shell
driver to make testing an ADC peripheral simpler.Introduced the
adc_sequence_options::user_data
field.
Bluetooth Controller:
Fixed and improved an issue where a connection event closed too early when more data could have been sent in the same connection event.
Fixed missing slave latency cancellation when initiating control procedures. Connection terminations are faster now.
Added experimental support for non-connectable scannable Extended Advertising with 255 byte PDU (without chaining and privacy support).
Added experimental support for connectable non-scannable Extended Advertising with 255 byte PDU (without chaining and privacy support).
Added experimental support for non-connectable non-scannable Extended Advertising with 255 byte PDU (without chaining and privacy support).
Added experimental support for Extended Scanning with duration and period parameters (without active scanning for scan response or chained PDU).
Added experimental support for Periodic Advertising and Periodic Advertising Synchronization Establishment.
Bluetooth HCI:
Added support for ISO packets to the RPMsg driver.
Added the possibility of discarding advertising reports to avoid time-outs in the User Channel, STM32 IPM, and SPI based drivers.
Bluetooth Host:
Added an API to unregister scanner callbacks.
Fixed an issue where ATT activity after the ATT time-out expired led to invalid memory access.
Added support for LE Secure connections pairing in parallel on multiple connections.
Updated the
BT_LE_ADV_OPT_DIR_ADDR_RPA
option. It must now be set when advertising towards a privacy-enabled peer, independent of whether privacy has been enabled or disabled.Updated the signature of the
bt_gatt_indicate_func_t
callback type by replacing theattr
pointer with a pointer to thebt_gatt_indicate_params
struct that was used to start the indication.Added a destroy callback to the
bt_gatt_indicate_params
struct, which is called when the struct is no longer referenced by the stack.Added advertising options to disable individual advertising channels.
Added experimental support for Periodic Advertising Sync Transfer.
Added experimental support for Periodic Advertising List.
Changed the permission bits in the discovery callback to always be set to zero since this is not valid information.
Fixed a regression in lazy loading of the Client Configuration Characteristics.
Fixed an issue where a security procedure failure could terminate the current GATT transaction when the transaction did not require security.
Clock control:
Changed the definition (parameters and return values) of the API function
clock_control_async_on()
.Added support for the audio clock in nRF53 Series SoCs.
Added missing handling of the HFCLK192M_STARTED event in nRF53 Series SoCs.
Counter:
Excluded selection of nRF TIMER0 and RTC0 when the Bluetooth Controller is enabled.
Display:
Added support for the ILI9488 display.
Refactored the ILI9340 driver to support multiple instances, rotation, and pixel format changing at runtime. Configuration of the driver instances is now done in devicetree.
Enhanced the SSD1306 driver to support communication via both SPI and I2C.
Ethernet:
Added driver for the W5500 Ethernet controller.
Flash:
Modified the nRF QSPI NOR driver so that it also supports nRF53 Series SoCs.
Added missing selection of
CONFIG_FLASH_HAS_PAGE_LAYOUT
for the SPI NOR and AT45 family flash drivers.Refactored the nRF QSPI NOR driver so that it no longer depends on
CONFIG_MULTITHREADING
.Removed
CONFIG_NORDIC_QSPI_NOR_QE_BIT
. Use thequad-enable-requirements
devicetree property instead.Added JESD216 support to the nRF QSPI NOR driver.
GPIO:
Added support for controlling LED intensity to the SX1509B driver.
Added an emulated GPIO driver.
IEEE 802.15.4:
Updated the nRF5 IEEE 802.15.4 driver to version 1.9.
Production support for IEEE 802.15.4 in the single-protocol configuration on nRF5340.
Development support for IEEE 802.15.4 in the multi-protocol configuration on nRF5340.
Added reservation of the TIMER peripheral used by the nRF5 IEEE 802.15.4 driver.
Added support for sending packets with specified TX time using the nRF5 IEEE 802.15.4 driver.
Implemented the RX failed notification for the nRF5 IEEE 802.15.4 driver.
LED PWM:
Added a driver interface and implementation for PWM-driven LEDs.
Modem:
Reworked the command handler reading routine, to prevent data loss and reduce RAM usage.
Added the possibility of locking TX in the command handler.
Improved handling of HW flow control on the RX side of the UART interface.
Added the possibility of defining commands with a variable number of arguments.
Introduced
gsm_ppp_start()
andgsm_ppp_stop()
functions to allow restarting the networking stack without rebooting the device.Added support for Quectel BG9x modems.
Power:
Added multiple
nrfx_power
-related fixes to reduce power consumption.
PWM:
Changed the GPIO configuration to use Nordic HAL, which allows support for GPIO pins above 31.
Added a check to ensure that the PWM period does not exceed a 16-bit value to prevent erroneous behavior.
Changed the PWM DT configuration to use a timer handle instead of the previously used timer instance.
Regulator:
Introduced a new regulator driver infrastructure.
Sensor:
Added support for the IIS2ICLX 2-axis digital inclinometer.
Enhanced the BMI160 driver to support communication via both SPI and I2C.
Added device power management in the LIS2MDL magnetometer driver.
Refactored the FXOS8700 driver to support multiple instances.
Added support for the Invensense ICM42605 motion sensor.
Added support for power management in the BME280 sensor driver.
Serial:
Replaced the usage of
k_delayed_work
withk_timer
in the nRF UART driver.Fixed an issue in the nRF UARTE driver where spurious data could be received when the asynchronous API with hardware byte counting was used and the UART was switched back from the low power to the active state.
Removed the following deprecated definitions:
UART_ERROR_BREAK
LINE_CTRL_BAUD_RATE
LINE_CTRL_RTS
LINE_CTRL_DTR
LINE_CTRL_DCD
LINE_CTRL_DSR
Refactored the
uart_poll_out()
implementation in the nRF UARTE driver to fix incorrect handling of HW flow control and power management.
SPI:
Added support for SPI emulators.
Timer:
Extended the nRF RTC Timer driver with a vendor-specific API that allows using the remaining compare channels of the RTC that provides the system clock.
USB:
Fixed handling of zero-length packets (ZLP) in the Nordic Semiconductor USB Device Controller driver (usb_dc_nrfx).
Fixed initialization of the workqueue in the usb_dc_nrfx driver, to prevent fatal errors when the driver is reattached.
Fixed handling of the SUSPEND and RESUME events in the Bluetooth classes.
Made the USB DFU class compatible with the target configuration that does not have a secondary image slot.
Added support for using USB DFU within MCUboot with single application slot mode.
Removed heap allocations from the usb_dc_nrfx driver to fix problems with improper memory sizes. Now the driver uses static buffers for OUT endpoints and memory slabs for FIFO elements.
Networking:
General:
Added support for DNS Service Discovery.
Deprecated legacy TCP stack (TCP1).
Added multiple minor TCP2 bugfixes and improvements.
Added support for RX packet queueing in TCP2.
Added network management events for DHCPv4.
Added periodic throughput printout to the Socket Echo Server sample.
Added an experimental option to set preemptive priority for networking threads (
CONFIG_NET_TC_THREAD_PREEMPTIVE
).Added a Kconfig option that enables a hostname update on link address change (
CONFIG_NET_HOSTNAME_UNIQUE_UPDATE
).Added multiple fixes to the DHCP implementation.
Added support for the Distributed Switch Architecture (DSA).
LwM2M:
Made the endpoint name length configurable with Kconfig (see
CONFIG_LWM2M_RD_CLIENT_ENDPOINT_NAME_MAX_LENGTH
).Fixed PUSH FOTA block transfer with Opaque content format.
Added various improvements to the bootstrap procedure.
Fixed token generation.
Added separate response handling.
Fixed Registration Update to be sent on lifetime update, as required by the specification.
Added a new event (
LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR
) that notifies the application about underlying socket errors. The event is reported after several failed registration attempts.Improved integers packing in TLVs.
Added support for arguments of the LwM2M execute command.
Fixed buffer length check in
lwm2m_engine_set()
.Added a possibility to acknowledge LwM2M requests early from the callback (
lwm2m_acknowledge()
).Reworked the Bootstrap Delete operation to support all cases defined by the LwM2M specification.
Added support for Bootstrap Discovery.
OpenThread:
Updated the OpenThread version to commit
f7825b96476989ae506a79963613f971095c8ae0
.Removed obsolete flash driver from the OpenThread platform.
Added new OpenThread options:
CONFIG_OPENTHREAD_NCP_BUFFER_SIZE
CONFIG_OPENTHREAD_PLATFORM_USEC_TIMER_ENABLE
CONFIG_OPENTHREAD_CSL_SAMPLE_WINDOW
Added support for RCP co-processor mode.
Fixed multicast packet reception.
MQTT:
Fixed mutex protection on
mqtt_disconnect()
.Switched the library to use
zsock_*
socket functions instead of POSIX names.Changed the return value of
mqtt_keepalive_time_left()
to -1 when keep alive is disabled.
Sockets:
Enabled Maximum Fragment Length (MFL) extension on TLS sockets.
Added a
TLS_ALPN_LIST
socket option for TLS sockets.Fixed a
tls_context
leak onztls_socket()
failure.Fixed
getaddrinfo()
hints handling with AI_PASSIVE flag.
CoAP:
Added a retransmission counter to the
coap_pending
structure to simplify the retransmission logic.Added a Kconfig option to randomize the initial ACK time-out, as specified in RFC 7252 (
CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT
).Fixed encoding of long options (larger than 268 bytes).
Bluetooth Mesh:
Replaced the Configuration Server structure with Kconfig entries and a standalone Heartbeat API.
Added a separate API for adding keys and configuring features locally.
Fixed a potential infinite loop in model extension tree walk.
Added LPN and Friendship event handler callbacks.
Created separate internal submodules for keys, labels, Heartbeat, replay protection, and feature management.
-
Added an API for resetting a node (
bt_mesh_cfg_node_reset()
).Added an API for setting network transmit parameters (
bt_mesh_cfg_net_transmit_set()
).
Libraries/subsystems:
Settings:
Removed SETTINGS_USE_BASE64 support, which has been deprecated for more than two releases.
Storage:
Flash map: Added an API to get the value of an erased byte in the flash_area. See
flash_area_erased_val()
.Stream Flash: Eliminated the usage of the flash API internals.
File systems:
Enabled FCB to work with non-0xff erase value flash.
Added a
FS_MOUNT_FLAG_NO_FORMAT
flag to the FatFs options. This flag removes formatting capabilities from the FAT/exFAT file system driver and prevents unformatted devices to be formatted, to FAT or exFAT, on mount attempt.Added support for the following
fs_mount()
flags:FS_MOUNT_FLAG_READ_ONLY
,FS_MOUNT_FLAG_NO_FORMAT
Updated the FS API to not perform a runtime check of a driver interface when the
CONFIG_NO_RUNTIME_CHECKS
option is enabled.
DFU:
Added shell module for MCUboot enabled application. See
CONFIG_MCUBOOT_SHELL
.Reworked the implementation to use MCUboot’s bootutil_public library instead of the Zephyr implementation of the same API.
IPC:
Added a
subsys/ipc
subsystem that provides multi-endpoint capabilities to the OpenAMP integration.
Build system:
Updated west to v0.9.0.
Renamed sanitycheck to Twister.
Ensured that shields can be placed in other BOARD_ROOT folders.
Added basic support for Clang 10 with x86.
Fixed a bug that prevented compiling the nRF Secure Immutable Bootloader with
CONFIG_SB_SIGNING_PUBLIC_KEY
System:
Added an API that provides a printf family of functions (for example,
cbprintf()
) with a callback on character output, to perform in-place streaming of the formatted string.Updated minimal libc to print stderr just like stdout.
Added an
abort()
function to minimal libc.Updated the ring buffer to allow using the full buffer capacity instead of forcing an empty slot.
Added a
CLAMP
macro.Added a feature for post-mortem analysis to the tracing library.
Samples:
Added TagoIO IoT Cloud HTTP Sample.
Added Civetweb WebSocket Server sample.
WS2812 Sample Application: Updated to force SPIM on nRF52 DK.
Custom Fonts: Added support for ssd1306fb.
Generic GSM Modem Sample: Added suspend/resume shell commands.
UpdateHub embedded Firmware Over-The-Air (FOTA) sample: Added support for Bluetooth LE IPSP, 802.15.4, modem, and Wi-Fi.
Logging:
Added STP transport and raw data output support for systrace.
Modules:
Introduced a
CONFIG_MBEDTLS_MEMORY_DEBUG
option for mbedtls.Updated LVGL to v7.6.1.
Updated libmetal and openamp to v2020.10.
Updated nrfx in hal-nordic to version 2.4.0.
Updated the Trusted Firmware-M (TF-M) module to v1.2.0.
Moved the nrfx glue code from the hal_nordic module repository to the main Zephyr repository.
Updated the Trusted Firmware-M (TF-M) module to include support for the nRF5340 and nRF9160 platforms.
Other:
Renamed the
sanitycheck
script totwister
.Added initial LoRaWAN support.
Updated
west flash
support fornrfjprog
to fail if a HEX file has UICR data and--erase
was not specified.Added an API to correlate system time with external time sources (see Time Utilities).
Power management:
Overhauled the naming and did some general cleanup.
Added a notifier API to register an object to receive notifications when the system changes power state.
Shell:
Updated documentation.
Optimized the tab feature and the select command.
Enhanced and improved the help command.
Toolchain:
Added initial support for LLVM/Clang (version 10, on the x86 architecture).
Added the environment variable
LLVM_TOOLCHAIN_PATH
for locating the LLVM toolchain.
USB:
Fixed the handling of zero-length packet (ZLP) in the nRF USB Device Controller Driver.
Changed the USB DFU wait delay to be configurable with Kconfig (
CONFIG_USB_DFU_WAIT_DELAY_MS
).
Additions specific to nRF Connect SDK
The following list contains nRF Connect SDK specific additions:
Added support for the nRF Connect SDK’s Partition Manager, which can be used for flash partitioning.
Added the following network socket and address extensions to the BSD Sockets interface to support the functionality provided by the BSD library:
AF_LTE family.
NPROTO_AT protocol.
NPROTO_PDN protocol to be used in conjunction with AF_LTE.
NPROTO_DFU protocol to be used in conjunction with AF_LOCAL.
SOCK_MGMT socket type, used in conjunction with AF_LTE.
SOL_PDN protocol level and associated socket option values (SO_PDN_CONTEXT_ID option for PDN sockets, SO_PDN_STATE option for PDN sockets to retrieve the state of the PDN connection).
SOL_DFU protocol level and associated socket options. This includes a SO_DFU_ERROR socket option for DFU socket that can be used when an operation on a DFU socket returns -ENOEXEC, indicating that the modem has rejected the operation to retrieve the reason for the error.
TLS_SESSION_CACHE socket option for TLS session caching.
SO_BINDTODEVICE socket option.
SO_SNDTIMEO socket option.
SO_SILENCE_ALL to disable/enable all the replies to unexpected traffics.
SO_IP_ECHO_REPLY to disable/enable replies to IPv4 ICMPs.
SO_IPV6_ECHO_REPLY to disable/enable replies to IPv6 ICMPs.
MSG_TRUNC socket flag.
MSG_WAITALL socket flag required to support the corresponding NRF counterpart flag, for translation within the offloading interface.
Added support for enabling TLS caching when using the MQTT library. See
TLS_SESSION_CACHE
.Modified the SoC devicetree
.dtsi
files to prefer the CryptoCell CC310 hardware as the system entropy source on SoCs where support is available (nRF52840, nRF5340, nRF9160).Added Zigbee L2 layer.
Added readout of IEEE 802.15.4 EUI-64 address in the non-secure build from the FICR registers in the secure zone (nRF IEEE 802.15.4 Radio Driver).
Added TF-M adjustments to support TF-M in nRF Connect SDK.
Disabled the automatic printing of OpenThread settings when building OpenThread.
Documentation
In addition to documentation related to the changes listed above, the following documentation has been updated:
About the nRF Connect SDK - Added information about the repositories, tools and configuration, and west.
Installing manually - Updated with information about installing GN tools.
Building and programming an application - Added more information about west flash.
Restructured the User guides section and moved the content to Development model, Application development, Protocols, and the root level.
Added the following user guides:
Developing with nRF9160 DK - Added information about TF-M, board revisions, and full modem firmware update.
Working with nRF5340 DK - Added and updated information about:
TF-M, multiprotocol support, and available samples for Thread and Zigbee.
Building and programming using SEGGER Embedded Studio, multi-image build using west, and disabling readback protection.
Working with nRF52 Series - Added sections on Project CHIP, Thread, and Zigbee support.
Bluetooth mesh - Added Configuring mesh models using the nRF Mesh mobile app, Reserved vendor model IDs and opcodes, and Creating a new model (plus subpages).
-
Added information about nRF5340 to OpenThread memory requirements and OpenThread architectures.
Configuring Thread in the nRF Connect SDK - Updated information about IEEE 802.15.4 EUI-64 configuration.
Thread tools - Added information on installing wpantund.
-
Updated Supported Zigbee features, Co-processor designs, and Zigbee tools.
Configuring Zigbee in nRF Connect SDK - Updated mandatory and optional configuration options, logger options, section on power saving during sleep and added IEEE 802.15.4 EUI-64 configuration.
Documentation updates for Homekit.
Applications and samples
nRF9160:
nRF9160: Serial LTE modem - Added documentation for new commands. Fixed the syntax and examples of some existing commands.
Added a note about
CONFIG_MQTT_KEEPALIVE
option to the nRF9160: AWS IoT, nRF9160: Azure IoT Hub, and cloud client samples.
Bluetooth:
Added a note about child-image overlay to the Bluetooth: Central Heart Rate Monitor with Coded PHY and Bluetooth: Peripheral Heart Rate Monitor with Coded PHY samples.
Bluetooth: NUS shell transport - Updated the testing section.
Bluetooth: Throughput - Updated to reflect the new implementation and usage.
Bluetooth mesh:
Moved the contents in Configuring models to Configuring mesh models using the nRF Mesh mobile app.
Renamed the following samples:
Bluetooth: Mesh light control sample to Bluetooth: Mesh light fixture.
Bluetooth: Mesh sensor client to Bluetooth: Mesh sensor observer.
Bluetooth: Mesh sensor server to Bluetooth: Mesh sensor.
Thread:
Added information on FEM support.
Thread: CLI - Added information about minimal configuration and updated the information on activating sample extensions, testing, and dependencies.
Zigbee:
Added information on FEM support and updated the dependencies sections.
Zigbee: Light switch - Added a section on Configuration files for sample extensions.
Updated the configuration sections of the following samples:
Bluetooth: Peripheral Alexa Gadgets
nRF Secure Immutable Bootloader - Added information on bootloader overlays and building the sample from SEGGER Embedded Studio and command line.
Added information about FEM support to the Radio test and Bluetooth: Direct Test Mode samples.
Libraries and drivers
LwM2M carrier - Removed the version dependency table from Certification and version dependencies.
DFU target - Added information about full modem upgrade and updated the configuration.
AWS IoT - Added information on initializing the library and connecting to AWS IoT broker.
Application Event Manager - Updated the documentation to describe events with dynamic data size.
CC310 entropy driver - Updated information about driver behavior in secure and non-secure applications.
nrfxlib
nrf_cc3xx_mbedcrypto library - Added API.
-
Library architecture - Added information on shared memory configuration.
TLS/DTLS configuration - Added information on supported cipher suites.
Porting the Modem library to your OS - Added information about the modem functions.
Multiprotocol Service Layer - Added Front-end module feature.
nRF 802.15.4 Service Layer - Added.
Nordic Security Module - Updated to reflect the features supported by different backends.
SoftDevice Controller - Updated the Bluetooth LE feature support.
ZBOSS Zigbee stack - Added the types of ZBOSS libraries that are available.
Known issues
See known issues for nRF Connect SDK v1.5.0 for the list of issues valid for this release.