Skip to content

Latest commit

 

History

History
608 lines (437 loc) · 24.5 KB

File metadata and controls

608 lines (437 loc) · 24.5 KB

|NCS| v1.3.0 Release Notes

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

The |NCS| is where you begin building low-power wireless applications with Nordic Semiconductor nRF52, nRF53, and nRF91 Series devices. nRF53 Series devices (which are pre-production) and Thread, Zigbee, and Bluetooth Mesh protocols are supported for development in v1.3.0 for prototyping and evaluation. Support for production and deployment in end products is coming soon.

  • New home for the |NCS|
  • Support for Thread and Zigbee
  • Support for Bluetooth Mesh
  • nRF Desktop supported for production
  • New nRF9160 samples and libraries
  • Support for using external flash for the secondary slot in MCUboot
  • General updates and bugfixes

Starting with this release, the |NCS| has moved to a new GitHub organization, nrfconnect. All repositories were renamed to provide clear and concise names that better reflect the composition of the codebase. If you are a new |NCS| user, there are no actions you need to take. If you used previous releases of the |NCS|, you should follow the instructions in :ref:`repo_move`.

The release tag for the |NCS| manifest repository (|ncs_repo|) is v1.3.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 :ref:`cloning_the_repositories` for more information.

This version of the |NCS| has been tested with the following modem firmware for cellular IoT applications:

  • mfw_nrf9160_1.2.0

Use the latest version of the nRF Programmer app of `nRF Connect for Desktop`_ to update the modem firmware. See the Programming nRF91 Series DK firmware page for instructions.

The following sections provide detailed lists of changes by component.

  • Added:
    • :ref:`lib_date_time` library - maintains the current date-time UTC from multiple time sources (modem, NTP servers).
    • FTP client library - can be used to download or upload FTP server files.
    • :ref:`lib_nrf_cloud_agps` library - provides a way to request and process A-GPS data from nRF Connect for Cloud to be used with the nRF9160 SiP. The :ref:`agps_sample` sample demonstrates how to use the library.
    • :ref:`connectivity_bridge` application with dual UART and Bluetooth LE support - replaces the USB-UART bridge sample.
  • :ref:`gps_with_supl_support_sample` sample:
    • Reworked the API to make it more flexible.
    • Added an option to register an event handler. All event types from the GPS will be received, as opposed to the previous single-trigger source.
  • :ref:`lib_nrf_cloud` library:
    • Added FOTA download progress monitoring.
    • Added :ref:`lib_nrf_cloud_agps` support.
    • Added support for MQTT persistent sessions.
    • Moved cloud connection polling out of the application into a separate nrf_cloud thread.
    • Exposed MQTT topics to the nRF Cloud library.
  • :ref:`lib_aws_fota` library:
    • Switched from Zephyr's JSON parser to cJSON.
    • Added support for MQTT persistent sessions.
  • :ref:`lib_fota_download` library:
    • Added support for specifying a TCP port for connections.
    • Added support for specifying the APN to be used.
  • :ref:`modem_key_mgmt` library:
    • Added a :c:func:`modem_key_mgmt_cmp` function to the API, which allows to compare with a credential stored in the modem.
    • Various minor fixes.
  • :ref:`modem_info_readme` library:
  • :ref:`lte_lc_readme` library:
    • Added the concept of events.
    • Allowed to modify PSM/eDRX parameters at runtime.
    • Allowed to modify PDP context and PDN authentication at runtime.
  • :file:`lib/at_host` library:
    • Updated to use CR termination by default. This reverts the old behavior.
  • :ref:`http_application_update_sample` sample:
    • Added support for BSD library initialization at system startup.
    • Changed default download host and file name.
  • :ref:`lwm2m_client` sample:
    • Fixed an invalid value of the APN resource in the Connectivity Monitoring object.
    • Set cell ID information in the Connectivity Monitoring object.
    • Added delay to the reboot procedure, to allow to send a reply to the server.
    • Added queue mode support.
  • nRF9160: Asset Tracker application:
    • Improved stability.
    • Various bugfixes.
  • Serial LTE modem application:
    • Moved from samples to applications.
    • Added low-power idle mode.
    • Added support for generic proprietary AT commands.
    • Added support for BSD socket, TCP/UPD, ICMP, GPS, MQTT, and FTP proprietary AT commands.
    • Added support for communicating to an external MCU over UART.
    • Added support for transmitting arbitrary hexadecimal data.
    • Added support for TCP/UDP proxy service (optional).
    • Added support for SUPL A-GPS.
  • :ref:`liblwm2m_carrier_readme` library:
  • BSD library:
  • :ref:`supl_client`:
    • Provided version 0.6.0 for download. This new version is required for compatibility with |NCS| v1.3.0.

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

nRF5340 SoC

Multiprotocol Service Layer (MPSL)

See the :ref:`nrfxlib:mpsl_changelog` for detailed information.

  • Added TX power envelope functionality.
  • Added support for using a low-swing and full-swing LF clock.

Thread

Added the following samples:

  • :ref:`ot_cli_sample` sample - very basic sample with Thread enabled and shell support to allow using the OpenThread Command Line Interface. This sample is needed for Thread certification.
  • :ref:`coap_client_sample` sample and :ref:`coap_server_sample` sample - two samples demonstrating how to use the CoAP protocol over a Thread network.
  • Thread Sleepy End Device sample - a variation of the :ref:`coap_client_sample` sample that works with lower power consumption as Minimal Thread Device type.

See the :ref:`ug_thread` user guide to get started.

Zigbee

Added initial support for the Zigbee network p`rotocol:

  • ZBOSS - port of the ZBOSS stack to the |NCS|, provided as a closed stack binary in nrfxlib. The stack provided in this release has not been certified by the Zigbee Alliance.
  • Light control sample consisting of the Zigbee light bulb sample, Zigbee light switch sample, and Zigbee network coordinator sample - ported from the nRF5 SDK for Thread and Zigbee. The sample demonstrates all Zigbee roles (coordinator, router, end device). The Zigbee light switch sample provides sleepy end device support.

See the :ref:`ug_zigbee` user guide to get started.

Bluetooth Low Energy

nRF Bluetooth LE Controller

See the :ref:`nrfxlib:softdevice_controller_changelog` for detailed information.

  • Added feature to configure TX power per role/connection.
nRF Desktop
  • Added support for new hardware:
    • nrf52833dk_nrf52833
    • nrf52833dongle_nrf52833
    • nrf52820dongle_nrf52820
  • Added a fail-safe erase module that, if enabled, erases settings after a crash.
  • Added low-latency lock to disable slave latency until the device enters power down.
  • Improved connection parameters update.
  • Removed the shell module. Shell configuration is now done using Zephyr configuration options.
  • Updated the application to boot using the immutable bootloader when background DFU is enabled (the immutable bootloader boots the application directly from any slot).
  • MCUboot is used only on configurations with serial recovery through USB.
  • The peripheral sends the first report with delay (configurable), allowing the central to be ready.
  • Updated the config channel to use dynamic module IDs.
  • Reworked and unified HID report data passing.
  • Improved the report rate through TX power changes.
  • Improved usage of setting handlers.
  • Improved filtering of peripherals when the central does scanning.
  • Added passkey support on keyboard (passkey required during device bonding).
  • Added support for system control reports on keyboard.
  • Various small improvements and bug fixes.

See the :ref:`nrf_desktop` documentation to get started.

Bluetooth Mesh

See the :ref:`ug_bt_mesh` user guide to get started.

Enhanced ShockBurst (ESB)

The following changes are relevant for all device families.

Boards

All boards have been renamed. The following boards are defined in Zephyr:

Old name New name
nrf52810_pca10040 nrf52dk_nrf52810
nrf52_pca10040 nrf52dk_nrf52832
nrf52833_pca10100 nrf52833dk_nrf52833
nrf52811_pca10056 nrf52840dk_nrf52811
nrf52840_pca10056 nrf52840dk_nrf52840
nrf52840_pca10059 nrf52840dongle_nrf52840
nrf9160_pca10090 nrf9160dk_nrf9160
nrf52840_pca10090 nrf9160dk_nrf52840
nrf52_pca20020 thingy52_nrf52832
nrf5340_dk_nrf5340 nrf5340pdk_nrf5340

The following boards are defined in sdk-nrf:

Old name New name
nrf52840_pca20041 nrf52desktop_gaming_mouse_nrf52840
nrf52810_pca20045 nrf52desktop_mouse_nrf52810
nrf52_pca20044 nrf52desktop_mouse_nrf52832
nrf52_pca20037 nrf52desktop_keyboard_nrf52832
nrf9160_pca20035 thingy91_nrf9160
nrf52840_pca20035 thingy91_nrf52840
nrf52833_pca10111 nrf52833dongle_nrf52833
nrf52833_pca10114 nrf52820dongle_nrf52820

nrfx

See the `Changelog for nrfx 2.2.0`_ for detailed information.

Crypto

NFC

Immutable bootloader

Secure Partition Manager (SPM)

  • Added support for disabling some services in the nRF9160: Secure Services sample. It now works in more bootloader configurations.
  • Disabled CONFIG_SPM_SERVICE_PREVALIDATE in the Secure Partition Manager (SPM) library, because this option requires the immutable bootloader.
  • Updated the Secure Partition Manager (SPM) library to make it compatible with nRF5340 (with or without `anomaly 19`_).

CPU load measurement

Added :ref:`cpu_load`, a debug module for measuring CPU load.

iCalendar parser

Added :ref:`icalendar_parser_readme`, a library to parse iCalendar data format.

  • Added external flash secondary slot MCUboot. See :ref:`ug_bootloader_external_flash`.
  • Added an option to build Ed25519 signature validation without using mbedTLS, by relying on a bundled tinycrypt-based SHA-512 implementation.
  • Replaced CBOR decoding in serial recovery with code generated from a CDDL description. This results in a flash footprint reduction of more than 1 KB while serial recovery is enabled.
  • Added support for X25519-encrypted images.
  • Added rollback protection. There is support for a hardware rollback counter that must be provided as part of the platform, as well as a software solution that protects against some types of rollback.
  • Added an optional boot record in shared memory to communicate boot attributes to code that is run later.
  • Added a cleanup of the Arm core before the application is booted.
  • Allowed recovery over USB CDC ACM with logs enabled.
  • Various fixes to work with the latest Zephyr version.
  • Added support for multi-image builds for multi-core projects.
  • Facilitated defining non-secure boards out of tree. Any board that matches *_ns or *ns is now considered non-secure, and its child images board is set to the secure variant.
  • Added support for defining external flash in the :ref:`partition_manager`.
  • Updated the time-out type to :c:type:`k_timeout_t`, because the Zephyr kernel deprecated its integer type as time-out in different APIs (timeout, scheduling, ...).
  • Updated all files to use the C/C++ Devicetree generic API, because the C/C++ Devicetree value fetching API was reworked in Zephyr so that it uses compatible strings and new function-like macros to match properties. See :ref:`zephyr:dt-from-c`.

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

  • The nRF9160: Asset Tracker application prints warnings and error messages during successful FOTA. (NCSDK-5574)
  • The LTE Sensor Gateway sample crashes when Thingy:52 is flipped. (NCSDK-5666)

From v1.2.0

  • The :c:func:`nrf_send` function in the BSD library might be blocking for several minutes, even if the socket is configured for non-blocking operation. The behavior depends on the cellular network connection.
  • 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.

nRF5340

nRF52820

Multi-Protocol Service Layer (MPSL)

  • The Antenna Diversity feature is not supported on nRF52840 devices. (KRKNWK-6361)

Thread

  • It is not possible to build Thread samples using SEGGER Embedded Studio (SES). SES does not support .cpp files in |NCS| projects. (NCSDK-5014)
  • It is not possible to provision the :ref:`coap_client_sample` sample to servers that it cannot directly communicate with. This is because Link Local Address is used for communication. (KRKNWK-6358)
  • The "diag" command is not yet supported by Thread in the |NCS|. (KRKNWK-6408)

Zigbee

  • There might be a noticeable delay (~220 ms) between calling the ZBOSS API and on-the-air activity.
  • ZBOSS alarms are inaccurate. On average, they last longer by 6.4 percent. It is recommended to use Zephyr alarms.

Bluetooth Low Energy

  • High-throughput transmission can deadlock the receive thread if the connection is suddenly disconnected. (NCSDK-5711)
  • Bi-directional high-throughput traffic can deadlock the transmit thread. (NCSDK-5711)

Bluetooth Mesh

Samples and applications

  • The build configuration consisting of :ref:`bootloader`, Secure Partition Manager, and application does not work. As a workaround, either include MCUboot in the build or use MCUboot instead of the immutable bootloader.
  • west flash and ninja flash only program one core, even if multiple cores are included in the build. As a workaround, execute the flash command from inside the build directory of the child image that is placed on the other core (for example, :file:`build/hci_rpmsg`).

Crypto

  • nRF Oberon v3.0.5 is missing symbols for HKDF using SHA1, which will be fixed in an upcoming version of the library. As a workaround, use a different backend (for example, vanilla mbed TLS) for HKDF/HMAC using SHA1. (NCSDK-5546)
  • The :ref:`nrf_security` is currently only fully supported on nRF52840 and nRF9160 devices. It gives compile errors on nRF52832, nRF52833, nRF52820, nRF52811, and nRF52810. These errors can be fixed by cherry-picking commits in nrfxlib PR #205.

Secure Partition Manager (SPM)

  • Enabling default logging in the Secure Partition Manager sample makes it crash if the sample logs any data after the application has booted (for example, during a SecureFault, or in a secure service). At that point, RTC1 and UARTE0 are non-secure. As a workaround, do not enable logging and add a breakpoint in the fault handling, or try a different logging backend. (NCSIDB-114)
  • It is not possible to build and program Secure Partition Manager and the application individually. (from v1.2.0)
  • If the Zephyr kernel preempts the current thread and performs a context switch to a new thread while the current thread is executing a secure service, the behavior is undefined and might lead to a kernel fault. To prevent this situation, a thread that aims to call a secure service must temporarily lock the kernel scheduler (:c:func:`k_sched_lock`) and unlock the scheduler (:c:func:`k_sched_unlock`) after returning from the secure call. (NCSIDB-108)

In addition to the known issues above, check the current issues in the `official Zephyr repository`_, since these might apply to the |NCS| fork of the Zephyr repository as well. To get help and report issues that are not related to Zephyr but to the |NCS|, go to Nordic's `DevZone`_.

  • The :ref:`nfc_tnep_poller` and :ref:`nfc_tag_reader` samples cannot be run on the nRF5340 PDK. There is an incorrect number of pins defined in the MDK files, and the pins required for :ref:`st25r3911b_nfc_readme` cannot be configured properly. (fixed)
  • NFC tag samples are unstable when exhaustively tested (performing many repeated read and/or write operations). NFC tag data might be corrupted. (fixed)
  • For nRF5340, the pins P1.12 to P1.15 are unavailable due to an incorrect pin number definition in the MDK. (fixed)
  • The MCUboot recovery feature using the USB interface does not work. (fixed)