Zigbee EmberZNet SDK 8.1 GA Release Notes
Silicon Labs
August 6, 2025
Silicon Labs is the vendor of choice for OEMs developing Zigbee networking into their products. The Silicon Labs Zigbee platform is the most integrated, complete, and feature-rich Zigbee solution available.
Silicon Labs EmberZNet SDK contains Silicon Labs' implementation of the Zigbee stack specification.
These release notes cover SDK version(s):
8.1 GA, Rev 3 released August 6, 2025
8.1 GA, Rev 2 released April 1, 2025
8.1 GA, Rev 1 released February 5, 2025
8.1 GA released December 16, 2024
Zigbee Key Features
- 250+ entries in APS link key table
- ZigbeeD support on Android 12 (v21.0.6113669) and Tizen (v0.1-13.1)
- xG26 Module support
Multiprotocol
- ZigbeeD and OTBR support on OpenWRT GA
- DMP BLE + CMP ZB & Matter/OT with Concurrent Listening on MG26 for SoC - GA
- 802.15.4 Unified radio scheduler priority component
- Debian packaging support for MP host applications - Alpha
Compatibility and Use Notices
For information about security updates and notices, see the Security chapter of the Platform Release Notes installed with this SDK or on the TECH DOCS tab on https://www.silabs.com/developers/zigbee-emberznet. Silicon Labs also strongly recommends that you subscribe to Security Advisories for up-to-date information. For instructions, or if you are new to the Zigbee EmberZNet SDK, see Using This Release.
Compatible Compilers:
IAR Embedded Workbench for ARM (IAR-EWARM) version 9.40.1.
- Using wine to build with the larBuild.exe command line utility or IAR Embedded Workbench GUI on macOS or Linux could result in incorrect files being used due to collisions in wine's hashing algorithm for generating short file names.
- Customers on macOS or Linux are advised not to build with IAR outside of Simplicity Studio. Customers who do should carefully verify that the correct files are being used.
GCC (The GNU Compiler Collection) version 12.2.1, provided with Simplicity Studio.
The EZSP protocol version for this release is 0x10.
1 New Items
1.1 Important Changes
The APS link key table size (configured using SL_ZIGBEE_KEY_TABLE_SIZE) is expanded from 127 to 254 entries.
- R23 support is added for ZDD Network commissioning functionality. Tunneling functionality is available without support for Legacy Network use cases.
- The Network Steering and Network Creator components have been updated to include support for R23 joining. These include the following related changes.
- The default Trust Center Link Key (TCLK) request policy has been updated to generate new keys for each requesting device. A new key is generated each time the requesting devices attempt to update their Trust Center Link Key.
- Due to the previous TCLK policy change, the Network Creator Security component now requires the Security Link Keys component. Applications upgrading will be updated to conform to this new requirement.
- A new configuration, SL_ZIGBEE_AF_PLUGIN_NETWORK_CREATOR_SECURITY_ALLOW_TC_USING_HASHED_LINK_KEY, is added to allow joining using a core, hashed key. This configuration is found under the Network Creator Security component. Use of this policy allows each joining device to receive a unique TCLK post-join, but repeated attempts to update the TCLK will not result in a new key for the requesting device. This using of hashed link keys was the default policy before this release, and use of this policy allows the Trust Center to avoid bringing in the Security Link Keys component, which saves keys in flash. Note: Silicon Labs does not recommend use of this policy, as this prevents joining devices from rolling, or updating, their TCLKs.
- A new configuration set is added to the component zigbee_ezsp_spi to allow configuration of host SPI device and its pin interfaces.
- The example projects, including the project files (.slcps) and project folder, are renamed to Silicon labs naming guidelines and moved under "projects" directory.
1.3 New APIs
Revision 3
A new API, sl_status_t sl_zigbee_send_raw_message_with_tag, is the same as sl_zigbee_send_raw_message except that it adds a messageTag to the outgoing message, has been added. The details of the signature are provided here and are also available at docs.silabs.com:
/** @brief Send the given message over the air without higher layer
* network doheaders with message tag is inputted by the user.
*
* The first two bytes are interpreted as the 802.15.4 frame control field.
* If the Ack Request bit is set, the packet will be retried as necessary.
* Completion is reported via ::sl_zigbee_raw_transmit_complete_handler().
* Note that the sequence number specified in this packet is not taken into
* account by the MAC layer. The MAC layer overwrites the sequence number field
* with the next available sequence number.
*
* @param message The message to transmit.
* @param mesage_length The message length to transmit.
* @param priority Transmit priority
* @param useCca Flag should the CCA stay on or not
* @param messageTag The message tag to be used for the message.
*
* @return ::SL_STATUS_OK if the message was successfully submitted to
* the transmit queue, and ::SL_STATUS_FAIL otherwise.
* @internal SL_ZIGBEE_IPC_ARGS
* {# message | length: message_length | max: MAX_IPC_VEC_ARG_CAPACITY #}
``````
*/
sl_status_t sl_zigbee_send_raw_message_with_tag(const uint8_t *message, uint8_t message_length,
sl_zigbee_transmit_priority_t priority, bool useCca, uint8_t messageTag);
1.4 New Platform Support
- New modules
MGM260PD32VNA2
MGM260PD32VNN2
MGM260PD22VNA2
MGM260PB32VNA5
MGM260PB32VNN5
MGM260PB22VNA5
BGM260PB22VNA2
BGM260PB32VNA2 - New radio boards
MGM260P-RB4350A
MGM260P-RB4351A - New part
efr32xg27
Explorer Kit
BRD2709A
MGM260P-EK2713A
1.5 New Documentation
- A new EZSP user guide UG600 for releases 8.1 and above.
Revision 1
- Removed an empty stack API documentation page for "Status Codes", which previously contained the legacy EmberStatus codes used by ZNet v7 and earlier versions.
Refer to sl_status_t for information on the status codes used by ZNet v8.
2 Improvements
- SL_ZIGBEE_KEY_TABLE_SIZE limits expanded up to 254 entries.
- Added zigbee_security_link_keys to Z3Light.
- Added zigbee_security_link_keys to zigbee_mp_z3_tc_z3_tc. Updated its key table size as well.
- Increased the Z3 Gateway key table size (that will be set to ncp) to 20.
Revision 3
To match new command handler signatures while fixing a issue of missing ZCL_STOP_MOVE_STEP_COMMAND_ID command processing, the command handler API signature have been updated.
From:
bool zigbee_af_color_control_cluster_stop_move_step_cb(uint8_t optionsMask, uint8_t optionsOverride)
To:
bool sl_zigbee_af_color_control_cluster_stop_move_step_cb(sl_zigbee_af_cluster_command_t *cmd)
Fixed Issues
ID # | Description |
1043514 | Fixed a potential issue when the neighbor table size on an end device is configured greater than 1 by flagging an error at the generation step. |
1105979 | Renamed component zigbee_app_framework_common to zigbee_system_common. Renamed source files, header files zigbee_app_framework_common to sl_zigbee_system_common. Added priority to function sli_zigbee_ncp_tick_callback in order to reorder autogen function. |
1240421 | Added all R23 pro-compliance CLIs to ZUTH. |
1254397 | Added mutex protection for App Framework event queue so App Framework event APIs can be called from multiple tasks. |
1259298 | Fixed an issue with the label of the pro leaf stack. |
1265831 | Fixed an issue on NCP where source route overhead should always present for incoming message callback. |
1275779 | Added a global processing that sends a success default response when the ZCL command was handled successfully but no response was sent, and removed the manually triggered success default responses in cluster command handler. |
1277857 | Fixed an issue that caused GPD Commissioning Reply to be filtered at the test harness. Also, added support for quick response for GPDF with App ID 0x02. |
1294341 | Fixed an issue that caused zigbee AF debug prints to add an extra line. |
1296881 | After a new end device joined on the sub-GHz band, the duty cycle aging data was mistakenly cleared for all end device children. |
1298015 | Removed the indirection through sli_zigbee_common_wakeup_isr which was only being used for an internal component and was made redundant by preceding calls in the same call chain. |
1297976 | The Z3Gateway built on Raspberry Pi with kernel 6.6 failed to connect to NCP over SPI by default. Solution is to redefine the GPIOs as described here. Note the following information on GPIOs that maps to the SPI NCP interface. On kernel 6.6, running sudo cat /sys/kernel/debug/gpio That will display following gpio-520 (GPIO8 ) gpio-534 (GPIO22 ) gpio-535 (GPIO23 ) gpio-536 (GPIO24 ) redefine the GPIO for SPI NCP interface from above sysfs in spi-protocol-linux-config.h as #define NCP_CHIP_SELECT_GPIO "520" #define NCP_HOST_INT_GPIO "534" #define NCP_RESET_GPIO "535" #define NCP_WAKE_GPIO "536" |
1300935 | Fixed excess default response from Z3Gateway for OTA cluster. |
1305214 | sl_zigbee_mac_filter_match_list has been fixed to work properly in RTOS builds. The API now relies fully on list_length to parse the length of the passed-in filter list, and the length of a MAC filter match list has a limit of 32 (SL_802154MAC_FILTER_MATCH_LIST_MAX_LENGTH). |
1306512 | Introduced new APIs to allow customers Set/Get CTUNE value via mfglib mode with command plugin mfglib ctune set/get. Changing CTUNE only in mfglib normal mode, it can't be set in tone/stream operations. |
1307470 | Tizen-13.1 specific 32 bit and 64 bit libraries with soft floating point support have been added to the list of Zigbee library variants. Zigbeed could be generated and built with these libraries using zigbee_aarch64_tizen_13_1_gcc_9_2 or zigbee_arm7l_tizen_13_1_gcc_9_2 components. |
1309915 | Zigbeed libraries for Android ndk-r25c have been added to our list of supported variants. To use these libraries, Zigbeed needs to be generated with the newly added zigbee_aarch64_android_ndk_r25c component, and built with adnroid-ndk-r25c or compatible compilers. |
1310485 | Reworked internal stack buffer initialization to acquire memory for buffer heap via library code callback. |
1310501 | The DMP Tuning component is now deprecated. Users may refer to the '802.15.4 Unified radio scheduler priority' (radio_priority_15_4) component in its place to alter stack radio priorities. This component allows configuration of radio priorities for transmits, background receive, and active receive states of the 802.15.4 radio in a single-stack and multiprotocol scenario. |
1312065 | Fixed an issue where the non-stub implementation of sl_zigbee_child_index() was incorrectly placed inside the Zigbee R22 Support library, causing it to return an invalid index for builds that do not use that library. |
1312097 | Fixed an issue that could pass an invalid mac layer packet to cause an assert. |
1312099 | Fixed an issue that could pass an APS malformed packet to cause a bus fault. |
1312369 | Made SL_LEGACY_HAL_WDOG_IRQHandler() weak function, that allows customers to provide their own implementation. |
1314347 | Adjusted "find_and_bind" CLI to "find-and-bind" to conform to CLI naming convention. |
1315570 | Token Manager shouldn't assert in cases when the NVM3 cache is too small. Instead, we print a warning on a debug firmware, and also introduce sl_token_manager_assert_on_cache_overflow_callback that determines whether we want to assert on the NVM3 cache overflow or not. |
1316959 | Fixed a compile issue when enabling multi-network on a standard app. |
1318352 | Reorganized all Zigbee and MP apps into a common app/projects folder. |
1321780 | Fixed an issue that cause the DUT dropping the GPDF commissioning from GPD which has IntraPAN set to 0 , and source PAN ID presents. |
1327706 | The EZSP_MAX_FRAME_LENGTH is reverted back to 220. This allows the maximum length of XNCP message to be 220 as well. |
1328991 | Fixed an issue that caused some GP proxy tests to fail on RCP setup. |
1330292 | Added R23 support for network steering/network creator (initial join). |
1330418 | Fixed an issue where the beaconPayloadStartIndex was incorrect when parsing the beacon tlvs. |
1331483 | Updated the CPC host app usage text to bring it in line with currently supported functionality. |
1331580 | Fixed an issue in handling unsolicited rejoin response. |
1331924 | Introduced new APIs to allow customers a Set/Get CTUNE value via mfglib mode with command plugin mfglib ctune set/get. When changing CTUNE only in mfglib normal mode, it could not be set in tone/stream operations. |
1332086 | Fixed an issue that caused MAC Address Filtering component to be always dependent on the CLI component. |
1332364 | Upgraded host_token.nvm (zigbeed) on the host to use new file format. |
1332932 | Zigbee Direct: ZDD's Tunneling Service now supports receiving multiple NPDUs in a single connection interval. Zigbee Direct: ZDD will buffer outgoing NPDUs to the ZVD beyond what can be exchanged in a single connection interval |
1334060 | Fixed an issue on GP RCP interface that caused some GP proxy tests to fail. |
1334549 | Fixed an issue in some GPD apps's initialization that caused a RAIL crash. |
1334581 | Fixed an issue that caused the reported LQI and RSSI always zero on Z3Gateway. |
1337956 | Renamed alpha and internal apps according to UX/DX guidelines. |
1339456 | Added the new configuration, SL_ZIGBEE_AF_PLUGIN_NETWORK_STEERING_ENABLE_AUTOSTART, and a new function, sl_zigbee_af_network_steering_autostart, to network steering. sl_zigbee_af_network_steering_autostart will begin network steering if the configuration is enabled and will otherwise only print a message that the configuration is disabled. This can be used for testing purposes that require more predictable behavior for when network steering is to run. Custom preconfigured keys (pre-configured-key-set command in network steering CLI) are now compatible with optimized scans. |
1341928 | Si4468 firmware patch added to phy-pro2plus-library to address race condition in sub-GHz Tx/Rx processing. |
1342410 | Expanded link key table to accommodate 254 entries in the stack key table. Each entry represents a piece of security information mapped to a particular EUI64 address. Some devices, depending on the use case, may consume 2 entries in the key table - 1 for APS Link Key, 1 for ZDO Authentication Token (used for Dynamic Link Key). Link Key access APIs remain largely unchanged, although index 255 remains a special reserved value for some APIs. |
1342412 | SL_ZIGBEE_KEY_TABLE_SIZE limits expanded up to 254 entries. |
1344155 | Fixed an issue of enumeration mismatch for EmberLeaveRequestFlags. |
1345981 | Custom Basic tokens are non-indexed type, which should not be accessed by index, unlike indexed tokens. While using sl_token_get_data, the index $0 x 7 F$ should be used. |
1348659 | Fixed an issue that caused starting find and bind target on two endpoints at the same time get stuck in an infinite loop in Z3Gateway host application and crash reboot on Z3Light SoC. |
1348673 | Fixed an issue that caused the end device joining failure through the router when R23 and DLK were enabled. |
1349749 | Extraneous ZCL Default Responses with ZCL Success status were sent in response to cluster-specific ZCL commands even when a specific ZCL response was already being sent for that command. |
1350285 | In rare cases, a packet was passed to the Outgoing Packet Handoff Callback with a payload index parameter that exceeded the stated length of the packet buffer, leading to an assert in legacy-packet-buffer.c if the Packet Handoff component was enabled. |
1351489 | Fixed an issue that caused LQI Response to be received with MAC address as All Zeros. |
1351894 | Added new library variant of Zigbee PRO Router Stack, which provides support for rail mux, separate from the already existing variant which combines it with high-datarate PHY support. |
1352421 | Added RX packet information to GP handlers at the application layer. |
1354519 | Fixed issue that caused the APS Verify Key Confirm message processing error. |
1355430 | Fixed warning on mismatched sli_mac_upper_mac_state declaration. |
1356289 | Stack functions that use Buffer Manager APIs to extend/append a packet buffer now perform additional sanity-checking to avoid conditions where insufficient heap space exists to extend the buffer length. |
1357515 | Fixed an issue that caused build errors when the secondary network has the SLI_ZIGBEE_NETWORK_SECURITY_TYPE_SE_FULL type since key-establishment.c expects this to be mapped to the EMBER_AF_HAS_SECURITY_PROFILE_SE_FULL define. |
1358823 | Fixed an issue with ZCP tests where the new link key sent by TC with policy sent a current key that was not hashed. |
1360076 | Zigbee Direct: Fixed handling of authentication of new ZVD to help pass Zigbee Direct Testcases ZDD-CONF-TC-02-CENTR-ZC-0 and ZDD-CONF-TC-02-DISTR. |
1355154 | Fixed an issue in the attribute metadata that caused the access of Electrical Measurement attributes to be read-only instead of read-write as per the ZCL Specification. |
1363780 | Fixed several warning in the framework code with IAR compiler. |
1366437 | Added ezsp.yaml, a machine-readable version of the EZSP specification. |
1367530 | Removed the usage of SL_ZIGBEE_KEY_TABLE_SIZE on the host. From now on, the link key table size will be stored where the stack is running, such as SoC, NCP, or zigbeed images. |
1367899 | Fixed an issue that prevented incoming GP message to the NCP (with GP plugin installed) passing to the host. |
1368790 | Fixed RAIL Mux did not forward packets to upper layer when application was running in mfglib mode. |
1370016 | Increased the GP_INCOMING_FC_TOKEN_TIMEOUT upper limit, so customers can adjust to avoid the flash from quickly wearing out. |
1356760 | A new configuration item, SL_ZIGBEE_AF_PLUGIN_ZCL_CLUSTER_DEFER_ATTRIBUTE_WRITES_TO_NVM_MS, has been added under the ZCL Framework Core component. This configuration item allows the user to defer updating NVM by a specified delay when a ZCL attribute's value is changed. This option is used where an attribute might be getting updated many times in a short time interval, flash access is slower, such as with external flash parts, or if the number of writes to flash is of concern. |
1379172 | New Component: Radio Priority Configurator Added a new component named "radio_priority_configurator." This component allows Zigbee/multiprotocol projects to use the Radio Priority Configurator tool in Simplicity Studio to configure the radio priority levels of the 802.15.4 stack. |
1383387 | An issue has been fixed where a device was unable to join a network, with the message "Error: Scan complete handler returned $0 imes 44$ " printed on the console during the scan process. This error stopped all transmits on the device and is now resolved. |
1379187 | Fixed race condition where CSL changed lower mac state in an interrupt context which caused an assertion in lower mac on zigbee_ble_sleepy_to_sleepy_shades app |
Revision 1
ID # | Description |
1384656 | Fixed an issue in filtering out certain parts to support RTOS-based sample applications because those parts may not have enough resources to support the sample application. Other ref. : 1384578 |
1385659, 1385680 | Fixed a CPC EZSP buffer TX/RX memory leak issue on NCP when running using zigbee_ncp_cpc component. Other ref. : 1385096, 1377518 |
1385700 | An issue was fixed where uninitialized values in Zigbee IPC commands carry garbage values Other ref. : 1376690 |
1386041 | Fixed a compiler warning in throughput.c Other ref. : 1385996 |
1387542 | Fixed an issue to remove the children immediately from the source route table of its parent after it left the network. Other ref. : 1383925 |
1389782 | Fixed a race condition issue where Zigbee IPC commands returned before the Zigbee task woke up and executed the current IPC command. This led to unexpected behavior due to using incorrect IPC command results. |
1402923 | Fixed an issue that caused incorrect command payload representation in gpep_incoming_handler when RTOS (IPC component) is used. |
1402930 | Fixed an issue in sl_zigbee_token_factory_reset when reseting a large number of tokens to factory new. The iteration loop may take more time than the watchdog timeout; fixed the issue by moving the watchdog refresh into the innermost iteration. Other ref. : 1352533 |
1402964 | An issue has been fixed where a Zigbee RTOS image would hang after receiving a ZDO message, such as the Match Descriptor request message. All CLI and packet processing would come to a halt when in the error state. |
Revision 2
ID # | Description |
1369186 | Allow users to configure Address Table Size (macro SL_ZIGBEE_ADDRESS_TABLE_SIZE) via zigbee_pro_stack component inside Simplicity Studio. |
1378043 | Fixed an issue that caused the network steering to call network_found infinitely when too many beacons were present. This was achieved by clearing the scan state appropriately. Other ref: 1340230 |
1382503 | Added the ability for a CSL receiver to register commands from multiple CSL initiators. |
1385694 | Increased zigbee AF task stack and BT event handler stack size to fix device crash issue. Other ref: 1325225 |
1385697 | Fixed an issue where certain packets with invalid data regarding the APS frame size could trigger an assert if received. Other ref: 1312098 |
1389463 | Fixed an issue that caused a crash when forming a network using Z3Gateway with Ito enable on the ncp. |
1399221 | Fixed a memory alignment issue for CSL Tx Buffer. |
1413079 | Fixed the missing restriction issue in Time Server cluster implementation. Other ref: 1408816 |
1413451 | Fixed an issue that caused wrong format in GP Pairing Configuration packet. |
1415014 | Fixed an issue that caused redundant bytes after Status field in Routing table Response packet when it's not supported. |
1424836 | Fixed an issue that caused incorrect behavior in copying message payload in sli_zigbee_stack_raw_transmit_complete_handler when RTOS is used. Other ref: 1421368 |
1425217 | Fixed Multi network didn't work when using Zigbee IPC component. Other ref: 1390107 |
Revision 3
ID # | Description |
1420830 | Fixed a corner case issue when using the Multi-Network feature in conjunction with the Sleepy-to-sleepy feature. The issue resulted in s2s target not responding after joining successfully on secondary network. |
1424260 | Added brd4194a to backlist for SleepyToSleepyShades application since it does not have enough resources to support the application. |
1429308 | Fixed an issue in the Slot Manager component that failed to compile if the application did not include command line interface. |
1430460 | Fixed an issue where S2S shades were not able to receive data from target on primary network if the secondary network on the shades failed to join another network |
1438747 | Fixed an issue where sl_zigbee_gp_proxy_table_process_gp_pairing did not appear to be IPC-safe. |
1438823 | Fixed an issue where the host app crashed when trying to leave network. The Green Power NCP was configured with a much larger GP table size. |
1440404 | Fixed an issue where a Zigbee 3.0 joining device would fail to successfully update its Trust Center Link Key with the trust center. The error symptoms involved a Verify Key Request message sent to the TC that is replied with a correct Verify Key Confirm message, but this Verify Key Confirm message never made its way to the joining device due to routing or other network issues. A subsequent retry of the Verify Key Request message would result in a Verify Key Confirm from the TC that has a status of error, thus killing the update TC link key procedure. |
1442467 | Added upgrade rule to replace zigbee_pro_stack_rail_mux by zigbee_pro_stack. |
1454400 | Fixed an issue of green power sink handling the pairing configuration command with action remove pairing for a groupcast received from a proxy device. |
1473057 | Fixed the issue of missing ZCL_STOP_MOVE_STEP_COMMAND_ID command processing. The command handler API signature has been updated from bool zigbee_af_color_control_cluster_stop_move_step_cb(uint8_t optionsMask, uint8_t optionsOverride) to bool sl_zigbee_af_color_control_cluster_stop_move_step_cb(sl_zigbee_af_cluster_command_t *cmd), as part of this change to match the new command handler signatures. |
1476333 | Fixed potential stack memory corruption when calling sl_zigbee_ezsp_get_configuration_value(). |
1486170 | Added more clarity to the description of the sl_zigbee_af_ota_client_download_complete_cb callback in this release. |
1486243 | Fixed issue where S2S shades were not able to receive data from target on primary network if the secondary network on the shades failed to join another network. |
1486252 | Created a new API sl_status_t sl_zigbee_send_raw_message_with_tag(const uint8_t *message, uint8_t message_length, sl_zigbee_transmit_priority_t priority, bool useCca, uint8_t messageTag). It is like sl_zigbee_send_raw_message, but adds messageTag to identify which message was sent. |
1486254 | Fixed an issue where OTA client fetched the same image again and again when Delete Failed Downloads option was set to false. |
3 Known Issues in the Current Release
Issues in bold were added since the previous release. If you have missed a release, recent release notes are available on https://www.silabs.com/developers/zigbee-emberznet in the Tech Docs tab.
ID # | Description | Workaround |
N/A | The following apps/component is not supported in this release: EM4 support. | Feature will be enabled in subsequent releases. |
193492 | emberAfFillCommandGlobalServerToClientConfigureRe porting macro is broken. The filling of buffer creates incorrect command packet. | Use the "zcl global send-me-a-report" CLI command instead of the API. |
278063 | Smart Energy Tunneling plugins have conflicting treatment/usage of address table index. | No known workaround |
289569 | Network-creator component power level picklist doesn't offer full range of supported values for EFR32 | Edit the range <-8..20> specified in the CMSIS comment for EMBER_AF_PLUGIN_NETWORK_CREATOR_RADIO_P OWER in the <sdk>/protocol/zigbee/app/framework/plugin/network-creator/config/network-creator-config.h file. For example, change to <-26..20>. |
295498 | UART reception sometimes drops bytes under heavy load in Zigbee+BLE dynamic multiprotocol use case. | Use hardware flow control or lower the baud rate. |
312291 | EMHAL: The halCommonGetIntxxMillisecondTick functions on Linux hosts currently use the gettimeofday function, which is not guaranteed to be monotonic. If the system time changes, it can cause issues with stack timing. | Modify these functions to use clock_gettime with the CLOCK_MONOTONIC source instead. |
338151 | Initializing NCP with a low packet buffer count value may cause corrupt packets. | Use the 0xFF reserved value for packet buffer count to avoid the too-low default value |
387750 | Issue with Route Table Request formats on end device. | Under Investigation |
400418 | A touchlink initiator cannot link to a non-factory-new enddevice target. | No known workaround. |
424355 | A non-factory-new sleepy end device touchlink targetcapable initiator is not able to receive a device information response in certain circumstances. | Under Investigation |
465180 | The Coexistence Radio Blocker Optimization item "Enable Runtime Control" may block proper Zigbee operation. | Optional 'Wi-Fi Select' Control of Blocker Optimization should be left "Disabled". |
480550 | The OTA cluster has its own built-in fragmentation method, hence it should not use APS fragmentation. Although, in case APS encryption is enabled it grows the payload of the ImageBlockResponses to a size where the APS fragmentation is activated. This could lead to the OTA process failing. | No known workaround |
486369 | If a DynamicMultiProtocolLightSoc forming a new network has child nodes remaining from a network it has left, emberAfGetChildTableSize returns a non-zero value in startIdentifyOnAllChildNodes, causing Tx 66 error messages when addressing the "ghost" children. | Mass-erase the part if possible before creating a new network or programmatically check the child table after leaving the network and delete all children using emberRemoveChild prior to forming a new network. |
495563 | Joining SPI NCP Sleepy End Device Sample App doesn't short poll, therefore the joining attempt fails at the state of Update TC Link Key. | The device that wishes to join should be in Short Poll mode before attempting to join. This mode can be forced by the End Device Support plugin. |
497832 | In Network Analyzer the Zigbee Application Support Command Breakdown for the Verify Key Request Frame mistakenly references the part of the payload that indicates the frame Source Address as the Destination Address. | No known workaround |
519905, 521782 | Spi-NCP may very rarely fail to start up bootloader communication using the 'bootload' CLI command of the ota-client plugin. | Restart the bootload process |
620596 | NCP SPI Example for BRD4181A (EFR32xGMG21) nWake default pin defined cannot be used as a wake-up pin. | Change the default pin for nWake from PD03 to a EM2/3 wake-up-enabled pin in the NCP-SPI Plugin. |
631713 | A Zigbee End Device will report address conflicts repeatedly if the plugin "Zigbee PRO Stack Library" is used instead of "Zigbee PRO Leaf Library". | Use the "Zigbee PRO Leaf Library" instead of the "Zigbee PRO Stack Library" plugin. |
670702 | Inefficiencies within the Reporting plugin can lead to significant latency based on data write frequency and table size, which may interfere with customer application code, including event timing. | If doing frequent writes, consider checking reporting conditions and sending reports manually rather than using the plugin. |
708258 | Uninitialized value in groups-server.c via addEntryToGroupTable() can create a spurious binding and cause groupcast reporting messages to be sent. | Add "binding.clusterId = EMBER_AF_INVALID_CLUSTER_ID;" after "binding.type = EMBER_MULTICAST_BINDING;" |
757775 | All EFR32 parts have a unique RSSI offset. In addition, board design, antennas and enclosure can impact RSSI. | When creating a new project, install the RAIL Utility, RSSI component. This feature includes the default RSSI Offset Silabs has measured for each part. This offset can be modified if necessary after RF testing of your complete product. |
758965 | ZCL cluster components and ZCL command discovery table are not synchronized. Therefore, when enabling or disabling a ZCL cluster component, implemented commands will not be enabled/disabled in the corresponding ZCL Advanced Configurator command tab. | Manually enable/disable discovery for the desired ZCL commands in the ZCL Advanced Configurator. |
765735 | The OTA update fails on Sleepy End Device with enabled Page Request. | Use Block Request instead of Page Request. |
845649 | Removing CLI:Core component does not eliminate EEPROM cli calls to sl_cli.h. | Delete the eeprom-cli.c file that calls the sl_cli.h. Additionally, calls to sl_cli.h as well as sl_cli_command_arg_t in the ota-storage-simple-eeprom can be commented out. |
857200 | ias-zone-server.c allows for a binding to be created with a "0000000000000000" CIE address and posteriorly does not allow further bindings. | No known workaround |
1019961 | Generated Z3Gateway makefile hardcodes "gcc" as CC | No known workaround |
1039767 | Zigbee router network retry queue overflow issue in multi thread RTOS use case. | Zigbee Stack is not thread-safe. As a result, calling Zigbee stack APIs from another task is not supported in OS environment and may put the stack into "non-working" state. Refer to the following App note for more information and workaround using event handler. https://www.silabs.com/documents/public/application-notes/an1322-dynamic-multiprotocol-bluetooth-zigbee-sdk7x.pdf . |
1064370 | The Z3Switch sample application only enabled one button (instance : btn1) by default that leads to mismatch in button description in the projectile. | Workaround: Install the btn0 instance manually during Z3Switch project creation. |
1161063 | Z3Light and potentially other applications report incorrect cluster revision values. | Manually update the cluster revision attribute to their appropriate revision. |
1164768, 1171478, 1171479 | ERROR: ezspErrorHandler 0x34 reported repeatedly during mfglib receive mode | To reduce the error messages printed, configure EMBER_AF_PLUGIN_GATEWAY_MAX_WAIT_FOR_EV ENT_TIMEOUT_MS on the host app to 100, so the callback queue is freed more quickly. |
1254368 | Fragmentation of new Zigbee 2023 ZDO messages is not supported in this release | No known workaround. This will be supported in the next planned release. |
1340230 | Network Steering calls network_found infinitely when too many beacons are present. | Two possible workarounds: 1. The first workaround was provided by a customer and is as follows: EmberNetworkParameters parameters; parameters.radioChannel = BEACON_ITERATOR.beacon.channel; parameters.radioTxPower = radioTxPower; parameters.panId = BEACON_ITERATOR.beacon.panId; MEMCOPY(parameters.extendedPanId, BEACON_ITERATOR.beacon.extendedPanId, EXTENDED_PAN_ID_SIZE); status = emberJoinNetwork(nodeType, ¶meters); 2. The second workaround is to simply reset the device. |
1377221 | Debug basic and extended is corrupting CLI. | No known workaround. |
1369186 | Address table size is not configurable for NCP. | Address table size is now configurable on NCP using dynamic allocation based on the resource requirement. It does not have a configuration item like previous releases. But if it is needed to get configured from application or project scope, the workaround would be to define the SL_ZIGBEE_ADDRESS_TABLE_SIZE at the project level. |
1393428 | ZDDLight app needs to enable a non-default configuration to work. | The Zigbee BLE - DirectDeviceLight sample project requires the config option SL_MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS to be enabled by the user for correct operation. |
1396475, 1398014, 1401879 | These issues are related to Simplicity Studio/ZAP. Latest Studio changes break ZAP generation for custom XML in SiSDK v2024.12.[0/1]. | The short term workaround for this is as follows: - Go to [SiSDK v2024.12.1]/app/zcl and paste your custom xml file here. - Open [SiSDK v2024.12.1]/app/zcl/zcl-zap.json - Now add your custom xml file name to "xmlFile" array here. - This should allow you to edit the custom clusters/extensions for your sample applications. |
4 Deprecated Items
- The zigbee_watchdog_periodic_refresh component is no longer used in the zigbee application framework and is deprecated in this release. The watchdog timer is disabled by default for all the sample applications. There will be an improved watchdog component added to the SDK in the future.
- Note: Enable the watchdog timer with configuration item SL_LEGACY_HAL_DISABLE_WATCHDOG set to 0 in your application.
6 Network Limitations and Considerations
The default Trust Center applications that come shipped with this EmberZNet release are capable of supporting a number of devices on the network. This number is determined based on several factors, including configured table sizes, NVM usage, and other generationtime and run-time values.
User seeking to create large networks may face resource issues when growing the network larger than the application can support. For example, a device requesting a Trust Center Link Key from the Trust Center may trigger a sl_zigbee_af_zigbee_key_establishment_cb callback on the Trust Center with status set to SL_ZIGBEE_KEY_TABLE_FULL, indicating that the key table does not have room to add a new key for the requesting device or that NVM3 has no available space.
Silicon Labs provides the following recommendations for users seeking to create large networks. For Trust Center applications, the following configurations are recommended. These recommendations are not exhaustive, and they serve as a baseline for applications intending to grow large networks.
- Inclusion of the Address Table component (zigbee_address_table), with
- the SL_ZIGBEE_AF_PLUGIN_ADDRESS_TABLE_SIZE configuration item set to the size of the desired network
- the SL_ZIGBEE_AF_PLUGIN_ADDRESS_TABLE_TRUST_CENTER_CACHE_SIZE value set to the maximum (4) - Inclusion of the Security Link Keys component (zigbee_security_link_keys), with
- The SL_ZIGBEE_KEY_TABLE_SIZE value set to the size of the network
- The following configuration items set to the size of the desired network
- SL_ZIGBEE_BROADCAST_TABLE_SIZE, as found in the Zigbee Pro Stack component
- SL_ZIGBEE_SOURCE_ROUTE_TABLE_SIZE, as found in the Source routing component, if source routing is used - Adjustment of NVM3_DEFAULT_NVM_SIZE and NVM3_DEFAULT_CACHE_SIZE according to NVM3 usage
- E.g. network sizes greater than 65 nodes likely require an NVM3 size of 64K. The default NVM3 size in Silicon Labs Zigbee sample applications is 32 K . Applications that use NVM more heavily may require adjusting this value even higher.
- Large networks up to 65 nodes may need a NVM3 cache size of 1200 bytes; growing networks larger than that may require doubling this value to 2400 bytes.
These adjustments apply to the Trust Center only.
7 Multiprotocol Gateway and RCP
7.1 New Items
Enabled GA SoC support for BLE DMP with Zigbee + Openthread CMP with concurrent listening on xG26 parts.
Debian alpha support has been added for zigbeed, OTBR and Z3Gateway applications. Zigbeed and OTBR are provided in DEB package format for the chosen reference platform (Raspberry PI 4) as well. See Running Zigbee, OpenThread, and Bluetooth Concurrently on a Linux Host with a Multiprotocol Co-Processor, for details.
Added Zigbeed support for Tizen-0.1-13.1 for arm32 and aarch64 as well as Android 12 for aarch64. More information on Zigbeed can be found at docs.silabs.com.
Added the new "802.15.4 Unified radio scheduler priority" component. This component is used to configure the radio priorities of a 15.4 stack. The component also requires the new "radio_priority_configurator" component. This component allows projects to use the Radio Priority Configurator tool in Simplicity Studio to configure the radio priority levels of the stacks that require it.
Revision 2
The zigbee_throughput plugin start command now includes an optional uint8_t argument "plugin throughput start 0 " which will not clear the stack counters before a throughput test begins. This is intended for testing purposes. If no additional arugment is included and/or not 0 , the current behavior remains the same and will clear the device counters when a throughput test begins.
7.2 Improvements
Application note Running Zigbee, OpenThread, and Bluetooth Concurrently on a Linux Host with a Multiprotocol Co-Processor (AN1333) has been moved to docs.silabs.com.
OpenWRT support is now GA quality. OpenWRT support has been added for zigbeed, OTBR and Z3Gateway applications. Zigbeed and OTBR are provided in IPK package format for the reference platform (Raspberry PI 4) as well. See Running Zigbee, OpenThread, and Bluetooth Concurrently on a Linux Host with a Multiprotocol Co-Processor, for details.
Revision 1
The Zigbee BLE - DynamicMultiprotocolLightSed sample project can now be built for boards with only one LED if the LED1 component is excluded from the project.
This revision has the following improvements for multi-protocol applications when, for example, running Zigbee or OpenThread for the custom use-case of running one protocol at a time:
- The sl_zigbee_af_zll_unset_factory_new() API has been added to allow applications to unset a Zigbee node from the default factory new state when necessary.
- A callback, sl_rail_mux_invalid_rx_channel_detected_cb(), has been added to Zigbee+OT applications. This callback notifies the application when there has been an attempted RX on two different channels while concurrent listening is not enabled. The application can then implement its own logic to handle this situation.
Revision 2
The Zigbee-NCP + OpenThread-RCP (UART & SPI) samples, as well as the Zigbee-NCP + BLE-NCP (UART & SPI) samples, are now only allowed for generation on parts with sufficient RAM ( >=96 kB ).
7.3 Fixed Issues
ID # | Description |
1275378 | Fixed an issue where calling sl_802154_radio_set_scheduler_priorities() prior to sli_mac_lower_mac_init() could result in a crash. |
1300848 | Fixed an issue where Z3Gateway in OpenWRT environment couldn't start EZSP communication caused by mismatching termios control characters running on OpenWRT and other environments. |
1332330 | Fixed an issue where a 15.4+BLE RCP operating in an environment with heavy network traffic could occasionally encounter a race condition that would leave it unable to send messages up to CPCd until rebooting the device. |
1337101 | Incomplete 15.4 transmit operations (Tx waiting for an ack, Tx an ack in response to a message, etc) are no longer prematurely considered as failed upon radio interruption due to DMP. This allows said operation to be given a chance to be rescheduled after the interruption or permanently failed by RAIL (scheduler status error events). |
1337228 | In Zigbeed the halCommonGetInt32uMillisecondTick() tick API is now updated to use MONOTONIC clock, so that it does not get affected by the NTP in a host system. |
1337295 | The DMP CLI command "plugin ble gap print-connections" will now print "No BLE connections" if the connection table is empty, instead of providing no response. |
1346785 | Fixed a race condition which could cause concurrent listening to be disabled on the 802.15.4 RCP when both protocols were transmitting simultaneously. |
1346849 | Adding the rail_mux components to a project will now cause it to automatically build with the associated stack library variants. |
1365665 | Fixed an issue where the host would report receiving a packet with an invalid checksum on end-point 12. |
Revision 1
ID # | Description |
1363050 | Zigbee stack initialization no longer activates the radio (or RCP for host stacks) prior to stack APIs being called by the application. This prevents unwanted multi-PAN operation on Channel 11 (the default channel) when using a multi- PAN-capable RCP configuration. (Other ref: 1390724) |
1378298 | Fixed an issue that caused a crash when entering "keys print" on an DMP Light app with LTO enabled. |
1381165 | Fixed an issue on Zigbee-NCP + OT-RCP, when disabling PTA would have caused NCP/RCP reset. |
Revision 2
ID # | Description |
1392015 | SL_OPENTHREAD_ENABLE_SERIAL_TASK is now set to 0 by default to reduce the task memory size which is not required for RCP applications. (Other ref: 1424440) |
1393057 | Fixed an issue where the Zigbee-NCP + OpenThread-RCP (UART & SPI) samples, as well as the Zigbee-NCP + BLE-NCP (UART & SPI) samples, were allowed for generation on parts with insufficient RAM. |
1399687 | Fixed an issue where the Zigbee-BLE DMP Light app may fail to go to EM2 sleep. |
1420018 | Fixed an issue where a CPC message from an RTOS-enabled RCP to host could be waiting in a send queue until something woke up the serial task. |
Revision 3
ID # | Description |
1375724 | Fixed a race condition on the multipan RCP that resulted in a transmit complete message not being returned to the host, causing a 5 second pause in further transmissions prior to recovering. (Other ref: 1454196, 1454198, 1454200) |
7.4 Known Issues in the Current Release
Issues in bold were added since the previous release. If you have missed a release, recent release notes are available on https://www.silabs.com/developers/simplicity-software-development-kit.
ID # | Description | Workaround |
937562 | Bluetoothctl 'advertise on' command fails with rcp-uart- 802154 -blehci app on Raspberry Pi OS 11. | Use btmgmt app instead of bluetoothett. |
1074205 | The CMP RCP does not support two networks on the same PAN id. | Use different PAN ids for each network. Support is planned in a future release. |
1122723 | In a busy environment, the CLI may become unresponsive in the z3-light_ot-ftd_soc app. | No known workaround. |
1209958 | The ZB/OT/BLE RCP using concurrent listening on MG24 and MG21 may stop working in endurance test (lasts ~2 hours) with constant and concurrent traffic on all 3 stacks. | Disable concurrent listening in use cases involving constant and concurrent traffic across all 3 protocols. |
1221299 | Mfglib RSSI readings differ between RCP and NCP. | Will be addressed in a future release. |
1385052 | Coex-enabled RCP may still occasionally transmit TX ACK after losing the Grant even when Acking is disabled and TX Abort is enabled. | Will be addressed in a future release. |
1385486 | TX from RCP may infrequently happen without the request after turning on the non-802.15.4 compliant MAC Holdoff coex option. | Will be addressed in a future release. |
7.5 Deprecated Items
The "Multiprotocol Container" which is currently available on DockerHub (siliconlabsinc/multiprotocol) will be deprecated in an upcoming release. The container will no longer be updated and able to be pulled from DockerHub. The Debian-based packages for cpcd, zigbeed, and ot-br-posix, along with natively generated and compiled projects, will replace the functionality lost with the removal of the container.
8 Using This Release
This release contains the following:
- Zigbee stack
- Zigbee Application Framework
- Zigbee Sample Applications
For more information about Zigbee and the EmberZNet SDK see UG103.02: Zigbee Fundamentals.
If you are a first-time user, see QSG180: Zigbee EmberZNet Quick-Start Guide for SDK 7.0 and Higher, for instructions on configuring your development environment, building and flashing a sample application, and documentation references pointing to next steps.
8.1 Installation and Use
The Zigbee EmberZNet SDK is provided as part of the Simplicity SDK, the suite of Silicon Labs SDKs. To quickly get started with the Simplicity SDK, install Simplicity Studio 5, which will set up your development environment and walk you through Simplicity SDK installation. Simplicity Studio 5 includes everything needed for loT product development with Silicon Labs devices, including a resource and project launcher, software configuration tools, full IDE with GNU toolchain, and analysis tools. Installation instructions are provided in the online Simplicity Studio 5 User's Guide.
Alternatively, Simplicity SDK may be installed manually by downloading or cloning the latest from GitHub. See https://github.com/SiliconLabs/simplicity_sdk for more information.
Simplicity Studio installs the Simplicity SDK by default in:
- (Windows): C:\Users\<NAME>\SimplicityStudio\SDKs\simplicity_sdk
- (MacOS): /Users/<NAME>/SimplicityStudio/SDKs/simplicity_sdk
Documentation specific to the SDK version is installed with the SDK. Additional information can often be found in the knowledge base articles (KBAs). API references and other information about this and earlier releases is available on https://docs.silabs.com/.
8.2 Security Information
Secure Vault Integration
For applications that choose to store keys securely using the Secure Key Storage component on Secure Vault-High parts, the following table shows the protected keys and their storage protection characteristics that the Zigbee Security Manager component manages.
Wrapped Key | Exportable / Non-Exportable | Notes |
Network Key | Exportable | |
Trust Center Link Key | Exportable | |
Transient Link Key | Exportable | Indexed key table, stored as volatile key |
Application Link Key | Exportable | Indexed key table |
Secure EZSP Key | Exportable | |
ZLL Encryption Key | Exportable | |
ZLL Preconfigured Key | Exportable | |
GPD Proxy Key | Exportable | Indexed key table |
GPD Sink Key | Exportable | Indexed key table |
Internal/Placeholder Key | Exportable | Internal key for use by Zigbee Security Manager |
Wrapped keys that are marked as "Non-Exportable" can be used but cannot be viewed or shared at runtime.
Wrapped keys that are marked as "Exportable" can be used or shared at runtime but remain encrypted while stored in flash.
User applications never need to interact with the majority of these keys. Existing APIs to manage Link Key Table keys or Transient Keys are still available to the user application and now route through the Zigbee Security Manager component.Some of these keys may become non-exportable to the user application in the future. User applications are encouraged to not rely on the exporting of keys unless absolutely necessary.
For more information on Secure Vault Key Management functionality, see AN1271: Secure Key Storage.
Security Advisories
To subscribe to Security Advisories, log in to the Silicon Labs customer portal, then select Account Home. Click HOME to go to the portal home page and then click the Manage Notifications tile. Make sure that 'Software/Security Advisory Notices & Product Change Notices (PCNs)' is checked, and that you are subscribed at minimum for your platform and protocol. Click Save to save any changes.
8.3 Support
Development Kit customers are eligible for training and technical support. Use the Silicon Laboratories Zigbee web page to obtain information about all Silicon Labs Zigbee products and services, and to sign up for product support.
You can contact Silicon Laboratories support at http://www.silabs.com/support.
8.4 SDK Release and Maintenance Policy
For details, see SDK Release and Maintenance Poilcy.
8.5 Zigbee Certification
The Ember ZNet 8.1 release has been qualified for Zigbee Compliant Platform for SoC, NCP and RCP architectures. For ZCP certification ID tied to this release, please check the CSA website here: https://csa-iot.org/csa-iot_products/.
Please note that the ZCP certification is filed post the release, and takes a few weeks before getting reflected on the CSA website. For any further queries, please contact Silicon Laboratories support at http://www.silabs.com/support.
Simplicity Studio
One-click access to MCU and wireless tools, documentation, software, source code libraries & more. Available for Windows, Mac and Linux!
Disclaimer
Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Labs reserves the right to make changes without further notice to the product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Without prior notification, Silicon Labs may update product firmware during the manufacturing process for security or reliability reasons. Such changes will not alter the specifications or the performance of the product. Silicon Labs shall have no liability for the consequences of use of the information supplied in this document. This document does not imply or expressly grant any license to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any FDA Class III devices, applications for which FDA premarket approval is required or Life Support Systems without the specific written consent of Silicon Labs. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons. Silicon Labs disclaims all express and implied warranties and shall not be responsible or liable for any injuries or damages related to use of a Silicon Labs product in such unauthorized applications.
Trademark Information
Silicon Laboratories Inc. ®, Silicon Laboratories ®, Silicon Labs ®, SiLabs ® and the Silicon Labs logo ®, Bluegiga ®, Bluegiga Logo ®, EFM ®, EFM32 ®, EFR, Ember ®, Energy Micro, Energy Micro logo and combinations thereof, "the world's most energy friendly microcontrollers", Redpine Signals ®, WiSeConnect, n-Link, EZLink ®, EZRadio ®, EZRadioPRO ®, Gecko ®, Gecko OS, Gecko OS Studio, Precision32® ®, Simplicity Studio ®, Telegesis, the Telegesis Logo ®, USBXpress ®, Zentri, the Zentri logo and Zentri DMS, Z-Wave ®, and others are trademarks or registered trademarks of Silicon Labs. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered trademark of ARM Limited. Wi-Fi is a registered trademark of the Wi-Fi Alliance. All other products or brand names mentioned herein are trademarks of their respective holders.