nRF5 SDK for Thread and Zigbee v4.1.0
Introduction

The nRF5 Software Development Kit for Thread and Zigbee helps you when developing products for these protocols with Nordic Semiconductor's advanced nRF52 devices.

Both the Zigbee stack and the Thread stack and examples are production level.

Note
When developing products using the Zigbee stack, in several .h files you will come across references to snippets. The files containing these snippets are not included in the SDK package. Check the API reference for the related .h file to see the snippet code usage.

Release Notes:

nRF5 SDK for Thread and Zigbee v4.1.0
-------------------------------------
Release Date: Week 18, 2020
  
This release is a minor production-ready release of the Thread features available on the nRF52840, nRF52811, and nRF52833 devices.
  
This release is a minor production-ready release of the Zigbee features available on the nRF52840 and nRF52833 devices.
The Zigbee stack is based on the ZBOSS stack v3.3 and conforms to Zigbee PRO R22 and Green Power Proxy Basic specifications.
 
The Zigbee stack provided by the release has been certified by Zigbee Alliance as a Zigbee Compliant Platform for nRF52840 and nRF52833.
 
The Nordic Zigbee software solution released as part of the nRF5 SDK for Thread and Zigbee incorporates the Base Device Behavior specification (ver. 1.0) and the ZCL specification (ver. 7).
This enables to build, certify, and ship commercial Zigbee 3.0 Certified Products.
  
Software components and application examples for MDK, peripherals, BLE, and NFC have been inherited from the nRF5 SDK v16.0.0. No new changes to nRF5 SDK v16.0.0 have been made compared with the nRF5 SDK for Thread and Zigbee v4.0.0.
  
*** Changes to nRF5 SDK v16.0.0
*******************************
The following changes to the SDK v16.0.0 have been made in the nRF5 SDK for Thread and Zigbee v4.0.0
and are valid for this release:
- Eddystone advertising parameters were adjusted for multiprotocol examples, so the delay caused by timeslot assignment does not affect intervals between BLE advertisements.
- nRF CLI over USB CDC backend was extended to handle the USB port close event.
- USB CDC drivers were extended by Thread and Zigbee device VIDs and PIDs.
- nRF Oberon libraries were updated from revision 3.0.1 to revision 3.0.3.
- nRF DFU API was extended by a function to restart the DFU image download.
- Added support for the Arduino joystick shield.
 
  
****** Multiprotocol limitations ******
- Interrupts with IRQ priority 2 and 3 must not be used for multiprotocol examples.
- Because of limitations of simultaneous operation of the SoftDevice frontend and the 802.15.4 frontend:
  - Do not use the PPI channels reserved by the SoftDevice (17, 18, 19).
  - The SoftDevice and the 802.15.4 driver must use separate sets of PPI channels, for example (1, 2) and (3, 4).
  - The SoftDevice and the 802.15.4 driver must use separate sets of GPIOTE channels, for example 4 and (5, 6, 7).
- Due to a limitation of the SoftDevice, depending on the configured timeslot timeout of the nRF IEEE 802.15.4 radio driver, BLE activity may cause 100% CPU utilization or increase switching times.
  The details are presented in the official documentation in the Multiprotocol considerations section, available in Thread and Zigbee shared features > Multiprotocol support with BLE/Bluetooth > Dynamic multiprotocol.
- Three-pin Front End Module is not supported due to SoftDevice limitations.
 
 
---------------------------------------
  
  
****** Release highlights ******
- Thread: Added production support for nRF52833, enabled Thread certification by inheritance, and optimized energy consumption for Sleepy End Devices.
- Zigbee: Optimized sleep current consumption in SED application and enabled the Control4 ecosystem.
 
****** Thread ******
This is a minor production-ready release of the Thread features available on the nRF52840, nRF52811, and nRF52833 devices.
The Thread examples in this SDK are built on top of the OpenThread stack: https://github.com/openthread/openthread.
  
*** New features
****************
- Added production support for nRF52833.
- Implemented changes related to the certification by inheritance process.
  - Generated new set of OpenThread libraries.
  - Moved transport layer to a new separate library in OpenThread.
  - Updated documentation with information about Thread certification process and the description of certification libraries.
  
*** Changes
***********
- Optimized energy consumption by reducing RX time before transmitting for Sleepy End Devices.
- Updated Border Router and its components.
  - Updated MQTT-SN Gateway to version ad86a276b56253f39686bc0a5984b4ebf39fe36f.
  - Aligned the OpenThread version in the SDK for the RCP example.
  - Modified the wpantund default command timeout from 5 to 10 seconds to take into account the commissioning process of nRF52833 device.
  - Modified the MQTT-SN broker address to the IPv4 address of mqtt.eclipseprojects.io in the Border Router configuration based on Raspberry Pi.
- Updated BLE Scanner and Thread SED Example RSSI filtering process and the example's documentation.
- Implemented the nrfx_nvmc driver instead of the deprecated nrf_nvmc HAL API in the OpenThread Flash platform.
- Updated flash page values reserved for OpenThread settings for nRF52833 to 2 pages.
- Applied the nrfx_ficr patch to OpenThread. (KRKNWK-5483)
- Updated nrf_security to version 0.9.2 and added support for additional cryptographic operations: 
  - The Secure Hash Algorithms 1 and 512 (SHA-1 and SHA-512) cryptographic hash functions.
  - ChaCha20-Poly1305 algorithm for Authenticated Encryption with Associated Data (AEAD).
  With the new nrf_security workaround for clearing, the CryptoCell_pending IRQ bit is not needed anymore.
- Updated the memory requirements documentation page with information for nRF52833.
- Removed the debug version of the FreeRTOS CoAP Server example for Segger Embedded Studio.
- Added support for Jam Detection and Child Supervision modules that can be used by the application or from the wpantund level.
- Updated the nRF Thread Topology Monitor zip package.
  It now includes the required hex files for the configuration of viewing network topology.
  These files were previously included in the SDK and this dependency is now removed.
 
 
*** Bugfixes
************
- Fixed an issue where the stack_guard library could not be used with the NRF_LOG module disabled. (KRKNWK-4984)
- Fixed an issue where the DFU Client Memory Manager settings were not aligned with other Thread examples. (KRKNWK-5137)
- Fixed an issue where BLE Scanner and Thread SED Example would crash with a quick disconnect and system reset upon pressing Button 1 on the multiprotocol node. (KRKNWK-5176)
- Fixed a previously known issue where the nrf_security library used in nRF52840 would not clean the CryptoCell pending IRQ bit in NVIC register.
  This was fixed with the update to nrf_security v0.9.2.
- Fixed an issue with the Thread Dynamic Multiprotocol Template example.
  - Make sure that it fits in the flash memory for nRF52833 by reducing the Flash Data Storage page usage and by optimizing program code size.
 
*** Limitations
***************
- Thread initialization must be done outside of the FreeRTOS thread, that is before the FreeRTOS thread is created.
- The nrf_security with hardware acceleration for cryptographic operations is not supported on Keil compiler.
- Due to flash size restrictions, BLE HRS and Thread CoAP Server with FreeRTOS Example and BLE Proximity and Thread CoAP Server Example are supported only on nRF52840.
- All pre-generated OpenThread libraries for nRF52833 for Keil are configured to use 2 flash pages (8 kB of Flash) for OpenThread settings.
  For Keil compiler, you must define the number of flash pages used in the code itself by setting PLATFORM_FLASH_PAGE_NUM define.
  Note that vanilla OpenThread repository (in the released commit) sets PLATFORM_FLASH_PAGE_NUM define to 4, while during building OpenThread pre-compiled libraries this value is overwritten to 2 for nRF52833.
  For other compilers like GCC, SES, or IAR, the size of OpenThread settings is defined by linker scripts and the PLATFORM_FLASH_PAGE_NUM define is not used.
- For Windows users, the path length limitation to 255 characters can create issues when unpacking the SDK files.
  Make sure the SDK files are unpacked close to the disk drive path, for example C:/sdk.
- Due to the nRF Thread Topology Monitor zip package update, the Thread CLI examples within the SDK cannot be used with the TTM v0.13.0.
  Use the provided hex files for the required device instead.
  
 
*** Known issues
****************
- Nordic OpenThread Border Router occasionally fails to initialize the access point service.
  Currently, a reboot is required in such situations.
- To use Ethernet connection on Nordic OpenThread Border Router, the Ethernet cable must be plugged in before the boot.
- Re-initialization of the OpenThread stack and platform can be done only for single PHY configuration.
  For multiprotocol configuration, the full reset of the MCU is needed.
- The NFC Commissioned daemon on Nordic OpenThread Border Router does not turn on automatically after the boot.
  The daemon starts when wpantund indicates that NCP is in the "associated" state.
  Due to the bug, the first state notification from wpantund is missed.
  As a workaround, either push physical reset button on NCP after Nordic OpenThread Border Router has booted, or run the following commands manually:
    systemctl stop nfccommissiond
    systemctl restart nfccommissioner
    systemctl start nfccommissiond
 
  
*** Compatible tools
********************
- nrfutil-6.1.0 (available from https://github.com/NordicSemiconductor/pc-nrfutil)
- nRF Thread Topology Monitor (nRF TTM) v0.13.0
- RaspPi_OT_Border_Router_Demo_v4.1.0-1.alpha.img
  
These tools are available from https://www.nordicsemi.com/thread#Downloads and https://www.nordicsemi.com/eng/Products/nRF-Thread-Topology-monitor#Downloads
  
The following OpenThread commit has been used to generate pre-built Thread stack libraries, and for testing and verification:
- https://github.com/openthread/openthread/commit/c6a258e3a5bd90aa26d8245c435c0ae5797027f4
  
The following nRF IEEE 802.15.4 radio driver has been included in the pre-built Thread stack libraries, and used for testing and verification:
- https://github.com/NordicSemiconductor/nRF-IEEE-802.15.4-radio-driver/commit/58c95b28cb2f3cf0f6585b3dfbddbd35516f54e6 (v1.6.1)
  
The following wpantund and Border Router commits have been used as part of the Nordic OpenThread Border Router solution, and for testing and verification:
- https://github.com/openthread/wpantund/commit/87c90eedce0c75cb68a1cbc34ff36223400862f1
- https://github.com/openthread/ot-br-posix/commit/79ef99b911380c4ab8a7b29222a30f79d3c749fe
- https://github.com/openthread/openthread/commit/c6a258e3a5bd90aa26d8245c435c0ae5797027f4
- https://github.com/eclipse/paho.mqtt-sn.embedded-c/commit/ad86a276b56253f39686bc0a5984b4ebf39fe36f
  
The following nRF Sniffer for 802.15.4 commit has been used as part of the nRF Sniffer for 802.15.4 solution, and for testing and verification:
- https://github.com/NordicSemiconductor/nRF-Sniffer-for-802.15.4/commit/dff6c8d7170a034b09ce2ece361af77c72be4f37
 
*** Environment
***************
The following toolchains have been used for testing and verification of the examples:
- GCC: GCC ARM Embedded 7.2018 q2 update
- IAR: IAR Workbench 7.80.4
- SES: SES 4.12
- ARM: MDK-ARM version 5.25
- nRF Command Line Tools: 10.3.0
- J-Link: 6.44e
- nrfutil: 6.1.0 (available from https://github.com/NordicSemiconductor/pc-nrfutil)
  
Supported SoftDevices for multiprotocol support:
- S140 v7.0.1
  
Supported boards:
- PCA10056 (from version 1.0.0)
- PCA10056e
- PCA10059
- PCA10068
- PCA10100
- PCA10112
  
 
****** Zigbee ******
This is a minor production-ready release of the Zigbee features available on the nRF52840 and nRF52833 devices.
It optimizes sleep current consumption in SED application, enables the Control4 ecosystem, and improves some of the other existing features.
  
*** Changes
***********
- Added a common procedure for handling the ZB_ZDO_SIGNAL_LEAVE signal in all Zigbee examples that implement router or end device role.
- Extended memory configuration documentation.
- Added automatic PAN ID conflict resolution in all Zigbee examples.
- Added a parser for channel mask placed in the production configuration inside the default signal handler.
- Added documentation for Zigbee production configuration generator in nrfutil.
- Updated Zigbee CLI wrapper to v0.3.
- Optimized sleep current consumption in SED application by implementing RAM retention and power down.
- Enabled ZB_CONTROL4_NETWORK_SUPPORT to activate the Control4 API and cluster.
 
*** Bugfixes
************
- Fixed a bug where the Zigbee stack would not deliver messages to the application layer, while the messages were acknowledged by the APS ACK transmission if their APS counter matched with the tunneled commands. (KRKNWK-3317)
- Fixed a bug where the radio driver would get stuck in the RADIO_STATE_TX_ACK mode infinitely if all interrupts were blocked. (KRKNWK-4711)
- Updated outdated links to the ZigBee Alliance official pages in documentation. (KRKNWK-4900)
  
*** Limitations
***************
- Migration from the nRF5 SDK for Thread and Zigbee version earlier than v4.0.0 is not supported.
- Zigbee performance might be affected by heavy flash operations.
  Zigbee stack subsystem periodically runs the migration process.
  As the flash operations block the CPU, this may affect Zigbee time-critical processes (Association, Rejoin, Leave, GreenPower Commissioning, among others) if these operations occur at the same time with such processes.
  The likelihood of this happening is low, but this may occur if the Parent device is joining 20+ devices one-by-one without delays, or in other cases of mass NVRAM operations in intersection with the mass radio operations.
  This issue does not affect the steady state operation. (KRKNWK-3263)
- Binding table entry number with unique source address, endpoint, and cluster ID is limited to 32. (KRKNWK-3282)
- It is impossible to initialize both Control4 cluster and Power Config Cluster. (KRKNWK-5702)
- Multi-endpoint device can have reporting configured for only one of its endpoints. (KRKNWK-5826)
- For Windows users, the path length limitation to 255 characters can create issues when unpacking the SDK files.
  Make sure the SDK files are unpacked close to the disk drive path, for example C:/sdk.
  
*** Known issues
****************
- In case of an MCU reset between the completion of the OTA image transfer and a postponed firmware upgrade, the upgrade will be applied immediately. (KRKNWK-3315)
- It is impossible to cancel the OTA upgrade by sending Default Response with code ABORT in response to an OTA Upgrade End Request sent by the client. (KRKNWK-3255)
- Under high-load conditions, it is possible that the Sleepy End Device will enter ZB_ABORT() after losing connectivity with its parent. (KRKNWK-4666)
  
*** Environment
***************
The following toolchains and tools have been used for testing and verification of the examples:
- GCC: GCC ARM Embedded 7.2018 q2 update
- IAR: IAR Workbench 7.80.4
- SES: SES 4.12
- ARM: MDK-ARM version 5.25
- nRF Command Line Tools: 10.3.0
- J-Link: 6.44e
- nrfutil: 6.1.0 (available from https://github.com/NordicSemiconductor/pc-nrfutil)
  
Supported SoftDevices for multiprotocol support:
- S140 v7.0.1
  
Supported boards:
- PCA10056 (from version 1.0.0)
- PCA10059
- PCA10100
- PCA10112

Documentation feedback | Developer Zone | Subscribe | Updated