Changes in nRF Connect SDK v1.4.99¶
The most relevant changes that are present on the master branch of the nRF Connect SDK, as compared to the latest release, are tracked in this file.
This file is a work in progress and might not cover all relevant changes.
The following sections provide detailed lists of changes by component.
The following changes are relevant for the nRF52 and nRF53 Series.
esbsubystem - Removed support for older SoC revision workarounds.
Removed support for nRF52832 revision 1 workarounds for Errata 102, Errata 106, and Errata 107.
Removed support for nRF52832 revision 2 workarounds for Errata 143.
esbsubsystem - Added support for nRF5340 SoC (CPUNET) in ESB subsystem.
bl_bootlibrary - Disabled clock interrupts before booting the application. This change fixes an issue where the Immutable bootloader sample would not be able to boot a Zephyr application on the nRF5340 SoC.
dfu_targetcode up one directory from
Extracted stream flash functionality from
dfu_target_stream_flashto facilitate code re-use for other
dfu_targetswhich writes large objects to flash.
New sample nRF9160: HTTP modem delta update which shows how to add modem delta upgrade support to an application.
Moved the nRF9160: HTTP application update sample from
Optimized ROM and RAM used by Thread samples.
zcl pingcommand in the Zigbee shell library.
New libraries there were extracted from common code under
Modem library - BSD library has been renamed to
nrf_modem(Modem library) and
Download client library:
Re-introduced optional TCP timeout (enabled by default) on the TCP socket used for the download. Upon timeout on a TCP socket, the HTTP download will fail and the
ETIMEDOUTerror 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.
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).
FOTA download library:
Enabled SNI TLS extension for HTTPS downloads.
nRF Cloud library:
AWS Jobs replaced by nRF Cloud FOTA as the FOTA mechanism for devices connected to nRF Cloud.
nRF9160: Asset Tracker application:
Updated to use the new FOTA (fota_v2) based on nRF Cloud.
The following changes are relevant for all device families.
See the changelog for each library in the nrfxlib documentation for the most current information.
nrf_cc3xx_platform v0.9.5, with the following highlights:
Added correct TRNG characterization values for nRF5340 devices.
See the Changelog - nrf_cc3xx_platform for detailed information.
nrf_cc3xx_mbedcrypto version v0.9.5, with the following highlights:
Built to match the nrf_cc3xx_platform v0.9.5 including correct TRNG characterization values for nRF5340 devices.
See the Changelog - nrf_cc3xx_mbedcrypto for detailed information.
Rewrote the Nordic Security Module’s library stripping mechanism 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.
Added a simple sample that demonstrates how to integrate TF-M in an application.
The MCUboot fork in nRF Connect SDK (
sdk-mcuboot) contains all commits from the upstream MCUboot repository up to and including
c74c551ed6, plus some nRF Connect SDK specific additions.
The following list summarizes the most important changes inherited from upstream MCUboot:
Added hardening against hardware level fault injection and timing attacks. See
CONFIG_BOOT_FIH_PROFILE_HIGHand 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
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
flash_area_read_is_empty()port implementation function.
Updated the ARM core configuration to only be initialized when selected by the user. See the
Allowed the final data chunk in the image to be unaligned in the serial-recovery protocol.
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
Fixed the argument handling of
The mcumgr library fork in nRF Connect SDK (
sdk-mcumgr) contains all commits from the upstream mcumgr repository up to and including snapshot
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 (
Added support for invoking shell commands (shell management) from the mcumgr command line.
The Zephyr fork in nRF Connect SDK (
sdk-zephyr) contains all commits from the upstream Zephyr repository up to and including
35264cc214fd, 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
git log --oneline 35264cc214fd ^v2.4.0-ncs1
For a complete list of nRF Connect SDK specific commits, run:
git log --oneline manifest-rev ^35264cc214fd
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:
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 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.
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 gathering basic thread runtime statistics.
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.
k_busy_wait()to return immediately on a zero time-out, and improved accuracy on nonzero time-outs.
Removed the following deprecated kernel APIs:
Removed the following deprecated system clock APIs:
k_timer_user_data_get()to take a
const struct k_timer *timerinstead of a non-
Removed the legacy DT macros.
Started exposing dependency ordinals for walking the dependency hierarchy.
Added documentation for the DTS bindings.
Improved the default routine that provides sampling intervals, to allow intervals shorter than 1 millisecond.
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 non-scannable Extended Advertising with 255 byte PDU (without chaining).
Added experimental support for non-connectable scannable Extended Advertising with 255 byte PDU (without chaining).
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.
BT_LE_ADV_OPT_DIR_ADDR_RPAoption. It must now be set when advertising towards a privacy-enabled peer, independent of whether privacy has been enabled or disabled.
Added a destroy callback to the
bt_gatt_indicate_paramsstruct, 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.
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.
Modified the nRF QSPI NOR driver so that it supports also nRF53 Series SoCs.
Updated the nRF5 IEEE 802.15.4 driver to version 1.9.
Added a driver interface and implementation for PWM-driven LEDs.
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.
nrfx_power-related fixes to reduce power consumption.
Introduced a new regulator driver infrastructure.
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.
Replaced the usage of
k_timerin 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:
Added support for SPI emulators.
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.
Added support for DNS Service Discovery.
Deprecated legacy TCP stack (TCP1).
Added multiple minor TCP2 bugfixes and improvements.
Added network management events for DHCPv4.
Made the endpoint name length configurable with Kconfig (see
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.
Removed obsolete flash driver from the OpenThread platform.
Added new OpenThread options:
Fixed mutex protection on
Switched the library to use
zsock_*socket functions instead of POSIX names.
Enabled Maximum Fragment Length (MFL) extension on TLS sockets.
TLS_ALPN_LISTsocket option for TLS sockets.
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.
Removed SETTINGS_USE_BASE64 support, which has been deprecated for more than two releases.
Enabled FCB to work with non-0xff erase value flash.
FS_MOUNT_FLAG_NO_FORMATflag 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.
Updated the FS API to not perform a runtime check of a driver interface when the
CONFIG_NO_RUNTIME_CHECKSoption is enabled.
Ensured that shields can be placed in other BOARD_ROOT folders.
Added basic support for Clang 10 with x86.
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.
abort()function to minimal libc.
Updated the ring buffer to allow using the full buffer capacity instead of forcing an empty slot.
Added a feature for post-mortem analysis to the tracing library.
Added STP transport and raw data output support for systrace.
CONFIG_MBEDTLS_MEMORY_DEBUGoption 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 include support for the nRF5340 and nRF9160 platforms.
Added initial LoRaWAN support.
west flashsupport for
nrfjprogto fail if a HEX file has UICR data and
--erasewas not specified.