nRF Connect SDK v1.1.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.

nRF Connect SDK v1.1.0 supports product development with the nRF9160 Cellular IoT device. It contains reference applications, sample source code, and libraries for Bluetooth Low Energy devices in the nRF52 Series, though product development on these devices is not currently supported with the nRF Connect SDK.

Important

nRF Connect SDK v1.1.0 does not provide support for nRF5340. For nRF5340 support, check out the master branch.

Highlights

Release tag

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

  • mfw_nrf9160_1.1.0

Use the nRF Programmer app of nRF Connect for Desktop to update the modem firmware. See Updating the nRF9160 DK cellular modem for instructions.

Supported boards

  • PCA10090 (nRF9160 DK)
  • PCA20035 (Thingy:91)
  • PCA10056 (nRF52840 Development Kit)
  • PCA10059 (nRF52840 Dongle)
  • PCA10040 (nRF52 Development Kit)
  • PCA10028 (nRF51 Development Kit)

Required tools

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

Tool Version Download link
SEGGER J-Link V6.50b J-Link Software and Documentation Pack
nRF Command Line Tools v10.5.0 nRF Command Line Tools
nRF Connect for Desktop v3.3.0 or later nRF Connect for Desktop
dtc (Linux only) v1.4.6 or later Installing the required tools
GCC See Installing the toolchain GNU Arm Embedded Toolchain

As IDE, we recommend to use SEGGER Embedded Studio (Nordic Edition) version 4.20a. It is available from the following links:

Change log

The following sections provide detailed lists of changes by component.

nRF9160

  • Added the following samples:
    • nRF9160: LwM2M carrier - demonstrates how to use the LwM2M carrier library to connect to the operator LwM2M network.
    • nRF9160: LwM2M Client - demonstrates how to use Zephyr’s Lightweight M2M (LWM2M) interface to implement a sample LwM2M application. This sample can run against an LwM2M demo server, but cannot connect to the operator network.
    • USB-UART bridge - acts as a serial adapter for Thingy:91, providing USB serial ports for debug output and the ability to send AT commands to the modem. This sample runs on the nRF52840 SoC on Thingy:91.
  • Added the following libraries:
    • Cloud API (include/net/cloud.h) - provides a generic cloud API with an implementation for the nRF Cloud.
    • LwM2M carrier (version 0.8.0) - provides support for the Verizon Wireless network support.
    • AT command notifications - dispatches AT command notifications to registered modules.
  • Added the following drivers:
    • nRF9160 GPS (drivers/nrf9160_gps/) - configures the modem for GPS operation and controls the GPS data coming from the modem. Applications must interact with the GPS using the GPS API (include/gps.h) and not use the driver directly.

Updated samples and applications

  • nRF9160: Asset Tracker:
    • Updated to use the generic cloud API.
    • Added a user interface module to the application to facilitate the use of buttons, LEDs, buzzer, and NMOS transistors.
    • Added a cloud command decoder module that parses incoming JSON strings.
    • Added an application reboot in the case that MQTT CONNACK is missing from the nRF Cloud server.
    • Fixed a bug where invalid RSRP values (not known / not detectable) were sent to the cloud.
    • Added service information JSON to the device information shadow data.
    • Added light sensor handling.
    • Added firmware over-the-air (FOTA) support for application updates and delta updates of the modem firmware.
  • nRF9160: AWS FOTA:
    • Added a warning message when provisioning certificates stating that the certificates are stored in application core flash (readable flash) and are visible on modem traces.
    • Changed the default security tag to not be the same as nRF Cloud’s security tag, to ensure that users do not overwrite their nRF Cloud certificates.
    • Created a separate nRF Cloud configuration option for the sample.
    • Added device shadow update to the sample.
    • Added support for delta updates of the modem firmware using firmware over-the-air (FOTA).
  • nRF9160: HTTP application update:
    • Added support for delta updates of the modem firmware using firmware over-the-air (FOTA).

Updated libraries

  • Modem information:
    • Reworked the architecture to support a parameter storage module.
    • Increased the available data.
    • Extended the modem information with IMEI, IMSI, date, and time information.
    • Changed the modem information to be handled as JSON object instead of strings.
    • Fixed known bugs.
  • FOTA download:
    • Changed to use the DFU target abstraction.
    • Added support for performing MCUboot upgrades. To support this, CONFIG_SECURE_BOOT=y must be set. To send an upgrade, provide the path to both the S0 and the S1 candidate (separated by a space) to the file parameter of fota_download_start(). Both candidates are generated by the build system if CONFIG_MCUBOOT_BUILD_S1_VARIANT=y is set.
  • AWS FOTA and AWS jobs:
    • Implemented fetching of AWS jobs. This allows a device to be updated if it is offline at the time the update is created.
    • Refactored the code (improved function names, extracted common functionality, re-used topic buffers given to AWS jobs).
    • Added unit tests for AWS jobs.
    • Removed device shadow update from the library.
  • MQTT library:
    • Dropped the nRF Connect SDK copy of the MQTT library and adopted Zephyr’s MQTT library instead.
  • Secure Partition Manager (SPM):
  • nRF Cloud library:
    • Adopted to the new device shadow format.
  • at_host (lib/at_host):
    • Updated to use a dedicated workqueue instead of the system workqueue.
    • Miscellaneous fixes and improvements.
  • AT command parser:
    • Refactored the library.
  • LTE link control (include/lte_lc.h):
    • Added PLMN lock option (default: false).
    • Added PDN connection authentication option (default: false).
    • Added modem modes without GPS (LTE-M or NB-IoT only).
    • Added fallback to secondary LTE network mode (LTE-M/NB-IoT) if the device fails to connect using the primary network mode.
    • Added a function to get the periodic TAU and active time settings from the current network registration status.
    • Added a function to get the current functional mode.
    • Added a function to get the current network registration status (not registered, roaming, registered home network).
    • Added a function to get and set the system mode (LTE-M, NB-IoT, and GPS).
    • Other minor improvements and fixes.

Updated drivers

  • AT command interface:
    • Added an option to initialize the driver manually.
    • Fixed detection of CME / CMS errors.

BSD library

  • Updated the BSD library to version 0.5.0.
  • Updated bsdlib_init() to return the value of bsd_init() instead of (only) zero.
  • Added functionality that overrides untranslated errnos set by the BSD library with a magic word (0xBAADBAAD), instead of EINVAL, and prints a log message. If ASSERTs are enabled, the application will assert.
  • Made DFU, PDN, and RAW socket available through the socket offloading mechanism.
  • Updated samples that use the BSD library to use CONFIG_NET_NATIVE=n to save RAM and ROM.

Board support

  • Thingy:91 (nrf9160_pca20035):
    • Removed support for earlier hardware versions of nrf52840_pca20035 and nrf9160_pca20035. From nRF Connect SDK v1.1.0, only the latest hardware version is supported.
    • Removed configurations specific to the deprecated board versions from the nRF9160: Asset Tracker application.

Common libraries and drivers

  • Added the following libraries:
    • DFU target - abstracts the specific implementation of how a DFU procedure is implemented. This library supports delta updates of the modem firmware and application updates.
    • Hardware flash write protection - uses hardware (BPROT, ACL, or SPU) to protect flash areas from being changed. This library is used by the immutable bootloader.
  • Added the following drivers:
    • Flash patch (nrf/drivers/flash_patch) - writes to UICR to disable flash patch functionality during the first boot of the image.

Updated libraries

  • Immutable bootloader (nrf/subsys/bootloader):
    • Created a bl_validate_firmware() function that can be used to ensure that a received upgrade will be accepted by the immutable bootloader. This function is available to be called from subsequent boot steps.
    • Refactored the boot validation code.
    • Moved the provision page next to the code (instead of at the end of the flash).
    • Removed custom startup and debug code.
  • Firmware information:
    • Renamed fw_metadata to fw_info. Most functions, macros, etc. have changed name as a result.
    • Added documentation.
    • Updated to allow the firmware information struct to be placed at one of three offsets (0x200, 0x400, 0x800). When looking for firmware info, you must search all these offsets. Changed the default to 0x200.
  • DK Button and LED library:
    • Added support for boards with LED or button pins on different GPIO ports.
  • Download client:
    • Added support for specifying an access point name for the packet data network.
    • Moved the header file to include/net.
    • Updated to report a DOWNLOAD_CLIENT_EVT_ERROR error when unable to parse the HTTP header, with error reason EBADMSG.
    • Returning 0 when receiving a DOWNLOAD_CLIENT_EVT_ERROR will now let the library retry the download.

Updated drivers

  • ADP536X (include/drivers/adp536x.h):
    • Added buck discharge resistor configuration.

Crypto

Updated libraries

  • nrf_cc310_platform library v0.9.1 (experimental release):
    • Added support for initialization of Arm CC310 hardware accelerator with or without RNG support.
    • Added support for setting RTOS-specific mutex and abort handling in Arm CC310 crypto libraries.
    • Added APIs to generate entropy.
  • nrf_cc310_mbedcrypto library v0.9.1 (experimental release):
    • Added support to do hardware-accelerated cryptography using Arm CryptoCell CC310 in select architectures.
    • Miscellaneous bugfixes.
  • Nordic Security Module:

nRF BLE Controller

  • Updated the nRF BLE Controller to v0.3.0-3.prealpha. For details, see the Changelog.
  • Improved the default static memory pool allocation. The controller now determines its static memory pool size based on the maximum Link Layer packet length. This is determined by the Kconfig macro CONFIG_BT_CTLR_DATA_LENGTH_MAX (if defined), or else the minimum packet length (which is 27 B). The memory pool is large enough to facilitate one master and one slave link.
  • Added support for connection intervals less than the standard minimum of 7.5 ms. Note that this a proprietary feature that is not Bluetooth Low Energy compliant. This proprietary feature is named Low Latency Packet Mode (LLPM).

Subsystems

Bluetooth Low Energy

NFC

nrfx

  • Updated to v1.8.1. For details, see the changelog.

Known issues

nRF9160

  • Deprecation warning: The nrf_inbuilt_key API in the BSD library will be removed in a future release. A replacement library that wraps the AT commands for AT%CMNG will be available in the nRF Connect SDK.
  • The nRF9160: Asset Tracker sample might show up to 2.5 mA current consumption in idle mode with CONFIG_POWER_OPTIMIZATION_ENABLE=y.
  • 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.
  • nRF91 fails to receive large packets (over 4000 bytes).
  • nrf_connect fails if called immediately after initialization of the device. A delay of 1000 ms is required for this to work as intended.

Subsystems

Bluetooth Low Energy

Bootloader

  • Public keys are not revoked when subsequent keys are used.
  • The bootloader does not work properly on nRF51.
  • 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 and FOTA

  • When using AWS FOTA, no new jobs are received on the device if the device is reset during a firmware upgrade or loses the MQTT connection. As a workaround, delete the stalled in progress job from AWS IoT.
  • FOTA download does not resume a download if the device loses the connection. As a workaround, call fota_download_start() again with the same arguments when the connection is re-established to resume the download.
  • When using the mcuboot target in DFU target, the write/downloaded offset is not retained when the device is reset.
  • In the nRF9160: AWS FOTA and nRF9160: HTTP application update samples, the download is stopped if the socket connection times out before the modem can delete the modem firmware. As a workaround, call fota_download_start() again with the same arguments. A fix for this issue is available in commit 38625ba7.
  • If the last fragment of a FOTA download is received but is corrupted, or if the last write is unsuccessful, the library emits an error event as expected. However, it also emits an apply/request update event, even though the downloaded data is invalid.

NFC

  • NFC tag samples are unstable when exhaustively tested (performing many repeated read and/or write operations). NFC tag data might be corrupted.

Build system

nrfxlib

  • In the BSD library, the GNSS sockets implementation is experimental.

nrfx v1.8.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.

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.