nRF Connect SDK v0.4.0 Release Notes

This project is hosted by Nordic Semiconductor to demonstrate the integration of Nordic SoC support in open source projects, like MCUBoot and the Zephyr RTOS, with libraries and source code for low-power wireless applications.

nRF Connect SDK v0.4.0 supports development with nRF9160 Cellular IoT devices. It contains references and code for Bluetooth Low Energy devices in the nRF52 Series, though development on these devices is not currently supported with the nRF Connect SDK.


  • Added support for the new triple mode (LTE-M/NB-IoT/GPS) with mfw_nrf9160_0.7.0-29.alpha (see Network mode for instructions for changing the network mode)

  • Updated BSD library:

    • Added API supporting GPS

    • Fixed various issues (see the Changelog)

  • Added sample showing how to use the new GPS API (tested on nRF9160 DK v0.8.5)

  • Added sample showing how to download a new image via HTTP

  • Added multi-image support (see Partition Manager)

Release tag

The release tag for the nRF Connect SDK manifest repository ( is v0.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 boards

  • PCA10090 (nRF9160 DK) - only for LTE samples

  • PCA10056 (nRF52840 Development Kit)

  • PCA10059 (nRF52840 Dongle)

  • PCA10040 (nRF52 Development Kit)

  • PCA10028 (nRF51 Development Kit)

  • PCA63519 (Smart Remote 3 DK add-on)

Required tools

In addition to the tools mentioned in Installing manually, the following tool versions are required to work with the nRF Connect SDK:



Download link



J-Link Software and Documentation Pack

nRF5x Command Line Tools


nRF5x Command Line Tools

dtc (Linux only)

v1.4.6 or later

Install the required tools

As IDE, we recommend to use SEGGER Embedded Studio (Nordic Edition), version 4.16 or later. It is available from the following platforms:

  • Windows x86

  • Windows x64

  • Mac OS x64

  • Linux x86

  • Linux x64


The following sections provide detailed lists of changes by component.


  • Deprecated the nrf91 branch in sdk-zephyr in favor of master, which now supports the nRF9160 IC

  • Split the previous nrf9160_pca10090 board into two boards, one for the secure (nrf9160_pca10090) and one for the non-secure (nrf9160_pca10090ns) image (both reside in the same board folder)

  • Added the following samples:

  • Fixed an issue in the nRF9160: LTE Sensor Gateway sample where the host and the controller would go out of sync after a reset

  • Various fixes and updates to BSD Library, sockets offloading layer, and OS adaption:

    • Updated the BSD library (in nrfxlib) to version 0.3.0 (see the Changelog for details)

    • Added support for GNSS supporting GPS as a socket (in nrfxlib)

    • Implemented nrf_modem_os_timedwait() (in lib/nrf_modem_lib/nrf_modem_os.c in sdk-nrf), allowing a proper poll operation and blocking sockets

    • Minor fixes to the nRF91 sockets offloading layer (in lib/nrf_modem_lib/nrf91_sockets.c in sdk-nrf)

Common libraries

  • Added the following libraries:

    • Download client - downloads files over HTTP and reports back the progress (as data fragments) to the application

    • Nordic CoAP library - ported to the nRF Connect SDK

    • Secure Partition Manager (SPM) (replacing Secure Boot) - configures security attributions for the flash, SRAM, and peripherals



Bluetooth Low Energy


  • Added the following samples:

    • NFC: Tag reader - reads NFC tags using additional hardware (expansion board X-NUCLEO-NFC05A1)

  • Added the following drivers:

Event Manager

  • Optimized and cleaned up the code

  • Added events logging dynamic control over shell

  • Updated to use logger instead of printk

  • Added a sample (Application Event Manager)


  • Added dynamic selection of profiled events over shell

  • Added a sample (Profiler)

Build and configuration system

Bootloaders (such as SPM) and MCUboot no longer need to be built and flashed separately, but are instead automatically built and flashed (if enabled by the application). See Partition Manager for more information.


Known issues


  • The nRF9160: Asset Tracker sample does not wait for connection to nRF Connect for Cloud before trying to send data. This causes the sample to crash if the user toggles one of the switches before the board is connected to the cloud.

  • The nRF9160: Asset Tracker sample might show up to 2.5 mA current consumption in idle mode with CONFIG_POWER_OPTIMIZATION_ENABLE=y.

  • If a debugger (for example, J-Link) is connected via SWD to the nRF9160, the modem firmware will reset. Therefore, the LTE modem cannot be operational during debug sessions.

  • 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/ file to find the address of the _SEGGER_RTT symbol in the map file and use that as input to the viewer/logger.


  • The Nordic Security Module glue layer is broken because symbol renaming is not handled correctly. Therefore, the behavior is undefined when selecting multiple back-ends for the same algorithm (for example, AES).


Bluetooth Low Energy


  • Building and programming the immutable bootloader (see Secure bootloader chain) is not supported in SEGGER Embedded Studio.

  • The immutable bootloader can only be used with the following boards:

    • nrf52840_pca10056

    • nrf9160_pca10090


  • Firmware upgrade using mcumgr or USB DFU is broken for multi-image builds, because the device tree configuration is not used. Therefore, it is not possible to upload the image. To work around this problem, build MCUboot and the application separately.


  • GNSS sockets implementation is experimental.

  • Implementation might hard-fault when GPS is in running mode and messages are not read fast enough.

  • NMEA strings are valid c-strings (0-terminated), but the read function might return wrong length.

  • Sockets can only be closed when GPS is in stopped mode.

  • Closing a socket does not properly clean up all memory resources. If a socket is opened and closed multiple times, this might starve the system.

  • Forcing a cold start and writing AGPS data is not yet supported.

nrfx 1.7.1

  • nrfx_saadc driver: Samples might be swapped when buffer is set after starting the sample process, when more than one channel is sampled. This can happen when the sample task is connected using PPI and setting buffers and sampling are not synchronized.

  • The nrfx_uarte driver does not disable RX and TX in uninit, which can cause higher power consumption.

  • The nrfx_uart driver might incorrectly set the internal tx_buffer_length variable when high optimization level is set during compilation.

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.