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.
Release Notes:
nRF5 SDK for Thread and Zigbee v4.0.0 ------------------------------------- Release Date: Week 1, 2020 This release is the production-ready release of the Thread features available on the nRF52840 and nRF52811 devices. It also includes an experimental release of the Thread features available on the nRF52833 device, as it has not been run for internal or external certification tests. This release is the 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 successfully tested in Zigbee Alliance Authorized Test Laboratory and is pending a formal approval from Zigbee Alliance as a Zigbee Compliant Platform. 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. Minor changes to the SDK v16.0.0 are summarized in the following section. *** Changes to nRF5 SDK v16.0.0 ******************************* - 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 ****** - Added support for nRF52833 and the related examples. - Added support for the nRF21540 Front End Module with examples for the nRF21540 Development Kit (PCA10112). - Updated SDK base to the nRF5 SDK 16.0.0 (including SoftDevice S140 7.0.1). - Thread: - Integrated nrf_security in OpenThread for nRF52840 (https://github.com/NordicPlayground/nrfxlib/tree/master/nrf_security). - Added support for DHCPv6 Client and DHCPv6 Server. - Zigbee: - Added support for Zigbee PRO R22 specification. - Added experimental support for Work With All Hubs (WWAH) cluster and extensions in the stack. ****** Thread and Zigbee common features ****** - Added initial support for nRF21540 Front End Module. The SDK includes out-of-the-box support for the GPIO handling. Control over SPI will be added in the future. ****** Thread ****** The Thread examples in this SDK are built on top of the OpenThread stack: https://github.com/openthread/openthread. *** New features **************** - Added support for nRF52833, with examples. - Integrate nrf_security for nRF52840 (https://github.com/NordicPlayground/nrfxlib/tree/master/nrf_security) - Added support for DHCPv6 Client and DHCPv6 Server. *** Changes *********** - Updated OpenThread libraries in the SDK. - Updated OpenThread and wpantund components in the Nordic OpenThread Border Router. - Updated examples to align with API changes in the new OpenThread stack. - OpenThread libraries have been built with External Heap option (EXTERNAL_HEAP=1). All bare-metal examples in the SDK use nrf_mem_manager for heap allocation. Examples with FreeRTOS use the internal FreeRTOS heap implementation instead. - Removed a set of certification libraries. Now the same set of the OpenThread libraries is used for examples and internal certification tests. - Removed a set of OpenThread thread-safe libraries with concurrent access to cryptographic functions for RTOS environments (due to the introduction of nrf_security). *** 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. - OTA DFU: Migration from the nRF5 SDK for Thread and Zigbee version earlier than v4.0.0 is not supported for multiprotocol applications. Migration from the nRF5 SDK for Thread and Zigbee version earlier than v4.0.0 for Thread only applications is supported, however has not been tested. *** 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 Commissiond 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 - The nrf_security library used in nRF52840 does not clean CryptoCell pending IRQ bit in NVIC register. Clearing it is necessary to put MCU into the sleep mode in multiprotocol examples. A workaround for this issue has been implemented in the thread_sleep function. *** Compatible tools ******************** - nrfutil-5.1.0 (available from https://github.com/NordicSemiconductor/pc-nrfutil) - nRF Thread Topology Monitor (nRF TTM) v0.12.0-1.alpha - RaspPi_OT_Border_Router_Demo_v4.0.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/8a1992e2e42fb707babe9491a6a1456e553490e8 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/a4dd306bf1ee6229c3d2bd329a243224e9d61723 - https://github.com/openthread/openthread/commit/8a1992e2e42fb707babe9491a6a1456e553490e8 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 *** Certification ***************** The nRF52840 device has been officially certified with a previous version of the OpenThread stack as Thread Group Certified Component. When developing a product with the current version of OpenThread, you need to apply for product certification. The included stack was internally tested using Thread V1.1 Test Harness 1.4.0 R49.3 and the complete Thread Test Bed. The DUT device in the SoC architecture has been tested in the following combinations: - PCA10056 v1.0.0 - GCC libraries All 158 out of 158 tests passed. The test Router_5_6_3 occasionally fails due to the incorrect test result. This problem was resolved by the Thread Group: https://threadgroup.atlassian.net/browse/TSTBED-108. For internal certification, the test script for Router_5_6_3 was replaced with the one attached in the link above. *** 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.18 - ARM: MDK-ARM version 5.25 - nRF Command Line Tools 10.3.0 - J-Link: 6.44e 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 production-ready release of the Zigbee features available on the nRF52840 and nRF52833 devices. *** New features **************** - Added support for Zigbee PRO R22 specification. - Added support for nRF52833, with examples. - Added implementation of the default signal handler. *** Changes *********** - Updated examples to align with API changes in the ZBOSS stack v3.3. *** Limitations *************** - Dynamic Memory Config (KRKNWK-3282): Binding table entry number with unique source address, endpoint, and cluster ID is limited to 32. - ZB KERNEL (KRKNWK-3263): Zigbee performance might be affected by heavy flash operations. Zigbee stack subsystem periodically runs migration process. As flash operations block the CPU, this may affect Zigbee time-critical processes (Association, Rejoin, Leave, GreenPower Commissioning, etc.) if it occurs 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 mass radio operations. This issue does not affect steady state operation. - OTA DFU: Migration from the nRF5 SDK for Thread and Zigbee version earlier than v4.0.0 is not supported. *** Known issues **************** - ZB KERNEL (KRKNWK-3317): It may happen that an incoming massage will be acknowledged by a node with APS ACK transmission, but the message will not be delivered to the application layer. - OTA DFU (KRKNWK-3315): In case of a MCU reset between completion of the OTA image transfer and postponed firmware upgrade, the upgrade will be applied immediately. - OTA DFU (KRKNWK-3255): It is impossible to cancel the OTA upgrade by sending Default Response with code ABORT in response to OTA Upgrade End Request sent by the client. - ZB KERNEL (KRKNWK-4666): Under high-load conditions, it is possible that the Sleepy End Device will enter ZB_ABORT() after loosing connectivity with its parent. *** Compatible tools ******************** - nrfutil-5.0.0 or newer (available from https://github.com/NordicSemiconductor/pc-nrfutil) *** 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.18 - ARM: MDK-ARM version 5.25 - nRF Command Line Tools 10.3.0 - J-Link: 6.44e Supported SoftDevices for multiprotocol support: - S140 v7.0.1 Supported boards: - PCA10056 (from version 1.0.0) - PCA10059 - PCA10100 - PCA10112 ****** ZBOSS (Zigbee stack) ****** The nRF5 SDK for Thread and Zigbee v4.0.0 includes the production release for the ZBOSS stack, based on the R22 ZBOSS SDKs for GCC, IAR, and Keil. The release has been certified for Zigbee PRO+GPPB, for nRF52833 and nRF52840. For detailed information about the new features of the stack and migration guide, see the Zigbee stack new features page. *** Changes *********** - Added ZBOSS libraries and sample binaries for nRF52833. - Added experimental support for Work With All Hubs (WWAH). - zb_set_installcode_policy is now avaliable for all Zigbee roles (ZB-97). - Applied modifications to the HA samples for the full ZTT requirement support. Passed ZCL 7.0 cluster testing against ZTT. - Updated the SDK samples to use the new buffer and scheduler API. - Added support for the new nRF radio driver FEM API (ZB-87). - Changed FEM type to three-pin-gpio (ZB-103). - Updated OSIF files for RNG peripheral init and Zigbee NVRAM config page size (ZB-92). - Moved MAC source matching algorithm to the radio driver. - Removed the following error codes: - RET_INCOMPATIBLE_TYPES_IN_COMPARE - RET_INCOMPATIBLE_TYPES_IN_ASSIGNMENT - RET_INCOMPATIBLE_TYPES_IN_EXPRESSION - RET_ILLEGAL_COMPARE_OPERATION - RET_DOES_NOT_EXIST - RET_CANCELLED_BY_USER - RET_FILE_WRITE_ERROR - RET_FILE_READ_ERROR - RET_FILE_PARTIAL_WRITE - RET_TOO_MANY_OPEN_FILES - RET_INVALID_BINDING - RET_NO_ACK - RET_ACK_OK - RET_NO_BOUND_DEVICE - Renamed RET_COULD_NOT_OPEN_FILE to RET_INVALID_FORMAT. *** API ******* - See the migration guide page for detailed description of API changes. *** Bugfixes ************ - Fixed BDB initialization. Now permit_join_request is not sent after the rejoin (ZB-98). - Fixed Window Covering Device ID (ZB-90). - Fixed communication with devices that does not include the extended source address into the Network payload (ZB-102). - Fixed several bugs in documentation. - Fixed RADIO_STATE_TX_ACK mode. (ZB-94). *** Environment *************** - Tested with the radio driver v1.6.1 from the master branch https://github.com/NordicSemiconductor/nRF-IEEE-802.15.4-radio-driver/releases/tag/1.6.1 SHA: 61bc74d7fb420779e58795581c0b53a0531c89c1 - Tested with the nRF5 SDK nRF5_SDK_16.0.0_21de520.zip (Release Date: Week 32, 2019). - Tested with Softdevice version: s140_nrf52_7.0.1_softdevice.hex