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 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.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 Connect for Cloud to be used with the nRF9160 SiP. The nRF9160: GNSS sample demonstrates how to use the library.

    • 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:

    • 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:

  • 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.

  • BSD library:

    • 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

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:

See the Zigbee user guide to get started.

Bluetooth Low Energy

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

See the Bluetooth mesh user guide to get started.

Enhanced ShockBurst (ESB)

  • Renamed the subsystem to esb and moved it from subsys/enhanced_shockburst to subsys/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

Immutable bootloader

  • Exposed 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:

    • Renamed provision.h and provision_flash.h to bl_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)

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

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:

Known issues

nRF9160

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

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 the ncs/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

Common

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.

  • west flash and ninja 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

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

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 SMP Client 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)

MCUboot

  • The MCUboot recovery feature using the USB interface does not work. (fixed)