nRF Connect SDK v1.3.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 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 (which are pre-production) and Thread, Zigbee, and Bluetooth Mesh protocols are supported for development in v1.3.0 for prototyping and evaluation. Support for production and deployment in end products is coming soon.
New home for the nRF Connect SDK
Support for Thread and Zigbee
Support for Bluetooth Mesh
nRF Desktop supported for production
New nRF9160 samples and libraries
Support for using external flash for the secondary slot in MCUboot
General updates and bugfixes
Starting with this release, the nRF Connect SDK has moved to a new GitHub organization, nrfconnect. All repositories were renamed to provide clear and concise names that better reflect the composition of the codebase. If you are a new nRF Connect SDK user, there are no actions you need to take. If you used previous releases of the nRF Connect SDK, you should follow the instructions in Pointing the repositories to the right remotes after they were moved.
The release tag for the nRF Connect SDK manifest repository (https://github.com/nrfconnect/sdk-nrf) is v1.3.0.
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
See Get the nRF Connect SDK code for more information.
This version of the nRF Connect SDK has been tested with the following modem firmware for cellular IoT applications:
The following sections provide detailed lists of changes by component.
Date-Time library - maintains the current date-time UTC from multiple time sources (modem, NTP servers).
FTP client library - can be used to download or upload FTP server files.
Connectivity bridge application with dual UART and Bluetooth LE support - replaces the USB-UART bridge sample.
nRF9160: GNSS sample:
Reworked the API to make it more flexible.
Added an option to register an event handler. All event types from the GPS will be received, as opposed to the previous single-trigger source.
nRF Cloud library:
Added FOTA download progress monitoring.
Added nRF Cloud A-GPS support.
Added support for MQTT persistent sessions.
Moved cloud connection polling out of the application into a separate nrf_cloud thread.
Exposed MQTT topics to the nRF Cloud library.
AWS FOTA library:
Switched from Zephyr’s JSON parser to cJSON.
Added support for MQTT persistent sessions.
FOTA download library:
Added support for specifying a TCP port for connections.
Added support for specifying the APN to be used.
Modem key management library:
modem_key_mgmt_cmp()function to the API, which allows to compare with a credential stored in the modem.
Various minor fixes.
Modem information library:
Fixed an error in reading
Added APN readout.
LTE link controller library:
Added the concept of events.
Allowed to modify PSM/eDRX parameters at runtime.
Allowed to modify PDP context and PDN authentication at runtime.
Updated to use CR termination by default. This reverts the old behavior.
nRF9160: HTTP application update sample:
Added support for BSD library initialization at system startup.
Changed default download host and file name.
nRF9160: LwM2M Client sample:
Fixed an invalid value of the APN resource in the Connectivity Monitoring object.
Set cell ID information in the Connectivity Monitoring object.
Added delay to the reboot procedure, to allow to send a reply to the server.
Added queue mode support.
nRF9160: Asset Tracker application:
nRF9160: Serial LTE modem application:
Moved from samples to applications.
Added low-power idle mode.
Added support for generic proprietary AT commands.
Added support for BSD socket, TCP/UPD, ICMP, GPS, MQTT, and FTP proprietary AT commands.
Added support for communicating to an external MCU over UART.
Added support for transmitting arbitrary hexadecimal data.
Added support for TCP/UDP proxy service (optional).
Added support for SUPL A-GPS.
LwM2M carrier library:
Updated to version 0.9.0. See the Changelog for detailed information.
Updated to version 0.7.3. See the Changelog for detailed information.
Provided version 0.6.0 for download. This new version is required for compatibility with nRF Connect SDK v1.3.0.
The following changes are relevant for the nRF52 and nRF53 Series.
Multiprotocol Service Layer (MPSL)
See the Changelog for detailed information.
Added TX power envelope functionality.
Added support for using a low-swing and full-swing LF clock.
Added the following samples:
Thread: CLI sample - very basic sample with Thread enabled and shell support to allow using the OpenThread Command Line Interface. This sample is needed for Thread certification.
Thread Sleepy End Device sample - a variation of the Thread: CoAP Client sample that works with lower power consumption as Minimal Thread Device type.
See the Thread user guide to get started.
Added initial support for the Zigbee network protocol:
Light control sample consisting of Zigbee: Light bulb, Zigbee: Light switch, and Zigbee: Network coordinator - ported from the nRF5 SDK for Thread and Zigbee. The sample demonstrates all Zigbee roles (coordinator, router, end device). The Zigbee: Light switch sample provides sleepy end device support.
See the Zigbee user guide to get started.
Bluetooth Low Energy
Introduced role section in the Bluetooth: Throughput sample. The user must now type “s” or “m” to select the application role in the throughput test.
Optimized RAM usage in the Bluetooth: Peripheral GATT Discovery Manager sample by approximately 50 percent.
Various fixes and improvements in Bluetooth LE samples.
nRF Bluetooth LE Controller
See the Changelog for detailed information.
Added feature to configure TX power per role/connection.
Added support for new hardware:
Added a fail-safe erase module that, if enabled, erases settings after a crash.
Added low-latency lock to disable slave latency until the device enters power down.
Improved connection parameters update.
Removed the shell module. Shell configuration is now done using Zephyr configuration options.
Updated the application to boot using the immutable bootloader when background DFU is enabled (the immutable bootloader boots the application directly from any slot).
MCUboot is used only on configurations with serial recovery through USB.
The peripheral sends the first report with delay (configurable), allowing the central to be ready.
Updated the config channel to use dynamic module IDs.
Reworked and unified HID report data passing.
Improved the report rate through TX power changes.
Improved usage of setting handlers.
Improved filtering of peripherals when the central does scanning.
Added passkey support on keyboard (passkey required during device bonding).
Added support for system control reports on keyboard.
Various small improvements and bug fixes.
See the nRF Desktop documentation to get started.
Added the following samples:
Added the following Mesh models:
See the Bluetooth mesh user guide to get started.
Enhanced ShockBurst (ESB)
Renamed the subsystem to
esband moved it from
Renamed the header file and all data types to align with the name change.
The following changes are relevant for all device families.
All boards have been renamed. The following boards are defined in Zephyr:
The following boards are defined in sdk-nrf:
See the Changelog for nrfx 2.2.0 for detailed information.
fw_info_ext_api_provide()as an external API, so that MCUboot can use it to provide external APIs from the nRF Secure Immutable Bootloader to its images. This means that requesting external APIs in applications works even if MCUboot is included.
Fixed a bug so that the nRF Secure Immutable Bootloader works with nRF5340 SPU flash regions.
Added a Bootloader storage library:
bl_storageand allowed including the library in the application.
Added documentation and tests.
Added a monotonic version counter. The immutable bootloader will not boot an application that has a lower version than the monotonic counter.
Secure Partition Manager (SPM)
Added support for disabling some services in the nRF9160: Secure Services sample. It now works in more bootloader configurations.
CPU load measurement
Added CPU load measurement, a debug module for measuring CPU load.
Added iCalendar parser, a library to parse iCalendar data format.
Added external flash secondary slot MCUboot. See Using external flash memory partitions.
Added an option to build Ed25519 signature validation without using mbedTLS, by relying on a bundled tinycrypt-based SHA-512 implementation.
Replaced CBOR decoding in serial recovery with code generated from a CDDL description. This results in a flash footprint reduction of more than 1 KB while serial recovery is enabled.
Added support for X25519-encrypted images.
Added rollback protection. There is support for a hardware rollback counter that must be provided as part of the platform, as well as a software solution that protects against some types of rollback.
Added an optional boot record in shared memory to communicate boot attributes to code that is run later.
Added a cleanup of the Arm core before the application is booted.
Allowed recovery over USB CDC ACM with logs enabled.
Various fixes to work with the latest Zephyr version.
Added support for Multi-image builds for multi-core projects.
Facilitated defining non-secure boards out of tree. Any board that matches
*nsis now considered non-secure, and its child images board is set to the secure variant.
Added support for defining external flash in the Partition Manager.
Updated the time-out type to
k_timeout_t, because the Zephyr kernel deprecated its integer type as time-out in different APIs (timeout, scheduling, …).
Updated all files to use the C/C++ Devicetree generic API, because the C/C++ Devicetree value fetching API was reworked in Zephyr so that it uses compatible strings and new function-like macros to match properties. See Devicetree access from C/C++.
In addition to documentation related to the changes listed above, the following documentation has been updated:
Moved Kconfig options to a separate documentation set
Building the nRF Connect SDK documentation - updated to reflect that Kconfig options are now built as a separate documentation set
Documentation guidelines - updated
Installing automatically - updated to recommend the use of the toolchain manager
Installing manually - updated to align the instructions for all operating systems, added Pointing the repositories to the right remotes after they were moved
Build and configuration system - updated nRF Connect SDK additions
Working with nRF5340 DK - updated
Working with nRF52 Series - added
Near Field Communication (NFC) - added
Cloud client - updated
Cryptography tests - added
Libraries - improved the structure of the library documentation
Bluetooth mesh profile (and subpages) - added
Scanning module - updated
at_cmdlibrary - added
CoAP utils - added
HID configurator for nRF Desktop - updated
BSD library - added documentation about GNSS socket.
Nordic Security Module - updated
The nRF9160: Asset Tracker application prints warnings and error messages during successful FOTA. (NCSDK-5574)
The nRF9160: LTE Sensor Gateway sample crashes when Thingy:52 is flipped. (NCSDK-5666)
nrf_send()function in the BSD library might be blocking for several minutes, even if the socket is configured for non-blocking operation. The behavior depends on the cellular network connection.
The nRF9160: Asset Tracker sample might show up to 2.5 mA current consumption in idle mode with
The SEGGER Control Block cannot be found by automatic search by the RTT Viewer/Logger. As a workaround, set the RTT Control Block address to 0 and it will try to search from address 0 and upwards. If this does not work, look in the
builddir/zephyr/zephyr.mapfile to find the address of the
_SEGGER_RTTsymbol in the map file and use that as input to the viewer/logger.
nRF91 fails to receive large packets (over 4000 bytes).
nrf_connect fails if called immediately after initialization of the device. A delay of 1000 ms is required for this to work as intended.
FOTA with the SMP Server Sample does not work.
CMakeLists.txtfile for developing applications that emulate nRF52830 on the nRF52833 DK is missing.
As a workaround, create a
CMakeLists.txtfile in the
ncs/zephyr/boards/arm/nrf52833dk_nrf52820folder with the following content:
You can download this file from the upstream Zephyr repository. After you add it, the file is automatically included by the build system.
Multi-Protocol Service Layer (MPSL)
The Antenna Diversity feature is not supported on nRF52840 devices. (KRKNWK-6361)
It is not possible to build Thread samples using SEGGER Embedded Studio (SES). SES does not support .cpp files in nRF Connect SDK projects. (NCSDK-5014)
It is not possible to provision the Thread: CoAP Client sample to servers that it cannot directly communicate with. This is because Link Local Address is used for communication. (KRKNWK-6358)
The “diag” command is not yet supported by Thread in the nRF Connect SDK. (KRKNWK-6408)
There might be a noticeable delay (~220 ms) between calling the ZBOSS API and on-the-air activity.
ZBOSS alarms are inaccurate. On average, they last longer by 6.4 percent. It is recommended to use Zephyr alarms.
Bluetooth Low Energy
High-throughput transmission can deadlock the receive thread if the connection is suddenly disconnected. (NCSDK-5711)
Bi-directional high-throughput traffic can deadlock the transmit thread. (NCSDK-5711)
On nRF5340, only the SoftDevice Controller is supported for Bluetooth Mesh. (NCSDK-5580)
Samples and applications
The build configuration consisting of nRF Secure Immutable Bootloader, Secure Partition Manager, and application does not work. As a workaround, either include MCUboot in the build or use MCUboot instead of the immutable bootloader.
ninja flashonly program one core, even if multiple cores are included in the build. As a workaround, execute the flash command from inside the build directory of the child image that is placed on the other core (for example,
nRF Oberon v3.0.5 is missing symbols for HKDF using SHA1, which will be fixed in an upcoming version of the library. As a workaround, use a different backend (for example, vanilla mbed TLS) for HKDF/HMAC using SHA1. (NCSDK-5546)
The Nordic Security Module is currently only fully supported on nRF52840 and nRF9160 devices. It gives compile errors on nRF52832, nRF52833, nRF52820, nRF52811, and nRF52810. These errors can be fixed by cherry-picking commits in nrfxlib PR #205.
Secure Partition Manager (SPM)
Enabling default logging in the Secure Partition Manager sample makes it crash if the sample logs any data after the application has booted (for example, during a SecureFault, or in a secure service). At that point, RTC1 and UARTE0 are non-secure. As a workaround, do not enable logging and add a breakpoint in the fault handling, or try a different logging backend. (NCSIDB-114)
It is not possible to build and program Secure Partition Manager and the application individually. (from v1.2.0)
If the Zephyr kernel preempts the current thread and performs a context switch to a new thread while the current thread is executing a secure service, the behavior is undefined and might lead to a kernel fault. To prevent this situation, a thread that aims to call a secure service must temporarily lock the kernel scheduler (
k_sched_lock()) and unlock the scheduler (
k_sched_unlock()) after returning from the secure call. (NCSIDB-108)
In addition to the known issues above, check the current issues in the official Zephyr repository, since these might apply to the nRF Connect SDK fork of the Zephyr repository as well. To get help and report issues that are not related to Zephyr but to the nRF Connect SDK, go to Nordic’s DevZone.
The Bluetooth: Peripheral HIDS keyboard sample cannot be used with the SoftDevice Controller because the NFC subsystem does not work with the controller library. The library uses the MPSL Clock driver, which does not provide an API for asynchronous clock operation. NFC requires this API to work correctly. (fixed)
When the Bluetooth: Peripheral HIDS mouse sample is used with the Zephyr Bluetooth LE Controller, directed advertising does not time out and the regular advertising cannot be started. (fixed)
The Bluetooth: Central HIDS sample cannot connect to a peripheral that uses directed advertising. (fixed)
When running the Bluetooth: Central SMP Client sample, the
CONFIG_BT_SMPconfiguration must be aligned between this sample and the Zephyr counterpart (SMP Server Sample). However, security is not enabled by default in the Zephyr sample. (fixed)
On some operating systems, the nrf_desktop application is unable to reconnect to a host. (fixed)
The NFC: TNEP poller and NFC: Tag reader samples cannot be run on the nRF5340 PDK. There is an incorrect number of pins defined in the MDK files, and the pins required for NFC Reader ST25R3911B cannot be configured properly. (fixed)
NFC tag samples are unstable when exhaustively tested (performing many repeated read and/or write operations). NFC tag data might be corrupted. (fixed)
For nRF5340, the pins P1.12 to P1.15 are unavailable due to an incorrect pin number definition in the MDK. (fixed)
The MCUboot recovery feature using the USB interface does not work. (fixed)