Zigbee SDK Version 8.2 (June 16, 2025) - Release Notes#

Zigbee Version 8.2

Simplicity SDK Version 2025.6.0

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.

Click here for earlier releases.

Release Summary#

Key Features | API Changes | Bug Fixes | Chip Enablement

Key Features#

  • Updated filtering of InterPAN messages

  • GCC Link Time Optimization (LTO)

  • Added support for Tunneling functionality in Zigbee Direct.

  • Improved status notification for packet sent

  • Application Initialization Utilizing sl_main.

API Changes#

  • sl_zigbee_af_incoming_packet_filter_cb

  • sl_zigbee_af_outgoing_packet_filter_cb

  • sl_zigbee_send_raw_message_with_tag

  • sl_zigbee_af_zll_unset_factory_new

  • sl_zigbee_gp_clear_proxy_table

  • sl_zigbee_gp_proxy_table_remove_entry

  • sl_zigbee_af_green_power_cluster_gp_sink_close_commissioning_window

  • sl_zigbee_set_join_uses_install_code

  • sl_zigbee_get_join_uses_install_code

  • sl_zigbee_af_tc_link_key_update_now

  • sl_zigbee_af_gpep_incoming_message_cb

  • sl_zigbee_af_ncp_gpep_incoming_message_handler

  • sl_zigbee_gpep_incoming_message_handler

  • sl_zigbee_af_set_t_c_link_key_update_timer_milli_seconds

Bug Fixes#

Chip Enablement#

  • xGM260P PCB Module

  • xGM270S SiP Module

  • xG29 EFR32MG29B140F1024IM40

Key Features#

New Features | Enhancements | Removed Features | Deprecated Features

New Features#

  • Updated filtering of InterPAN Messages
    Updated the message filtering mechanism to allow the inter-pan messages to be available to the application. This required the following updates:

    • Added new packet type SL_ZIGBEE_PACKET_TYPE_INTERPAN macro for general inter-pan message identification.

    • The existing packet SL_ZIGBEE_ZIGBEE_PACKET_TYPE_INTERPAN has been renamed to SL_ZIGBEE_PACKET_TYPE_INTERPAN_ZLL, based on the usage in the code.

    • The following callback names have been changed to better reflect their role in the processing pipeline:

      • sl_zigbee_af_incoming_packet_filter_cb → sl_zigbee_pre_incoming_packet_filter_cb (privileged)

      • sl_zigbee_af_outgoing_packet_filter_cb → sl_zigbee_pre_outgoing_packet_filter_cb (privileged)

    • Two new callback functions have been introduced to provide a more comprehensive filtering framework:

      • sl_zigbee_post_incoming_packet_filter_cb()

      • sl_zigbee_post_outgoing_packet_filter_cb()

    • These functions are called over IPC after the packet has been received / sent and processed by the privileged pre-filter callback. It is meant to be informative for the application task and doesn't affect the packet handling, which has already occurred.

  • GCC Link Time Optimization (LTO)

    • Overview

      Link Time Optimization (LTO) is now enabled for Zigbee applications in this release for GCC. LTO is a powerful compiler optimization technique that allows the compiler to perform whole-program analysis and optimization at link time, resulting in improved code performance and, in some cases, reduced binary size.

    • Usage

      Installing the toolchain component toolchain_gcc_lto brings in the desired compiler and linker flags in a project.

      In 2025.6.0, the zigbee gcc SOC libraries are built with desired compiler flags (-flto, -ffat-lto-objects) to be compatible with the linker to perform LTO at the final linking stage. The gcc linker flag -flto gets added to the linker options when toolchain_gcc_lto is installed in a project and when it is not installed the -fno-lto flags will be required to be added. The SLC CLI or Simplicity Studio generation automatically updates the generated or updated gcc makefile. User maintained makefile must consider these flags to be forward compatible.

    • Key Benefits

      • Improved Performance: LTO enables more aggressive inlining and cross-module optimizations, which can lead to faster execution of Zigbee stack and application code.

      • Potential Code Size Reduction: By eliminating redundant code and optimizing across module boundaries, LTO may reduce the overall firmware size in some scenarios.

      • Better Optimization Opportunities: The compiler can optimize function calls and data usage across all source files, not just within individual files.

    • Considerations

      • Increased Stack and Heap Usage: Due to more aggressive inlining and function merging, LTO may increase stack and heap requirements. Stack sizes have been reviewed and updated in .slcp configuration files to ensure reliable operation under LTO.

      • Build Time: Enabling LTO may increase build times, as the linker performs more complex analysis and optimization.

      • Debugging: Debugging LTO-optimized binaries can be more challenging, as function boundaries and variable locations may change due to optimization.

    • Configuration Changes

      The toolchain_gcc_lto component is now included in Zigbee NCP and related projects. Stack size (SL_STACK_SIZE) configuration entries in .slcp files have been updated to ensure sufficient memory allocation for all combinations of LTO and RTOS usage.

    • Recommended Actions

      Review and test your application for stack overflows or memory issues, especially if you have custom code or third-party libraries.

      If you encounter issues related to stack or heap usage, consider adjusting the SL_STACK_SIZE and heap configuration values as needed.

    • Summary

      LTO is now part of the default build configuration for Zigbee applications, providing enhanced optimization and performance. Please review the updated stack size settings and test your applications accordingly to ensure a smooth transition.

  • Application Initialization Utilizing sl_main.

    sl_system is deprecated in 2025.6.0 and is being replaced with sl_main. This means the existing apps main.c is not compatible with the new sl_main component. Therefore, it is recommended that if you have your own version of main.c, make it compatible with the new main.c provided by the sl_main component.

  • Added support for Tunneling functionality in Zigbee Direct.

  • New Green Power application framework APIs for commissioning window and GP Proxy Table entries Networking:

    To allow the management of green power proxy table directly by advanced users, two new public APIs are introduced:

    • void sl_zigbee_gp_clear_proxy_table(void);

    • void sl_zigbee_gp_proxy_table_remove_entry(uint8_t index);

    • Added following new Application framework API in green power server to close a commissioning session:

      bool sl_zigbee_af_green_power_cluster_gp_sink_close_commissioning_window(void);

  • Improved packet failure status

    Updated the message sent by handler callback to report the status in case of error with more granularity.

    Following new status codes are introduced:

    #define SL_STATUS_ZIGBEE_ID_DISCOVERY_FAILED ((sl_status_t)0x0C1F) ///< Node ID discovery failed.
    #define SL_STATUS_ZIGBEE_NO_APS_ACK ((sl_status_t)0x0C20) ///< Message was sent but no APS ACK received.
    #define SL_STATUS_ZIGBEE_APS_MESSAGE_CANCELED ((sl_status_t)0x0C21) ///< APS message was canceled.
    #define SL_STATUS_ZIGBEE_ID_DISCOVERY_NOT_ENABLED ((sl_status_t)0x0C22) ///< Node ID discovery not enabled.
    #define SL_STATUS_ZIGBEE_ID_DISCOVERY_UNDERWAY ((sl_status_t)0x0C23) ///< Message was not sent, Node ID discovery is underway.
    #define SL_STATUS_ZIGBEE_SEND_UNICAST_ROUTE_DISCOVERY_UNDERWAY ((sl_status_t)0x0C24) ///< The message was not sent because a route discovery is currently underway. There is no route to the target until the route discovery completes.
    #define SL_STATUS_ZIGBEE_SEND_UNICAST_FAILURE ((sl_status_t)0x0C25) ///< Radius is 0 or message has been dropped because route request failed or failed to submit message to tx queue.
    #define SL_STATUS_ZIGBEE_SEND_UNICAST_NO_ROUTE ((sl_status_t)0x0C26) ///< No active route to the destination.
    #define SL_STATUS_ZIGBEE_BROADCAST_TO_SLEEPY_CHILDREN_TIMEOUT ((sl_status_t)0x0C27) ///< Broadcast message timeout while waiting for sleepy children to poll.
    #define SL_STATUS_ZIGBEE_BROADCAST_RELAY_FAILED ((sl_status_t)0x0C28) ///< Expected a neighbor to relay the message, but none did.

    The existing status codes that already get reported by the sent handler are listed here:

    #define SL_STATUS_OK
    #define SL_STATUS_FAIL
    #define SL_STATUS_MAC_NO_DATA
    #define SL_STATUS_CCA_FAILURE
    #define SL_STATUS_MAC_NO_ACK_RECEIVED
    #define SL_STATUS_TRANSMIT_INCOMPLETE
    #define SL_STATUS_ZIGBEE_DELIVERY_FAILED
    #define SL_STATUS_ZIGBEE_APS_ENCRYPTION_ERROR
    #define SL_STATUS_ALLOCATION_FAILED
    #define SL_STATUS_ZIGBEE_IEEE_ADDRESS_DISCOVERY_IN_PROGRESS
    #define SL_STATUS_ZIGBEE_KEY_NOT_AUTHORIZED
    #define SL_STATUS_NOT_FOUND

  • Added new plugin feature: zigbee_memory_usage and zigbee_memory_usage_cli

    This component provides APIs and CLI commands for monitoring heap memory usage in Zigbee and Multiprotocol SoC and NCP applications. It allows applications to query the total heap size, current used heap size, and high watermark values both at runtime and immediately after initialization. This enables developers to track memory usage trends and optimize resource allocation. The CLI prints current and initialization-time heap statistics, while the API exposes functions for programmatic access to these metrics.

Enhancements#

  • Enhanced Multi Rail Demo Component initialization

    The initialization of the Multirail Demo component initialization is enhanced to check presence of BLE component in the application project and allocate the third RAIL state buffer, if available, to be used by the multi rail demo plugin. That way it always leaves the second RAIL state buffer for BLE and as the 1st state buffer is always consumed by Zigbee stack in a Zigbee-BLE DMP application.

  • Added CLI commands in zigbee_network_creator_security.slcc to toggle Allow TC Rejoin With Wellknown Key

    Added commands to control allowing of Trust Center rejoin with well-known key, along with a timeout.

  • Added command to toggle RequireInstallCodesOrPresetPassphrase

    Added command to toggle TC require install code policy and introduced new stack APIs sl_zigbee_set_join_uses_install_code and sl_zigbee_get_join_uses_install_code.

  • Two new applications have been added

    Zigbee - NCP CPC over UART link (zigbee_ncp_cpc_uart.slcp) and Zigbee - NCP CPC over SPI link (zigbee_ncp_cpc_spi.slcp).

    These are single protocol zigbee applications that connect to the NCP over a CPC connection.

  • Enhancements to ZLL initialization for Zigbee Matter Light joining matter fabric

    ZLL initialization causes long delays in Zigbee Matter Light reconnecting to Matter Fabric. 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.

  • Enhancements to Zigbee packages structure

    SLC "package" field values for components related to Zigbee and OpenThread have been adjusted in preparation for an upcoming SDK release format change in future.

  • Enhancements to Network creator

    The Network Creator component has been updated to perform an energy scan followed by an active scan when determining a channel and PAN ID on which to form a network.

  • Enhancements to network steering

    The VERIFY_TCLK state has been removed from the Network Steering plugin. This state was made obsolete, since the entire Trust Center Link Key update procedure as described in Zigbee 3.0, which comprises of the Node Descriptor, Request Key, and Verify Key exchanges, is handled by the stack. The end result of the TCLK exchange is handled by Network Steering via additional sl_zigbee_af_update_tc_link_key_status_cb invocations.

  • Zigbee Direct enhancements

    Re-enabled the support for Curve 25519 in Zigbee Direct Device Light application.
    Legacy Network functionality for Zigbee Direct Device is now supported.
    Increased zigbee AF task stack and BT event handler stack size to fix device crash issue.

    Implement decryption of Tunnel command frame contents using the well-known global key for centralized security networks. An underlying bug, where the entire contents of input to sl_zigbee_sec_man_aes_ccm_extended was not copied over IPC was fixed. The API expects length+mic_length bytes of input to be copied over in the case of decryption. The doxygen for the API reflects to show this change.

  • Zigbee Throughput component enhancements

    An optional uint8_t argument is added to the start command of the Zigbee Throughput component to configure its behavior regarding clearing counters. Calling "plugin throughput start 0" will leave counters uncleared, so testing that involves checking these values will work as intended in cases where counting may begin before the test starts.

Removed Features#

None.

Deprecated Features#

Deprecated Feature

Planned Removal Date

The Zigbee Classic Key Storage component will be removed in a future release. This component handles storing encryption keys in plaintext NVM3 tokens. Future versions of software will instead use the Zigbee Secure Key Storage component, where keys are stored in PSA storage. See AN1311 for more information on PSA storage. Users will note that there already exists a Zigbee Secure Key Storage Upgrade component to move keys from classic key storage (NVM3 tokens) to secure key storage (PSA).

June 16, 2026

API Changes#

New APIs | Modified APIs | Removed APIs | Deprecated APIs

New APIs#

New API Signature

Deprecated API replaced by this (if any)

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); This is similar to sl_zigbee_send_raw_message, but accepts a messageTag for outgoing message and the same tag referred in the message sent callback.

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.

sl_zigbee_gp_clear_proxy_table(void); void sl_zigbee_gp_proxy_table_remove_entry(uint8_t index); To allow the management of green power proxy table directly by an advanced users two new public APIs are introduced void

bool sl_zigbee_af_green_power_cluster_gp_sink_close_commissioning_window(void); Added following new Application framework API in green power server to close a commissioning session.

void sl_zigbee_set_join_uses_install_code(bool enable); Enables/Disables TC to allow joining of a device through install code only.

bool sl_zigbee_get_join_uses_install_code(void); Return true if the TC only allows joining of a device through install code.

sl_status_t sl_zigbee_af_tc_link_key_update_now(void);

Modified APIs#

Old API

Modified

sl_zigbee_af_gpep_incoming_message_cb(GP_PARAMS)

sl_zigbee_af_gpep_incoming_message_cb(sl_zigbee_gp_params_t *param)

sl_zigbee_af_ncp_gpep_incoming_message_handler(GP_PARAMS)

sl_zigbee_af_ncp_gpep_incoming_message_handler(sl_zigbee_gp_params_t *param)

sl_zigbee_gpep_incoming_message_handler(GP_PARAMS)

sl_zigbee_gpep_incoming_message_handler(sl_zigbee_gp_params_t *param)

sl_zigbee_af_set_t_c_link_key_update_timer_milli_seconds

sl_zigbee_af_set_tc_link_key_update_timer_ms

Removed APIs#

None.

Deprecated APIs#

None.

Bug Fixes#

ID Issue Description GitHub / Salesforce Reference (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
1312098 Fixed an issue where certain packets with invalid data regarding the APS frame size could cause the Zigbee stack to assert if received. None
  • All variants
1369186 Allow users to configure Address Table Size (macro SL_ZIGBEE_ADDRESS_TABLE_SIZE) via zigbee_pro_stack component inside Simplicity Studio. None
  • All variants
1376690 An issue was fixed where uninitialized values in Zigbee IPC commands carry garbage values. None
  • All variants
1377518 Fixed a CPC EZSP buffer TX/RX memory leak issue on NCP when running using zigbee_ncp_cpc component. None
  • NCP, CPC
1377754 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. None
  • All variants
1379738 Fixed a memory alignment issue for CSL Tx Buffer. None
  • All variants
1381092 Fixed the gateway prompt string gets truncated when executing a command on the host. Fixed intermittent failure on command input truncation. None
  • All variants
1383925 Fixed an issue to remove the children immediately from the source route table of its parent after it left the network. None
  • All variants
1385096 Fixed an assertion issue on CPC NCP when the Host tried to connect to it multiple times. None
  • All variants
1385689 Fixed an issue that caused the network steering to call network_found infinitely when too many beacons are present. This was achieved by clearing the scan state appropriately. None
  • All variants
1385996 Fixed a compiler warnings in throughput.c. None
  • All variants
1390107 Fixed Multi network didn't work when using Zigbee IPC component. None
  • All variants
1393842 By increasing SL_BT_RTOS_EVENT_HANDLER_STACK_SIZE the Zigbee BLE - DirectDeviceLight doesn't crash anymore. So the config option SL_MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS was disabled. None
  • All variants
1407954 Fixed an issue that caused the watchdog reset while rebooting applications that are configured with a large proxy table size. None
  • All variants
1408816 Fixed the missing restriction issue in Time Server cluster implementation. None
  • All variants
1409453 Removed Simple LED component from dependency list of Zigbee Identify Feedback. None
  • All variants
1409871 Fixed an issue that caused an assert during execution of level control cluster Step command. The issue was caused mainly because the updated temporary value for each step was not stored and read back correctly during step iteration and the minimum level should 0 instead of 1. None
  • All variants
1410670 An issue has been fixed where the Slot Manager component failed to compile if the application did not include CLI. None
  • All variants
1412141 Fixed some warnings showing up when enabling lto flag. None
  • All variants
1412866 An issue has been fixed where a Zigbee 3.0 joining device would fail to successfully update its Trust Center Link Key with the trust center. None
  • All variants
1413451 Fixed an issue that caused wrong format in GP Pairing Configuration packet. None
  • All variants
1415014 Fixed an issue that caused redundant bytes after Status field in Routing table Response packet when it's not supported. None
  • All variants
1420830 An issue exposed when using the Multi-Network feature in conjunction with the Sleepy-to-sleepy feature has been fixed. The issue resulted in s2s target not responding after joining successfully on secondary network. None
  • All variants
1421368 Fixed an issue that caused incorrect behavior in copying message payload in sli_zigbee_stack_raw_transmit_complete_handler when RTOS is used. None
  • All variants
1424260 Added brd4194a to backlist for SleepyToSleepyShades app. None
  • All variants
1424600 Fixed an issue where OTA client fetched the same image again and again when Delete Failed Downloads option set to false. None
  • All variants
1426766 Fixed an issue by increasing the waiting time to 5000 msec to allow receiving RSTACK frame after NCP resets. None
  • All variants
1426899 An issue exposed when using the Multi-Network feature in conjunction with the Sleepy-to-sleepy feature has been fixed. The issue resulted in network decryption failures on one of the networks when attempting to bring up the second network. None
  • All variants
1430460 Fixed issue where S2S shades was not able to receive data from target on primary network if the secondary network on the shades failed to join another network. None
  • All variants
1431513 Fixed null terminated string when using info command. None
  • All variants
1434650 This fixed the issue of sink's handling the pairing configuration command with action remove pairing - groupcast receiving from a proxy. None
  • All variants
1435112 Fixed an issue where sl_zigbee_gp_proxy_table_process_gp_pairing did not appear to be IPC-safe. None
  • All variants
1442296 Fixed duplicate APIs declaration when enabling green power adapter. None
  • All variants
1442317 Fixed an issue where the host app crashed when trying to leave network. The Green Power NCP was configurated with a large number of GP table size. None
  • All variants
1442467 Added upgrade rule to replace zigbee_pro_stack_rail_mux by zigbee_pro_stack. None
  • All variants
1446979 SL_ZIGBEE_ZIGBEE_PACKET_TYPE_INTERPAN has been renamed to SL_ZIGBEE_PACKET_TYPE_INTERPAN_ZLL. Added new SL_ZIGBEE_PACKET_TYPE_INTERPAN macro for general interpan message identification. None
  • All variants
1446980 The following callback names have been changed: sl_zigbee_af_incoming_packet_filter_cb → sl_zigbee_pre_incoming_packet_filter_cb (privileged); sl_zigbee_af_outgoing_packet_filter_cb → sl_zigbee_pre_outgoing_packet_filter_cb (privileged) None
  • All variants
1446981 Two new callback functions have been introduced: sl_zigbee_post_incoming_packet_filter_cb() and sl_zigbee_post_outgoing_packet_filter_cb(). These are called over IPC after the packet has been processed. None
  • All variants
1453733 Fixed an issue where builds using the zigbee_force_sleep_and_wakeup component would fail to compile with RTOS enabled. None
  • All variants

Chip Enablement#

Chip Family OPNs / Boards / OPN Combinations Supported Software Variants (if applicable) Supported Modes Supported Host Interfaces
xGM26
  • xGM260P PCB Module
NA
  • Soc
  • NCP
UART
xGM27
  • xGM270S SiP Module
NA
  • Soc
  • NCP
UART
xG29
  • EFR32MG29B140F1024IM40
NA
  • Soc
  • NCP
  • UART
  • SPI
  • Application Example Changes#

    New Examples | Modified Examples | Removed Examples | Deprecated Examples

    New Examples#

    Example Name Description Supported Software Variants (if applicable) Supported Modes Supported OPNs / Boards / OPN Combinations Supported Host Interfaces

    Zigbee - NCP CPC over UART link (zigbee_ncp_cpc_uart.slcp).

    See readme (with link)

    These are single protocol Zigbee applications that connect to the NCP over a CPC connection. All NCP Variants.
    • NCP
    • All supported
    UART

    Zigbee - NCP CPC over SPI link (zigbee_ncp_cpc_spi.slcp).

    See readme (with link)

    These are single protocol Zigbee applications that connect to the NCP over a CPC connection. All NCP Variants.
    • NCP
    • All supported
    SPI

    Modified Examples#

    None.

    Removed Examples#

    None.

    Deprecated Examples#

    None.

    Known Issues and Limitations#

    ID Issue or Limitation Description GitHub / Salesforce Reference (if any) Workaround (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
    1391252 Sub-GHz duty cycle calculations didn't properly account for 32-bit system timer rollover in timing bucket comparisons, which could result in a duty-cycle.c assert violation. None None
    • All variants
    1393428 The Zigbee BLE - DirectDeviceLight sample project requires the config option SL_MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS to be enabled. None None
    • All variants
    1429960 sl_zigbee_af_get_command_aps_frame() is currently not thread safe. Users may notice that subsequent calls to any of the sl_zigbee_af_send_command_* APIs result in incorrect APS frames being transmitted. This issue will be fixed in a future release. None None
    • All variants
    1446942 sl_zigbee_af_get_command_aps_frame() is currently not thread safe. Users may notice that subsequent calls to any of the sl_zigbee_af_send_command_* APIs result in incorrect APS frames being transmitted. This issue will be fixed in a future release. None None
    • All variants
    1064370 The Z3Switch sample application has one button(btn1 instance) that leads to button description does not match the operation out of box. Workaround: Install the btn0 instance manually during Z3Switch project creation. None Install btn0 instance manually during Z3Switch project creation.
    • Z3Switch
    1273486 Fixed a build issue with duplicate definition of RAILCb_AssertFailed. None None
    • All variants
    1439479 Added the ability for a CSL receiver to register commands from multiple CSL initiators. None None
    • CSL receiver