nRF Connect SDK v1.5.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 TF-M, 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 are now supported for production. Wireless protocol stacks and libraries may indicate support for development or support for production for different series of devices based on verification and certification status. See the release notes and documentation for those protocols and libraries for further information.

Highlights

  • Introduced support for nRF5340 DK.

  • Added minimal configuration to Bluetooth: Peripheral UART sample for nRF52810 and nRF52811 SoCs.

  • All the models in Bluetooth Mesh Models v1.0.x are now supported for development.

  • Added experimental support for Trusted Firmware-M (TF-M) for nRF5340 and nRF9160.

  • Integrated Apple HomeKit ecosystem support into the nRF Connect SDK.

  • Integrated Project Connected Home over IP, which is supported for development.

  • Added production support for nRF5340 for Thread in single protocol configuration, and development support for Thread in multiprotocol operation with Bluetooth LE.

  • Added development support for nRF5340 for Zigbee, including multiprotocol operation with Bluetooth LE.

  • Added nRF9160: Asset Tracker v2 as an ultra-low-power, real-time configurable application.

  • Implemented major updates to Modem library (previously called BSD library).

  • Added support for full modem DFU for nRF9160, over-the-air (OTA) and via UART.

  • Introduced support for Edge Impulse machine learning models.

Release tag

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

  • mfw_nrf9160_1.1.4

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:

  • Updated:

    • nRF9160: Asset Tracker application - Updated to use the new FOTA (fota_v2) based on nRF Connect for Cloud.

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

      • Fixed the unsolicited result code (URC) message format following the 3GPP TS27.007 specification.

      • Fixed a bug that occurred when the size of an AT command was exactly the maximum buffer size.

      • Optimized SRAM usage.

      • Disabled external XTAL usage for UARTE by default.

      • Added a recovery mechanism for cases where a UART frame error happens.

      • Enhanced data mode support for TCP/UDP proxy.

    • nRF9160: LwM2M Client sample - Added handling of network failures. The sample now tries to reconnect to the LTE network when a failure is reported.

    • nRF9160: nRF CoAP Client sample - Updated the default server URL to californium.eclipseprojects.io.

    • nRF9160: Simple MQTT sample - Updated the default server URL to mqtt.eclipseprojects.io.

    • Extracted the certificate, button, and LED handling functionality from nRF9160: HTTP application update sample to samples/nrf9160/http_update/common, to share them with nRF9160: HTTP modem delta update sample.

    • Moved the nRF9160: HTTP application update sample from samples/nrf9160/http_application_update/ to samples/nrf9160/http_update/application_update.

    • Download client library:

      • Reintroduced the optional TCP timeout (enabled by default) on the TCP socket that is used for the download. Upon timeout on a TCP socket, the HTTP download will fail and the ETIMEDOUT error 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.

    • FOTA download library - Enabled SNI TLS extension for HTTPS downloads.

    • nRF Cloud library:

    • AT command parser library - The library can now parse AT command strings with negative numbers in the range supported by the int32_t type.

    • Azure IoT Hub library - Improved the internal connection state handling.

    • LTE link controller library - Added support for manufacturer-specific default eDRX/PSM values.

    • LwM2M carrier library - Updated to v0.10.2. See Changelog for details.

  • Removed:

    • USB-UART bridge sample

DFU target

  • Added:

    • New target dfu_target_full_modem, which is used for full modem firmware updates. This requires an external flash memory of a minimum of 2 MB to work.

  • Updated:

    • Renamed dfu_target_modem to dfu_target_modem_delta.

    • Moved the dfu_target code from subsys/dfu to subsys/dfu/dfu_target.

    • Extracted the stream flash memory functionality from dfu_target_mcuboot to dfu_target_stream_flash to facilitate code reuse for other dfu_targets, which write large objects to the flash memory.

nRF5

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

nRF52832 SoC

  • Updated:

    • Removed support for nRF52832 revision 1 workarounds in Enhanced ShockBurst for Errata 102, Errata 106, and Errata 107.

nRF5340 SoC

Front-end module (FEM)

Bluetooth LE

Project Connected Home over IP (Project CHIP)

Bluetooth Mesh

  • Added:

    • Time client model callbacks for all message types.

    • Support for the nRF52833 DK in the Bluetooth: Mesh light and Bluetooth: Mesh light switch samples.

    • Support for the following mesh models:

    • Scene Current/Target Scene Get API (Gets the current/target scene that the scene server is set to).

    • Sensor Client All Get API (Reads sensor data from all sensors on a server).

    • Generic Client Properties Get API (Gets the list of Generic Client Properties on the bound server).

  • Updated:

    • Light Lightness Server to disable the light control server when manual control has taken effect. This follows the Mesh Model Specification section 6.2.3.

    • Deleting a non-existing scene from the Scene Server returns success, instead of not found.

    • Removed the Light CTL setup server publications, which was not in use.

    • Disabled light control on all changes in lightness.

    • Added model reset callbacks so that the Mesh stack can be reset.

    • Implemented missing Light Linear Level Get/Set API functions.

    • Fixed several bugs.

Apple HomeKit Ecosystem support

  • Integrated HomeKit Accessory Development Kit (ADK) v5.1. MFi licensees can get access to the HomeKit repository by contacting us via Nordic DevZone private ticket.

  • Enabled Thread certification by inheritance.

  • HomeKit samples now use qualified Bluetooth LE libraries.

nRF IEEE 802.15.4 radio driver

  • Production support for nRF5340 in single protocol configuration.

  • Development support for nRF5340 in multiprotocol configuration (IEEE 802.15.4 and Bluetooth LE).

  • Added PA/LNA GPIO interface support for RF front-end modules (FEM) in the radio driver. The front-end module feature in the radio driver currently has support for the SKY66112-11 device, but does not support nRF21540 revision 1 or older.

Thread

  • Added:

    • Production support for nRF5340 in single protocol configuration.

    • Development support for nRF5340 in multiprotocol configuration (Thread and Bluetooth LE).

    • Support for nRF5340 for all samples except the Thread: NCP sample.

    • PA/LNA GPIO interface support for RF front-end modules (FEM) in Thread. The front-end module feature in Thread currently has support for SKY66112-11 device, but does not support nRF21540 revision 1 or older.

  • Updated:

    • Optimized ROM and RAM used by Thread samples.

    • Disabled Hardware Flow Control on the serial port in Thread: CoAP Client and Thread: CoAP Server samples.

    • Thread 1.1 pre-built libraries:

      • Included the latest OpenThread changes.

      • Added libraries for nRF5340 platform.

      • Libraries will be certified after the release in multiple feature variants (certification IDs and status can be found in the compatibility matrices in the Nordic Semiconductor Infocenter).

Zigbee

nRF Desktop

Added selective HID report subscription in the USB state. This allows the USB HID instance on the peripheral to subscribe only for a subset of HID reports. If USB does not subscribe for the given HID report, Bluetooth LE HIDs can still receive it.

Common

The following changes are relevant for all device families.

Edge Impulse

Trusted Firmware-M

  • Added a simple sample TF-M Hello World that demonstrates how to integrate TF-M in an application.

  • Enabled the use of platform code that resides outside of the Trusted Firmware-M repository. This allows configurable memory partitioning in the nRF Connect SDK.

  • Added support for running the nRF9160: Download client sample with TF-M.

Partition Manager

  • Changed the naming convention for partition names in pm.yml and pm_static.yml.

  • Updated Partition Manager to prevent users from using partition names in pm.yml and pm_static.yml that match the names of the child images that define them in CMakeLists.txt:

    • If the invalid naming scheme is used in pm.yml files, Partition Manager will now fail the builds.

    • If the invalid naming scheme is used in pm_static.yml files, the build will instead print a warning prompting the user to change this, if possible.

  • Renamed b0 and b0n container partitions to b0_container and b0n_container, respectively.

  • Renamed b0_image and b0n_image image partitions to appropriately match their child image name, b0 and b0n, respectively.

    Migration notes: While in development, you should rename partitions appropriately. You can still build firmware updates under the invalid scheme, but they will still be built with the improper sizes for the related partitions.

sdk-nrfxlib

See the changelog for each library in the nrfxlib documentation for additional information.

Modem library
  • BSD library has been renamed to nrf_modem (Modem library) and nrf_modem_lib (glue).

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

Crypto
  • Added:

    • nrf_cc3xx_platform v0.9.7, with the following highlights:

      • Fixed an issue with mutex slab allocation in Zephyr RTOS platform file.

      • The library is built against mbed TLS v2.24.0.

      See the Changelog - nrf_cc3xx_platform for detailed information.

    • Added nrf_cc3xx_mbedcrypto v0.9.7, with the following highlights:

      • Fixed issues where mbedtls_rsa_complete was not able to deduce missing parameters.

      • Fixed an issue with calculating the correct salt length for certain combinations of RSA key and digest sizes.

      • Added missing function: mbedtls_ecp_write_key.

      • The library is built against mbed TLS v2.24.0.

      See the Changelog - nrf_cc3xx_mbedcrypto for detailed information.

    • Added nrf_oberon v3.0.8, with the following highlights:

      • Added APIs for doing ECDH calculation using secp256r1 in incremental steps.

      • Added ocrypto_ APIs for SHA-224 and SHA-384.

      • Added ocrypto_ APIs for pbkdf2 for SHA-1 and SHA-256.

      • The library is built against mbed TLS v2.24.0.

      See the Changelog - nRF Oberon for detailed information.

  • Updated:

    • Nordic Security Module:

      • Added Kconfig options for TLS/DTLS and x509 certificates.

      • Added Kconfig options for PK and PK_WRITE (CONFIG_MBEDTLS_PK_C and CONFIG_MBEDTLS_PK_WRITE_C).

      • Rewrote the stripping mechanism of the library 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.

SoftDevice Controller

See the Changelog for detailed information.

  • Renamed and reconfigured the libraries. Following are the new names of the libraries:

    • libsoftdevice_controller_peripheral.a

    • libsoftdevice_controller_central.a

    • libsoftdevice_controller_multirole.a

  • All libraries are now compatible with all the platforms within a given device family. The smallest sized library fitting the use case of the application will automatically be selected. In most cases, the final binary size is reduced.

Multiprotocol Service Layer

See the Changelog for detailed information.

  • Added a new signal MPSL_TIMESLOT_SIGNAL_OVERSTAYED to the MPSL timeslot. This signal is given to the application when the closing of timeslot session is delayed beyond a limit.

  • Added a new clock configuration option skip_wait_lfclk_started in mpsl_clock_lfclk_cfg_t, which does not wait for the start of Low Frequency Clock.

  • Added support for RF front-end modules (FEM) in MPSL. The front-end module feature in MPSL currently supports the SKY66112-11 device, but does not support nRF21540 revision 1 or older.

nrfx

See the Changelog for nrfx 2.4.0 for detailed information.

MCUboot

sdk-mcuboot

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

The code for integrating MCUboot into nRF Connect SDK is located in ncs/nrf/modules/mcuboot.

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

  • Bootloader:

    • Added hardening against hardware level fault injection and timing attacks. See CONFIG_BOOT_FIH_PROFILE_HIGH and 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 CONFIG_SINGLE_APPLICATION_SLOT option.

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

    • Removed 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 CONFIG_MCUBOOT_CLEANUP_ARM_CORE option.

    • Allowed the final data chunk in the image to be unaligned in the serial-recovery protocol.

    • Updated the CONFIG_BOOT_DIRECT_XIP_REVERT option to be valid only in xip-mode.

    • Added an offset parameter to the tinycrypt ctr mode so that it can be properly used as a streaming cipher.

    • Configured the bootloader to use a minimal CBPRINTF (CONFIG_CBPRINTF_NANO) implementation.

    • Configured logging to use CONFIG_LOG_MINIMAL by default.

    • Fixed a vulnerability with nokogiri<=1.11.0.rc4.

    • Introduced a bootutil_public library that contains code common to MCUboot and the DFU application. See CONFIG_MCUBOOT_BOOTUTIL_LIB.

  • Image tool:

    • 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 --confirm to imply --pad.

    • Fixed the argument handling of custom_tlvs.

    • Added support for setting a fixed ROM address in the image header.

Mcumgr

The mcumgr library contains all commits from the upstream mcumgr repository up to and including snapshot 74e77ad08.

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 (MGMT_ERR_EBADSTATE).

  • Added support for invoking shell commands (shell management) from the mcumgr command line.

  • Added optional verification of an uploaded direct-xip binary, which will reject any binary that cannot boot from the base address of the offered upload slot. This verification can be enabled through CONFIG_IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT.

Zephyr

sdk-zephyr

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

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

git log --oneline manifest-rev ^ff720cd9b343

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:

  • Architectures:

    • 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 inline assembly code in Cortex-M system calls.

  • Boards:

    • Added support for board versioning. With this concept, multiple board revisions can now share a single folder and board name.

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

  • Kernel:

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

    • Added support for aligned allocators.

    • Added support for gathering basic thread runtime statistics.

    • Removed the following deprecated kernel APIs:

      • k_enable_sys_clock_always_on()

      • k_disable_sys_clock_always_on()

      • k_uptime_delta_32()

      • K_FIFO_INITIALIZER

      • K_LIFO_INITIALIZER

      • K_MBOX_INITIALIZER

      • K_MEM_SLAB_INITIALIZER

      • K_MSGQ_INITIALIZER

      • K_MUTEX_INITIALIZER

      • K_PIPE_INITIALIZER

      • K_SEM_INITIALIZER

      • K_STACK_INITIALIZER

      • K_TIMER_INITIALIZER

      • K_WORK_INITIALIZER

      • K_QUEUE_INITIALIZER

    • Removed the following deprecated system clock APIs:

      • __ticks_to_ms()

      • __ticks_to_us()

      • sys_clock_hw_cycles_per_tick()

      • z_us_to_ticks()

      • SYS_CLOCK_HW_CYCLES_TO_NS64()

      • SYS_CLOCK_HW_CYCLES_TO_NS()

    • Removed the deprecated CONFIG_LEGACY_TIMEOUT_API option. All time-outs must now be specified using the k_timeout_t type.

    • Updated k_timer_user_data_get() to take a const struct k_timer *timer instead of a non-const pointer.

    • Added a K_DELAYED_WORK_DEFINE macro.

    • Added a CONFIG_MEM_SLAB_TRACE_MAX_UTILIZATION option. If enabled, k_mem_slab_max_used_get() can be used to get a memory slab’s maximum utilization in blocks.

    • Bug fixes:

      • Fixed a race condition between k_queue_append() and k_queue_alloc_append().

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

      • Updated k_busy_wait() to return immediately on a zero time-out, and improved accuracy on nonzero time-outs.

      • The idle loop no longer unlocks and locks IRQs. This avoids a race condition; see Zephyr issue 30573.

      • An arithmetic overflow that prevented long sleep times or absolute time-outs from working properly has been fixed; see Zephyr issue #29066.

      • A logging issue where some kernel debug logs could not be removed was fixed; see Zephyr issue #28955.

  • Devicetree:

    • Removed the legacy DT macros.

    • Started exposing dependency ordinals for walking the dependency hierarchy.

    • Added documentation for the DTS bindings.

    • Added the UICR and FICR peripherals to the devicetree.

    • Changed the interrupt priorities in devicetree for Nordic Semiconductor devices to default to NRF_DEFAULT_IRQ_PRIORITY instead of hard-coded values.

  • Drivers:

    • Deprecated the DEVICE_INIT() macro. Use DEVICE_DEFINE instead.

    • Introduced macros (DEVICE_DT_DEFINE and related ones) that allow defining devices using information from devicetree nodes directly and referencing structures of such devices at build time. Most drivers have been updated to use these new macros for creating their instances.

    • Deprecated the DEVICE_AND_API_INIT() macro. Use DEVICE_DEFINE or DEVICE_DT_INST_DEFINE instead.

    • ADC:

      • Improved the default routine that provides sampling intervals, to allow intervals shorter than 1 millisecond.

      • Reworked, extended, and improved the adc_shell driver to make testing an ADC peripheral simpler.

      • Introduced the adc_sequence_options::user_data field.

    • Bluetooth Controller:

      • 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 scannable Extended Advertising with 255 byte PDU (without chaining and privacy support).

      • Added experimental support for connectable non-scannable Extended Advertising with 255 byte PDU (without chaining and privacy support).

      • Added experimental support for non-connectable non-scannable Extended Advertising with 255 byte PDU (without chaining and privacy support).

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

    • Bluetooth HCI:

      • Added support for ISO packets to the RPMsg driver.

      • Added the possibility of discarding advertising reports to avoid time-outs in the User Channel, STM32 IPM, and SPI based drivers.

    • Bluetooth Host:

      • Added an API to unregister scanner callbacks.

      • Fixed an issue where ATT activity after the ATT time-out expired led to invalid memory access.

      • Added support for LE Secure connections pairing in parallel on multiple connections.

      • Updated the BT_LE_ADV_OPT_DIR_ADDR_RPA option. It must now be set when advertising towards a privacy-enabled peer, independent of whether privacy has been enabled or disabled.

      • Updated the signature of the bt_gatt_indicate_func_t callback type by replacing the attr pointer with a pointer to the bt_gatt_indicate_params struct that was used to start the indication.

      • Added a destroy callback to the bt_gatt_indicate_params struct, 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.

    • Clock control:

      • Changed the definition (parameters and return values) of the API function clock_control_async_on().

      • Added support for the audio clock in nRF53 Series SoCs.

      • Added missing handling of the HFCLK192M_STARTED event in nRF53 Series SoCs.

    • Counter:

      • Excluded selection of nRF TIMER0 and RTC0 when the Bluetooth Controller is enabled.

    • Display:

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

    • Ethernet:

      • Added driver for the W5500 Ethernet controller.

    • Flash:

      • Modified the nRF QSPI NOR driver so that it also supports nRF53 Series SoCs.

      • Added missing selection of CONFIG_FLASH_HAS_PAGE_LAYOUT for the SPI NOR and AT45 family flash drivers.

      • Refactored the nRF QSPI NOR driver so that it no longer depends on CONFIG_MULTITHREADING.

      • Removed CONFIG_NORDIC_QSPI_NOR_QE_BIT. Use the quad-enable-requirements devicetree property instead.

      • Added JESD216 support to the nRF QSPI NOR driver.

    • GPIO:

      • Added support for controlling LED intensity to the SX1509B driver.

      • Added an emulated GPIO driver.

    • IEEE 802.15.4:

      • Updated the nRF5 IEEE 802.15.4 driver to version 1.9.

      • Production support for IEEE 802.15.4 in the single-protocol configuration on nRF5340.

      • Development support for IEEE 802.15.4 in the multi-protocol configuration on nRF5340.

      • Added reservation of the TIMER peripheral used by the nRF5 IEEE 802.15.4 driver.

      • Added support for sending packets with specified TX time using the nRF5 IEEE 802.15.4 driver.

      • Implemented the RX failed notification for the nRF5 IEEE 802.15.4 driver.

    • LED PWM:

      • Added a driver interface and implementation for PWM-driven LEDs.

    • Modem:

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

      • Added the possibility of defining commands with a variable number of arguments.

      • Introduced gsm_ppp_start() and gsm_ppp_stop() functions to allow restarting the networking stack without rebooting the device.

      • Added support for Quectel BG9x modems.

    • Power:

      • Added multiple nrfx_power-related fixes to reduce power consumption.

    • PWM:

      • Changed the GPIO configuration to use Nordic HAL, which allows support for GPIO pins above 31.

      • Added a check to ensure that the PWM period does not exceed a 16-bit value to prevent erroneous behavior.

      • Changed the PWM DT configuration to use a timer handle instead of the previously used timer instance.

    • Regulator:

      • Introduced a new regulator driver infrastructure.

    • Sensor:

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

      • Refactored the FXOS8700 driver to support multiple instances.

      • Added support for the Invensense ICM42605 motion sensor.

      • Added support for power management in the BME280 sensor driver.

    • Serial:

      • Replaced the usage of k_delayed_work with k_timer in 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:

        • UART_ERROR_BREAK

        • LINE_CTRL_BAUD_RATE

        • LINE_CTRL_RTS

        • LINE_CTRL_DTR

        • LINE_CTRL_DCD

        • LINE_CTRL_DSR

      • Refactored the uart_poll_out() implementation in the nRF UARTE driver to fix incorrect handling of HW flow control and power management.

    • SPI:

      • Added support for SPI emulators.

    • Timer:

      • Extended the nRF RTC Timer driver with a vendor-specific API that allows using the remaining compare channels of the RTC that provides the system clock.

    • USB:

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

      • Removed heap allocations from the usb_dc_nrfx driver to fix problems with improper memory sizes. Now the driver uses static buffers for OUT endpoints and memory slabs for FIFO elements.

  • Networking:

  • Bluetooth Mesh:

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

    • Configuration Client:

  • Libraries/subsystems:

    • Settings:

      • Removed SETTINGS_USE_BASE64 support, which has been deprecated for more than two releases.

    • Storage:

    • File systems:

    • DFU:

      • Added shell module for MCUboot enabled application. See CONFIG_MCUBOOT_SHELL.

      • Reworked the implementation to use MCUboot’s bootutil_public library instead of the Zephyr implementation of the same API.

    • IPC:

      • Added a subsys/ipc subsystem that provides multi-endpoint capabilities to the OpenAMP integration.

  • Build system:

    • Updated west to v0.9.0.

    • Renamed sanitycheck to Twister.

    • Ensured that shields can be placed in other BOARD_ROOT folders.

    • Added basic support for Clang 10 with x86.

    • Fixed a bug that prevented compiling the Immutable bootloader with CONFIG_SB_SIGNING_PUBLIC_KEY

  • System:

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

    • Added an abort() function to minimal libc.

    • Updated the ring buffer to allow using the full buffer capacity instead of forcing an empty slot.

    • Added a CLAMP macro.

    • Added a feature for post-mortem analysis to the tracing library.

  • Samples:

  • Logging:

    • Added STP transport and raw data output support for systrace.

  • Modules:

    • Introduced a CONFIG_MBEDTLS_MEMORY_DEBUG option 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 v1.2.0.

    • Moved the nrfx glue code from the hal_nordic module repository to the main Zephyr repository.

    • Updated the Trusted Firmware-M (TF-M) module to include support for the nRF5340 and nRF9160 platforms.

  • Other:

    • Renamed the sanitycheck script to twister.

    • Added initial LoRaWAN support.

    • Updated west flash support for nrfjprog to fail if a HEX file has UICR data and --erase was not specified.

    • Added an API to correlate system time with external time sources (see Time Utilities).

  • Power management:

    • Overhauled the naming and did some general cleanup.

    • Added a notifier API to register an object to receive notifications when the system changes power state.

  • Shell:

    • Updated documentation.

    • Optimized the tab feature and the select command.

    • Enhanced and improved the help command.

  • Toolchain:

    • Added initial support for LLVM/Clang (version 10, on the x86 architecture).

    • Added the environment variable LLVM_TOOLCHAIN_PATH for locating the LLVM toolchain.

  • USB:

    • Fixed the handling of zero-length packet (ZLP) in the nRF USB Device Controller Driver.

    • Changed the USB DFU wait delay to be configurable with Kconfig (CONFIG_USB_DFU_WAIT_DELAY_MS).

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

    • NPROTO_AT protocol.

    • NPROTO_PDN protocol to be used in conjunction with AF_LTE.

    • NPROTO_DFU protocol to be used in conjunction with AF_LOCAL.

    • SOCK_MGMT socket type, used in conjunction with AF_LTE.

    • SOL_PDN protocol level and associated socket option values (SO_PDN_CONTEXT_ID option for PDN sockets, SO_PDN_STATE option for PDN sockets to retrieve the state of the PDN connection).

    • SOL_DFU protocol level and associated socket options. This includes a SO_DFU_ERROR socket option for DFU socket that can be used when an operation on a DFU socket returns -ENOEXEC, indicating that the modem has rejected the operation to retrieve the reason for the error.

    • TLS_SESSION_CACHE socket option for TLS session caching.

    • SO_BINDTODEVICE socket option.

    • SO_SNDTIMEO socket option.

    • SO_SILENCE_ALL to disable/enable all the replies to unexpected traffics.

    • SO_IP_ECHO_REPLY to disable/enable replies to IPv4 ICMPs.

    • SO_IPV6_ECHO_REPLY to disable/enable replies to IPv6 ICMPs.

    • MSG_TRUNC socket flag.

    • MSG_WAITALL socket flag required to support the corresponding NRF counterpart flag, for translation within the offloading interface.

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

  • Modified the SoC devicetree .dtsi files to prefer the CryptoCell CC310 hardware as the system entropy source on SoCs where support is available (nRF52840, nRF5340, nRF9160).

  • Added Zigbee L2 layer.

  • Added readout of IEEE 802.15.4 EUI-64 address in the non-secure build from the FICR registers in the secure zone (nRF IEEE 802.15.4 Radio Driver).

  • Added TF-M adjustments to support TF-M in nRF Connect SDK.

  • Disabled the automatic printing of OpenThread settings when building OpenThread.

Documentation

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

Applications and samples

Libraries and drivers

nrfxlib

Known issues

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