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.
Highlights
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 (https://github.com/nrfconnect/sdk-nrf) 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:
Tool |
Version |
Download link |
---|---|---|
SEGGER J-Link |
V6.41 |
|
nRF5x Command Line Tools |
v9.8.1 |
|
dtc (Linux only) |
v1.4.6 or later |
As IDE, we recommend to use SEGGER Embedded Studio (Nordic Edition), version 4.16 or later. It is available from the following links:
Changelog
The following sections provide detailed lists of changes by component.
nRF9160
Deprecated the
nrf91
branch in sdk-zephyr in favor of master, which now supports the nRF9160 ICSplit 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:
nRF9160: HTTP application update - demonstrates a basic FOTA (firmware over-the-air) update using the Download client
nRF9160: Simple MQTT - connects to an MQTT broker and sends and receives data
nRF9160: nRF CoAP Client - receives data from a public CoAP server using the Nordic CoAP library
Simple GPS sample - gets the current position and logs it on UART
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()
(inlib/nrf_modem_lib/nrf_modem_os.c
in sdk-nrf), allowing a proper poll operation and blocking socketsMinor 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
Crypto
Added nrf_oberon crypto library v3.0.0 (see Changelog - nRF Oberon for details)
Added nrf_cc3xx_mbedcrypto library v0.7.0 (initial, experimental release) to do hardware-accelerated cryptography using Arm CryptoCell CC310 in select architectures
Added Nordic Security Module v0.7.0 (initial, experimental release) to bridge software-implemented mbed TLS and hardware-accelerated alternatives (nrf_cc310_mbedcrypto library) through the use of a glue layer
Subsystems
Bluetooth Low Energy
Added the following samples:
Bluetooth: Peripheral HIDS keyboard - simulates a HID input device using GATT HID Service
Bluetooth: Central SMP Client - connects to an SMP server and sends simple echo commands
Added the following libraries:
GATT DFU SMP Service Client - GATT Client implementation compatible with the GATT SMP Service, which is used as DFU transport
GATT Human Interface Device (HID) Service Client - GATT Client implementation compatible with the HID Service
NFC
Added the following samples:
NFC: Tag reader - reads NFC tags using additional hardware (expansion board X-NUCLEO-NFC05A1)
Added the following drivers:
NFC Reader ST25R3911B reads and writes NFC-A compatible tags using the NFC Device ST25R3911B
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)
Profiler
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.
Documentation
Added or updated documentation for the following samples:
nRF9160: Asset Tracker, nRF9160: nRF CoAP Client, nRF9160: Simple MQTT, and nRF9160: HTTP application update
Bluetooth: Peripheral HIDS mouse, Bluetooth: Peripheral HIDS keyboard, Bluetooth: Central HIDS, and Bluetooth: Central SMP Client
NFC: Text record, NFC: Writable NDEF message, and NFC: Tag reader
Added or updated documentation for the following libraries:
Added or updated the following documentation:
Installing manually - updated for west, added instructions for macOS
Building and programming an application - updated for new SES version
Modifying an application - added
Testing with Unity and CMock - added
Partition Manager - added
Developing with nRF9160 DK - updated Secure Partition Manager and Network mode sections
Known issues
nRF9160
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/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.
Crypto
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).
Subsystems
Bluetooth Low Energy
Bluetooth: Peripheral LBS does not report the Button 1 state correctly.
The central samples (Bluetooth: Central UART, Bluetooth: Central HIDS) do not support any pairing methods with MITM protection.
The GATT Discovery Manager is not supported on nRF51 devices.
Bluetooth LE samples cannot be built with the SoftDevice Controller v0.1.0.
Bootloader
Building and programming the immutable bootloader (see Secure bootloader chain) is not supported in SEGGER Embedded Studio.
The immutable bootlader can only be used with the following boards:
nrf52840_pca10056
nrf9160_pca10090
DFU
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.
nrfxlib
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.