nRF Connect SDK v1.4.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 Zigbee and Bluetooth Mesh protocols are supported for development in v1.4.0 for prototyping and evaluation. Support for production and deployment in end products is coming soon.

Highlights

  • Added production support for nRF52833 and nRF52840 for Thread, including multiprotocol operation with Bluetooth Low Energy

  • Added Network Co-Processor (NCP) architecture for Thread and Zigbee

  • Added development support for multiprotocol operation of Zigbee and Bluetooth Low Energy

  • Added support for nRF5340 Network Core DFU

  • Added the standalone Remote procedure call (nRF RPC) library with a simple sample for nRF5340

  • Azure IoT Hub and FOTA support for nRF9160

  • Low power UDP sample for nRF9160

  • Updates to nRF9160 Serial LTE modem application

  • New Bluetooth Mesh samples and models for light control

  • nRF Bluetooth LE Controller has been renamed to SoftDevice Controller

  • The standalone SoftDevice Controller library is now the default Bluetooth LE Controller for Bluetooth samples (except the Bluetooth Mesh samples)

Release tag

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

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:

    • Azure FOTA library - This library provides a way to parse Azure IoT Hub device twin messages to obtain firmware upgrade information and perform FOTA downloads.

    • Azure IoT Hub library - This library provides an API to connect to an Azure IoT Hub instance and interact with it.

    • nRF9160: Azure IoT Hub sample - This sample demonstrates the communication of an nRF9160-based device with an Azure IoT Hub instance.

    • nRF9160: Azure FOTA sample - This sample demonstrates how to perform an over-the-air firmware update of an nRF9160-based device using the Azure FOTA and Azure IoT Hub libraries.

    • nRF9160: AWS IoT sample - This sample demonstrates the communication of an nRF9160-based device with the AWS IoT message broker over MQTT.

    • nRF9160: UDP low power sample - This sample demonstrates the sequential transmission of UDP packets to a predetermined server identified by an IP address and a port.

    • nRF9160: Download client sample - This sample demonstrates how to download files over the Internet from HTTP(S) and CoAP(S) servers.

  • Updated:

    • AT command interface library:

      • Reimplemented the library to enable asynchronous handling of commands and reduce memory usage.

      • Updated all commands to only match OK or ERROR in the response if they are at the end (in case those strings are part of the response, like in certificate).

    • BSD library:

      • Updated to version 0.8.1. See the Changelog for detailed information.

    • CoAP utils library:

      • Added an optional addr parameter to the coap_init() function. The parameter is meant for socket binding.

    • Connectivity bridge application:

      • Added automatic re-enabling of UART RX upon errors.

      • Improved the handling of configuration file.

      • Added an option to configure Bluetooth device name.

    • Download client library:

      • Added CoAP block-wise transfer support, which can be enabled with CONFIG_COAP.

      • Updated functions that end with _connect() and _start() to parse complete URLs, with port and schema.

      • Removed port field in download_client_cfg. The port number can now be passed together with the URL.

      • Removed the CONFIG_DOWNLOAD_CLIENT_TLS Kconfig option. Now the choice between secure and non-secure HTTP or CoAP is determined by the schema, or by the security tag if the schema is missing.

      • Stopped using HTTP range requests when using HTTP, which improves bandwidth.

      • Updated the parsing of HTTP header fields to be case-insensitive.

      • Added support for Zephyr’s Shell.

      • Added fragment_size parameter to fota_download_start() to allow to specify download fragment size at run time.

    • FOTA download library:

    • LTE link controller library:

      • Updated to parse PSM configuration only when the device is registered to a network. This will help avoid confusing error messages.

      • Added API for setting eDRX Paging Time Window (PTW).

      • Added support for Release Assistance Indication (RAI).

      • Added lte_lc_deinit() function to the API. This function deinitializes the LTE LC module.

      • Reworked system mode handling as follows:

        • The preferred mode and optionally the fallback mode are now set through Kconfig.

        • The current mode is the mode read from the device and is changed using lte_lc_system_mode_set().

        • The target mode is the mode that is used when connecting to LTE network, that is when lte_lc_connect() or lte_lc_connect_async() is called. The network is initialized with the configurable (and preferred) system mode. The mode is changed when lte_lc_system_mode_set() is called or when connection establishment using preferred mode is unsuccessful and times out.

    • LwM2M carrier library:

      • Added the snapshot of the release version 0.10.0. See the Changelog for detailed information.

  • SUPL client and SUPL client OS integration library and nRF9160: A-GPS sample:

    • Renamed the sample from nRF Cloud A-GPS.

    • Added a common A-GPS interface for SUPL and nRF Cloud A-GPS service.

    • Added sending of service information after a successful connection to nRF Cloud has been made.

  • nRF9160: Asset Tracker application:

    • Added handling of sensor channel get commands received from nRF Cloud.

    • Added event handler for LTE link controller events.

    • Added the detection feature when there is no SIM card in the slot.

    • Added support for Bosch BSEC library 1.4.8.0 (see BME680: Integrated environmental sensor). This breaks compatibility with older versions of the library.

    • Added a timestamp for sensor or cloud data, or both.

    • Added the CONFIG_UI_LED_PWM_FREQUENCY Kconfig option for setting the LED PWM frequency.

  • nRF9160: GPS sockets and SUPL client library sample:

    • Updated the sample to allow disabling the COEX0 pin when using the external antenna to lower noise from the LNA.

    • Updated the frequency range of the external GPS amplifier.

    • Added an option to give GPS prioritized radio access.

    • Added functionality that increases the GPS priority when GPS is blocked for more than a configurable amount of time.

  • nRF9160: LwM2M Client sample:

    • Fixed an invalid Kconfig option (CONFIG_FOTA_ERASE_PROGRESSIVELY) that prevented progressive erase during FOTA.

    • Added overlay-nbiot.conf with fine-tuned CoAP/LwM2M parameters for NB-IoT networks.

    • Fixed a bug where a FOTA socket was not closed after the download (PULL mode).

    • Added bootstrap procedure support to the sample.

    • Enabled the usage of the DFU target library for firmware updates, which allows to update both the application and the modem firmware.

  • nRF9160: Serial LTE modem application:

    • Added support for the MQTT username and password.

    • Added reading of status of TCP proxy server/client when it is not started or connected yet.

    • Added support for partial reception of RX data (in TCP/IP proxy).

    • Added AT command #XSLMUART to change the UART baud rate.

    • Added data mode support for TCP/UDP proxy client/server.

    • Added support for the HTTP client service.

    • Added FOTA support.

    • Added TLS server support.

  • nRF9160: Simple MQTT sample:

    • Added TLS support to the sample.

  • nRF Cloud library:

    • Added saving of a valid session flag to settings after all subscriptions have completed, so that the persistent session is only used when the flag is valid.

    • Replaced CONFIG_CLOUD_PERSISTENT_SESSIONS usage with Zephyr’s CONFIG_MQTT_CLEAN_SESSION.

    • Made the MQTT client ID prefix configurable.

    • Added an option to set send time-out for the socket used by nRF Cloud library (CONFIG_NRF_CLOUD_SEND_TIMEOUT).

nRF5

The following changes are relevant for the nRF52 and nRF53 Series.

nRF5340 SoC

Bluetooth Low Energy

SoftDevice Controller (renamed from nRF Bluetooth LE Controller)

See the Changelog for detailed information.

  • Renamed nRF Bluetooth LE Controller to SoftDevice Controller. API was updated accordingly.

  • The standalone SoftDevice Controller library is now the default Bluetooth LE Controller for Bluetooth samples except the Bluetooth Mesh samples.

  • Implemented the remaining mandatory HCI commands to make the controller conformant to HCI standards.

  • Reduced the image size when linking the final binary. Now, only the requested features are included. See sdc_support_adv() and similar APIs for details.

nRF Desktop

  • Added support for MCUboot that allows to use the following features:

  • Dongle updates:

    • Added support for connecting to multiple devices of the same type.

    • Added a configuration where the nRF52840 Dongle stores 6 bonds and allows up to 4 simultaneous connections.

    • Added support for one HID-class USB device instance per bonded peripheral device. The host can distinguish a source of a HID report.

  • Reworked the Configuration channel module and updated the protocol:

    • Added device identification with HW ID.

    • Improved flow control for faster data transmission.

  • Added USB wake-up support in the USB state module.

  • Added Quality of Service module that works on a peripheral device. This module provides information about Bluetooth LE channel quality on peripherals.

  • Bugfixes:

    • [DESK-1087] Fixed invalid peer counting in LED state module.

    • [DESK-1084] Fixed reset handling in USB state module when in standby.

    • [DESK-1072] Fixed a bug where reports were not working on USB mouse after host reboot.

    • [DESK-1067] Fixed a bug where triggering erase advertising when mouse was sleeping would cause a module error.

    • [DESK-1014] Fixed a bug where a device would not go to idle if there was nothing to schedule.

    • [DESK-1011] Fixed an unhandled USB event.

    • [DESK-1008] Fixed a non-compliant report descriptor on dongle.

    • [DESK-974] Fixed a bug where boot reports were not sent.

    • [DESK-973] Fixed a bug where Dongle - Keyboard connection would deteriorate badly with split Link Layer.

    • [DESK-971] Fixed a bug where user was unable to bond keyboard with a macOS host again.

    • [DESK-969] Fixed a bug where the bond switching in Gaming Mouse would stop working.

    • [DESK-967] Fixed a bug where Configuration channel module would impact the report rate as it should use write without response for sending data to peripheral.

    • [DESK-965] Fixed a bug where direct advertising to non-Zephyr centrals would not work.

Bluetooth Mesh

nRF IEEE 802.15.4 radio driver

Thread

  • Added:

    • Production support for nRF52833 and nRF52840 DKs.

    • Dynamic multiprotocol support with Bluetooth LE.

    • Support for Network Co-Processor (NCP) architecture.

    • Support for Vendor hooks.

    • Thread: NCP sample - This sample demonstrates the usage of OpenThread Network Co-Processor architecture inside the Zephyr environment. It has the following characteristics:

      • Extendable with vendor hooks

      • Hardware cryptography acceleration support

      • Support for Spinel logging as a default logger backend

      • UART hardware flow control (HWFC) enabled by default

    • Initial support for Thread 1.2 functionalities related to SED implementation and reduction of power consumption.

  • Enabled Thread v1.1 certification by inheritance. For more information about certification, see Thread certification.

  • Updated:

    • Thread: CLI sample:

    • Thread: CoAP Client sample:

      • Switched to RNG peripheral as an entropy source.

      • Optimized power in SED mode.

      • Added hardware cryptography acceleration support.

      • Added multiprotocol support.

      • Enabled UART HWFC by default.

    • Thread: CoAP Server sample:

      • Switched to RNG peripheral as an entropy source.

      • Added hardware cryptography acceleration support.

      • Enabled UART HWFC by default.

Zigbee

Common

The following changes are relevant for all device families.

Crypto

  • Added:

    • nRF Oberon v3.0.7. See the Changelog - nRF Oberon for detailed information.

    • nrf_cc3xx_platform v0.9.4, with the following highlights:

      • Renamed include files from nrf_cc310_platform_xxxx.h to nrf_cc3xx_platform_xxxx.h.

      • Added experimental support for Arm CryptoCell CC312 available on nRF5340 devices.

      • Added APIs to store cryptographic keys in the KMU hardware peripheral available on nRF9160 and nRF5340 devices. For details, see crypto/nrf_cc310_platform/include/nrf_cc3xx_platform_kmu.h in sdk-nrfxlib.

      • Added APIs to generate CSPRNG. For details, see crypto/nrf_cc310_platform/include/nrf_cc3xx_platform_ctr_drbg.h in sdk-nrfxlib.

      See the Changelog - nrf_cc3xx_platform for detailed information.

    • nrf_cc3xx_mbedcrypto version v0.9.4, with the following highlights:

      • Added experimental support for Arm CryptoCell CC312 available on nRF5340 devices.

      • Added APIs to derive cryptographic key material from KDR on nRF52840 and nRF9160 devices. For details, see crypto/nrf_cc310_mbedcrypto/include/mbedtls/cc3xx_kmu.h in sdk-nrfxlib.

      • Added APIs to use keys stored in KMU on nRF9160 and nRF5340 devices. For details, see crypto/nrf_cc310_mbedcrypto/include/mbedtls/cc3xx_kmu.h in sdk-nrfxlib.

      See the Changelog - nrf_cc3xx_mbedcrypto for detailed information.

    • RNG support in nRF5340 application core (using Secure Partition Manager’s Secure Services and nrf_cc312_platform library).

  • Updated:

    • Renamed all APIs with cc310 in the name to cc3xx because of added support for CC312. This change also affects Nordic Security Module’s Kconfig options, where _CC310_ was replaced with _CC3XX_ in option names. The nrf_cc310_bl still uses the cc310 naming scheme.

    • Updated Nordic Security Module to use mbedTLS v2.23.0.

    • Disabled the CMAC glue layer, as it was causing issues. Now CMAC is provided by a single selected backend (through Kconfig).

Date-Time

Drivers

  • Added:

    • Low power UART driver - This driver implements the standard asynchronous UART API. The following samples related to this driver were also added:

NFC

  • Added:

    • NFC TNEP Connection Handover service - This library handles the exchange of Connection Handover Messages between an NFC Forum Tag and an NFC Forum Poller device.

    • Bluetooth: Central NFC pairing sample - This sample demonstrates Bluetooth LE out-of-band pairing using an NFC Reader ST25R3911B and the NFC TNEP protocol.

    • Bluetooth: NFC pairing sample - This sample demonstrates Bluetooth LE out-of-band pairing using an NFC tag and the NFC TNEP protocol.

  • Updated NFC samples to support non-secure domain builds for nRF5340.

nrfx

See the Changelog for nrfx 2.3.0 for detailed information.

MCUboot

  • Updated MCUboot to facilitate using it as the second stage bootloader:

    • Added minimal configuration overlay file for MCUboot that makes it fit within 16 kB when MCUboot is used as the second stage bootloader. Updated documentation with specific instructions on how and when to use this configuration.

sdk-mcuboot

The sdk-mcuboot fork in nRF Connect SDK contains all commits from the upstream MCUboot repository up to and including 5a6e18148d, plus some nRF Connect SDK specific additions.

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

  • Fixed an issue where after erasing an image, an image trailer might be left behind.

  • Added a CONFIG_BOOT_INTR_VEC_RELOC option to relocate interrupts to application.

  • Fixed single image compilation with serial recovery.

  • Added support for single-image applications (see CONFIG_SINGLE_IMAGE_DFU).

  • Added a CONFIG_BOOT_SIGNATURE_TYPE_NONE option to disable the cryptographic check of the image.

  • Reduced the minimum number of members in SMP packet for serial recovery.

  • Introduced direct execute-in-place (XIP) mode (see CONFIG_BOOT_DIRECT_XIP).

  • Fixed kramdown CVE-2020-14001.

  • Modified the build system to let the application use a private key that is located in the user project configuration directory.

  • Added support for nRF52840 with ECC keys and CryptoCell.

  • Allowed to set VTOR to a relay vector before chain-loading the application.

  • Allowed using a larger primary slot in swap-move. Before, both slots had to be the same size, which imposed an unused sector in the secondary slot.

  • Fixed bootstrapping in swap-move mode.

  • Fixed an issue that caused an interrupted swap-move operation to potentially brick the device if the primary image was padded.

  • Various fixes, enhancements, and changes needed to work with the latest Zephyr version.

Build system

  • Updated Partition Manager:

    • Added RAM partitioning through the partition manager.

    • Added the ncs_add_partition_manager_config function that allows out-of-tree users to specify partition manager configuration files.

    • Added a warning if no static partition manager configuration is provided when one image (or more) is not built from source in a multi-image build.

  • Enabled choosing a build strategy for Zephyr’s Bluetooth: HCI RPMsg sample when it is built as a child image. See Multi-image builds for details.

  • Improved multi-core builds by disassociating domain names from board names.

  • Bugfixes:

    • Fixed a bug where merged_domains.hex would be generated in single domain builds.

    • Fixed a bug where zephyr/merged.hex would not be updated when rebuilding a project.

Zephyr

sdk-zephyr

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

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

git log --oneline manifest-rev ^7a3b253ced

The current nRF Connect SDK release is based on Zephyr v2.4.0. See the Zephyr v2.4.0 release notes for the list of changes.

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

    • NPROTO_AT

    • NPROTO_PDN

    • NPROTO_DFU

    • SOCK_MGMT

    • SO_RCVTIMEO

    • SO_BINDTODEVICE

    • SOL_PDN

    • SOL_DFU

    • SO_PDN_CONTEXT_ID

    • SO_PDN_STATE

    • SOL_DFU

    • SO_DFU_ERROR

    • TLS_SESSION_CACHE

    • SO_SNDTIMEO

    • MSG_TRUNC

    • SO_SILENCE_ALL

    • SO_IP_ECHO_REPLY

    • SO_IPV6_ECHO_REPLY

  • Added support for enabling TLS caching when using the MQTT library. See TLS_SESSION_CACHE.

  • Updated the nrf9160ns DTS to support accessing the CryptoCell CC310 hardware from non-secure code.

Documentation

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

nRF9160

  • Working with nRF9160 DK - updated the Band lock section; also updated with information about certification of different modem firmware versions and added a link to nRF9160 compatibility matrix

  • nRF9160: Serial LTE modem - updated and extended with testing instructions and AT command reference

  • nRF9160: LTE Sensor Gateway - updated with information about how to use low power UART for communicating with the controller

  • nRF9160: Asset Tracker - added a note about external antenna performance and updated the dependencies section with the listing of modules abstracted using LwM2M carrier OS abstraction layer

  • nRF9160: LwM2M Client - updated with sections about DTLS support and bootstrap support

  • nRF9160: LwM2M carrier - updated the dependencies section with the listing of modules abstracted via LwM2M carrier OS abstraction layer

  • nRF9160: Simple MQTT - updated with configuration and testing sections

nRF5340

  • Peripheral CPU DFU (PCD) library - added to the DFU library to provide functionality for transferring DFU images from the application core to the network core on the nRF5340 SoC

  • Working with nRF53 Series - updated with information about network core (FOTA) upgrades for nRF5340 SoC

nRF Desktop

Bluetooth Mesh

Thread

Zigbee

Libraries

nrfxlib

Known issues

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