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.
Highlights¶
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
A new home¶
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.
Release tag¶
The release tag for the nRF Connect SDK manifest repository (https://github.com/nrfconnect/sdk-nrf) is v1.3.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 Getting 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.0
Use the latest version of the nRF Programmer app of nRF Connect for Desktop to update the modem firmware. See Updating the nRF9160 DK cellular modem for instructions.
Changelog¶
The following sections provide detailed lists of changes by component.
nRF9160¶
Added:
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.
nRF Cloud A-GPS library - provides a way to request and process A-GPS data from nRF Cloud to be used with the nRF9160 SiP. The nRF9160: A-GPS sample demonstrates how to use the library.
Connectivity bridge application with dual UART and Bluetooth LE support - replaces the USB-UART bridge sample.
nRF9160: GPS sockets and SUPL client library 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:
Added a
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
MODEM_INFO_RSRP
.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.
lib/at_host
library: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:
Improved stability.
Various bugfixes.
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.
SUPL client and SUPL client OS integration:
Provided version 0.6.0 for download. This new version is required for compatibility with nRF Connect SDK v1.3.0.
nRF5¶
The following changes are relevant for the nRF52 and nRF53 Series.
nRF5340 SoC¶
Added nRF5340: Empty firmware for application core for samples running purely on the nRF5340 network core.
When building a Bluetooth sample for nRF5340, the Bluetooth: HCI RPMsg sample is now automatically built as child image.
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.
Thread¶
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: CoAP Client sample and Thread: CoAP Server sample - two samples demonstrating how to use the CoAP protocol over a Thread network.
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.
Zigbee¶
Added initial support for the Zigbee network protocol:
ZBOSS Zigbee stack - port of the ZBOSS stack to the nRF Connect SDK, provided as a closed stack binary in nrfxlib. The stack provided in this release has not been certified by the Zigbee Alliance.
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¶
Added the Bluetooth EnOcean library and Bluetooth: EnOcean sample.
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.
Enabled directed advertising in the Bluetooth: Peripheral HIDS mouse sample. Added handling of directed advertising in the Bluetooth: Central BAS and Bluetooth: Central HIDS samples.
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.
nRF Desktop¶
Added support for new hardware:
nrf52833dk_nrf52833
nrf52833dongle_nrf52833
nrf52820dongle_nrf52820
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.
Bluetooth Mesh¶
Added the following samples:
Bluetooth: Mesh Light sample - demonstrates how to set up a basic Mesh server model application and control LEDs with the Bluetooth Mesh.
Bluetooth: Mesh Light Switch sample - demonstrates how to set up a basic Mesh client model application and control LEDs with the Bluetooth Mesh.
Added the following Mesh models:
See the Bluetooth Mesh user guide to get started.
Enhanced ShockBurst (ESB)¶
Renamed the subsystem to
esb
and moved it fromsubsys/enhanced_shockburst
tosubsys/esb
.Renamed the header file and all data types to align with the name change.
Common¶
The following changes are relevant for all device families.
Boards¶
All boards have been renamed. The following boards are defined in Zephyr:
Old name |
New name |
---|---|
nrf52810_pca10040 |
nrf52dk_nrf52810 |
nrf52_pca10040 |
nrf52dk_nrf52832 |
nrf52833_pca10100 |
nrf52833dk_nrf52833 |
nrf52811_pca10056 |
nrf52840dk_nrf52811 |
nrf52840_pca10056 |
nrf52840dk_nrf52840 |
nrf52840_pca10059 |
nrf52840dongle_nrf52840 |
nrf9160_pca10090 |
nrf9160dk_nrf9160 |
nrf52840_pca10090 |
nrf9160dk_nrf52840 |
nrf52_pca20020 |
thingy52_nrf52832 |
nrf5340_dk_nrf5340 |
nrf5340pdk_nrf5340 |
The following boards are defined in sdk-nrf:
Old name |
New name |
---|---|
nrf52840_pca20041 |
nrf52desktop_gaming_mouse_nrf52840 |
nrf52810_pca20045 |
nrf52desktop_mouse_nrf52810 |
nrf52_pca20044 |
nrf52desktop_mouse_nrf52832 |
nrf52_pca20037 |
nrf52desktop_keyboard_nrf52832 |
nrf9160_pca20035 |
thingy91_nrf9160 |
nrf52840_pca20035 |
thingy91_nrf52840 |
nrf52833_pca10111 |
nrf52833dongle_nrf52833 |
nrf52833_pca10114 |
nrf52820dongle_nrf52820 |
nrfx¶
See the Changelog for nrfx 2.2.0 for detailed information.
Crypto¶
Added nRF Oberon v3.0.5 with a companion library that provides an mbed TLS frontend for groups of cryptographic algorithms (SHA, ECC, ECJPAKE, AES). See the Changelog - nRF Oberon for detailed information.
Added nRF Oberon as a backend in the Nordic Security Module.
NFC¶
Added a Parser for Bluetooth LE OOB records for decoding data used for Bluetooth LE OOB pairing.
Added support for nRF5340 in the NFC: System OFF sample.
Aligned file and API naming in the NFC Data Exchange Format (NDEF) libraries.
Immutable bootloader¶
Exposed
fw_info_ext_api_provide()
as an external API, so that MCUboot can use it to provide external APIs from the 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 Immutable bootloader works with nRF5340 SPU flash regions.
Added a Bootloader storage library:
Renamed
provision.h
andprovision_flash.h
tobl_storage
and 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.
Disabled
CONFIG_SPM_SERVICE_PREVALIDATE
in the Secure Partition Manager (SPM) library, because this option requires the immutable bootloader.Updated the Secure Partition Manager (SPM) library to make it compatible with nRF5340 (with or without anomaly 19).
CPU load measurement¶
Added CPU load measurement, a debug module for measuring CPU load.
iCalendar parser¶
Added iCalendar parser, a library to parse iCalendar data format.
MCUboot¶
Added external flash secondary slot MCUboot. See Flash partitions used by MCUboot.
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.
Build system¶
Added support for Multi-image builds for multi-core projects.
Facilitated defining non-secure boards out of tree. Any board that matches
*_ns
or*ns
is 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.
Zephyr¶
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++.
Documentation¶
In addition to documentation related to the changes listed above, the following documentation has been updated:
Configuration Options - 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 style guide - updated
Installing the nRF Connect SDK through nRF Connect for Desktop - updated to recommend the use of the toolchain manager
Installing the nRF Connect SDK manually - updated to align the instructions for all operating systems, added Pointing the repositories to the right remotes after they were moved
Building and programming a sample application - updated Board names
Testing a sample application - added How to connect with LTE Link Monitor
Modifying a sample application - added Configuring build types
Build and configuration system - updated nRF Connect SDK additions
Working with nRF53 Series - updated
Working with nRF52 Series - added
Working with Thingy:91 - added Connecting to Thingy:91 serial ports
Near Field Communication (NFC) - added
Secure bootloader chain - added Adding a bootloader chain to your application
nRF9160: Cloud client - updated
Cryptography tests - added
Libraries - improved the structure of the library documentation
Bluetooth Mesh Profile (and subpages) - added
Scanning module - updated
AT command interface - added
CoAP utils - added
TNEP for polling device and TNEP for tag device - updated
HID configurator for nRF Desktop - updated
BSD library - added documentation about GNSS socket
Multiprotocol Service Layer - added documentation about Timeslot, Radio notifications, and TX Power Control
Near Field Communication (NFC) - added documentation about Type 2 Tag and Type 4 Tag, updated the Integration notes
Nordic Security Module - updated
Known issues¶
nRF9160¶
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)
From v1.2.0¶
The
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
CONFIG_POWER_OPTIMIZATION_ENABLE=y
.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.map
file to find the address of the_SEGGER_RTT
symbol 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.
nRF5¶
nRF5340¶
FOTA with the SMP Server Sample does not work.
nRF52820¶
The
CMakeLists.txt
file for developing applications that emulate nRF52830 on the nRF52833 DK is missing.As a workaround, create a
CMakeLists.txt
file in thencs/zephyr/boards/arm/nrf52833dk_nrf52820
folder with the following content:zephyr_compile_definitions(DEVELOP_IN_NRF52833) zephyr_compile_definitions(NRFX_COREDEP_DELAY_US_LOOP_CYCLES=3)
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)
Thread¶
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)
Zigbee¶
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)
Bluetooth Mesh¶
On nRF5340, only the SoftDevice Controller is supported for Bluetooth Mesh. (NCSDK-5580)
Common¶
Samples and applications¶
The build configuration consisting of 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.
west flash
andninja flash
only 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,build/hci_rpmsg
).
Crypto¶
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)
Build system¶
It is not possible to build and program Secure Partition Manager and the application individually. (from v1.2.0)
Zephyr¶
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.
Fixed known issues from nRF Connect SDK v1.2.0¶
nRF9160¶
The nRF9160: GPS sockets and SUPL client library sample stops working if SUPL client and SUPL client OS integration support is enabled, but the SUPL host name cannot be resolved. As a workaround, insert a delay (
k_sleep()
) of a few seconds after theprintf
on line 294 inmain.c
. (fixed)
Bluetooth Low Energy¶
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 DFU SMP sample, the
CONFIG_BT_SMP
configuration 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)
NFC¶
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)