Zigbee SDK Version 9.1.0 - Release Notes (Jun 23, 2026)#

Zigbee Version 9.1.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 | Changes | Chip Enablement

Key Features#

  • Configurable next RX channel for Green Power Device (GPD) bi-directional commissioning

  • Secure inter-PAN message fragmentation with APS link encryption after key establishment

  • Packet handoff post-incoming filter with per-packet link quality (RSSI, LQI, channel)

  • Zigbee 4.0 gateway sample application

  • GCC and IAR toolchain upgrades (GCC 14.2.rel1 and IAR 9.70.4)

  • Antenna calibration APIs for networking products

  • Configurable route table size in Zigbee Pro Stack Config

API Changes#

  • GPD channel request : New API sl_zigbee_gpd_af_plugin_set_next_channel() to set the next and second next RX channels used in GPD Channel Request commissioning frames.

  • Inter-PAN : The Inter-PAN plugin supports secure fragmented messages after CBKE, plugin interpan fragment-test CLI adds an optional encryption option for testing purpose.

  • Packet handoff : New stack callback sl_zigbee_post_incoming_packet_filter_with_lqi_and_rssi_cb() and type sl_zigbee_packet_link_quality_t for packet handoff.

Bug Fixes#

See Bug Fixes.

Changes#

See Changes.

Chip Enablement#

None

Key Features#

New Features | Enhancements | Removed Features | Deprecated Features

New Features#

Added in 9.1.0#

Zigbee 4.0 gateway sample application#

A new Zigbee 4.0 gateway host sample application is available. It extends the Zigbee 3.0 gateway with support for Zigbee 4.0-style joining and works with the Zigbee 4.0 light and switch sample applications.

Enhancements#

Added in 9.1.0#

Configurable next RX channel for GPD commissioning#

Green Power Device (GPD) applications can set the next RX channel and second next RX channel at runtime before bi-directional commissioning Channel Request GPDFs (previously build-time only; both default to channel 11 if unset). Use node set-next-channel <nextRxChannel> [<secondNextRxChannel>] with the Zigbee GPD CLI component (channels 11–26, before commissioning), or sl_zigbee_gpd_af_plugin_set_next_channel(). See API Changes.

Secure inter-PAN fragmentation#

The Inter-PAN plugin now supports sending and receiving large, APS link-encrypted inter-PAN messages using Inter-PAN Message Fragmentation (IPMF) after Certificate-Based Key Establishment (CBKE) has completed.

  • Secure fragmented traffic: Applications can exchange encrypted inter-PAN payloads that exceed a single frame by using fragmentation that follows the extended APS frame control format used for Smart Energy inter-PAN (first fragment and subsequent fragments are identified separately; fragment responses use a distinct format).

  • CLI: The plugin interpan fragment-test command accepts an optional options argument. Set bit 0 to enable stub APS link encryption on the test message (requires an established inter-PAN link key and the project option that allows APS-encrypted inter-PAN messages, same as plugin interpan long).

Packet handoff link quality#

Applications that use packet handoff (the Packet Handoff component, zigbee_packet_handoff) can implement a new stack callback that runs after each intercepted incoming packet is processed, in addition to the existing post-incoming filter callback.

The new callback provides radio link quality for the received packet:

  • RSSI (received signal strength)

  • LQI (link quality indicator)

  • Channel (radio channel on which the packet was received)

GCC and IAR toolchain upgrade#

Zigbee SDK 9.1.0 is validated with GCC 14.2.rel1 and IAR Embedded Workbench 9.70.4—the compiler versions delivered with Simplicity SDK 2026.6. IAR 9.70.4 supports Zigbee SoC and NCP applications on Series 3, in addition to Series 2 targets. After you upgrade, rebuild your Zigbee projects in Simplicity Studio so your applications and the included sample apps build with these toolchains.

Configurable route table size#

SL_ZIGBEE_ROUTE_TABLE_SIZE is exposed in the Zigbee Pro Stack Config component configuration header so you can size the route table from Simplicity Studio without editing stack sources manually.

Antenna calibration APIs#

Zigbee stack APIs support antenna calibration workflows for networking products, including follow-up calibration updates in this release.

Removed Features#

None

Deprecated Features#

None

API Changes#

New APIs | Modified APIs | Removed APIs | Deprecated APIs

New APIs#

Added in 9.1.0#

New API Signature

Deprecated API replaced by this (if any)

void sl_zigbee_gpd_af_plugin_set_next_channel(uint8_t nextChannel, uint8_t secondNextChannel)

Replaces build-time next RX channel configuration

void sl_zigbee_post_incoming_packet_filter_with_lqi_and_rssi_cb(sl_zigbee_zigbee_packet_type_t packetType, sl_zigbee_packet_link_quality_t *linkQuality, uint8_t *packetData, uint8_t size_p, uint8_t *data, uint8_t size_d, sl_zigbee_packet_action_t action)

Extends sl_zigbee_post_incoming_packet_filter_cb() with link quality

New type sl_zigbee_packet_link_quality_t contains rssi, lqi, and channel fields for use with the callback above.

Modified APIs#

None

Removed APIs#

Removed in 9.1.0#

Build-time GPD next RX channel configuration was removed in favor of sl_zigbee_gpd_af_plugin_set_next_channel() or the node set-next-channel CLI.

Deprecated APIs#

None

Bug Fixes#

The following issues were resolved in Zigbee SDK 9.1.0.

ID Issue Description GitHub Reference (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
1483599 Exposed route table sizing through the Zigbee Pro Stack Config component (see Enhancements). None
  • SoC, Host-NCP
  • Pro stack
1353562 Fixed Zigbee Virtual Device handling so messages are delivered to the application only after the device is fully authenticated. None
  • All
  • Zigbee Virtual Device
1435303 Fixed an issue where broadcast messages to address 0xFFFF were incorrectly dropped in Zigbee Direct Device applications. None
  • All
  • Zigbee Direct Device
1410206 Added periodic checks in Zigbee Direct Device samples to detect when the trust center becomes Zigbee Direct aware. None
  • All
  • Zigbee Direct Device
1507499 Fixed SPI NCP application build and operation on Series 3 devices. None
  • NCP SPI
  • Series 3
1575333 Fixed Green Power sink commissioning mode status handling required for conformance testing. None
  • SoC
  • Green Power sink
1597771 Fixed gateway startup failures by enforcing sufficient RAM for coordinator and router roles on SoC and NCP builds. None
  • SoC, NCP
  • Gateway
1599783 Fixed build failures caused by references to removed legacy manufacturing security tokens. None
  • All
  • Manufacturing tokens
1605517 Fixed Secure Key Storage upgrade so legacy keys migrate correctly when FreeRTOS is used. None
  • All
  • Secure Key Storage
1607880 Enabled APS ACK by default for APS command frames, except for tunnel commands and initial transport key exchanges. None
  • All
  • SoC, Host-NCP
1608133 Fixed incorrect status code handling in Zigbee Direct sample applications. None
  • All
  • Zigbee Direct
1609550 Fixed message decryption failures in the Zigbee Direct light sample after reading the Identify characteristic. None
  • All
  • Zigbee Direct
1611739 Fixed a touchlink regression where the target device failed to join the initiator network on Series 3 boards. None
  • SoC
  • ZLL touchlink
1616192 Extended packet handoff link quality reporting to include receive channel (see Enhancements). None
  • SoC, Host-NCP
  • Packet handoff
1629729 Fixed network steering so a pre-configured link key is not used incorrectly when joining, improving join success on large networks. None
  • All
  • Network steering
1630376 Fixed Simplicity Studio configuration so Zigbee 4.0 security can be selected for gateway projects. None
  • All
  • Zigbee 4.0 gateway
1632829 Fixed an issue where the Green Power sink table could be cleared in non-volatile memory on reset when using the token manager. None
  • SoC
  • Green Power sink
1639563 Added missing EZSP support for clearing the binding table using sl_zigbee_clear_binding_table_on_leave when a device leaves the network. None
  • Host-NCP
  • EZSP
1647138 Fixed the Green Power CLI command `node set-addr` so it correctly updates the local IEEE address. None
  • GPD SoC
  • Green Power Device
1657335 Fixed an issue where Green Power communications would fail after flashing an image with the Zigbee Secure Key Storage Upgrade component to migrate keys into Secure Key Storage. The keys themselves were not corrupted, but the GP Sink and Proxy table entries were incorrectly zeroed out in NVM post-upgrade, causing GP communications to fail. None
  • SoC, NCP
  • Green Power sink and proxy
  • Zigbee Secure Key Storage Upgrade
1675558 Fixed an issue where the Zigbee - Host Z4 Gateway (zigbee_z4_gateway) application would fail to connect to an NCP image, showing EZSP failures upon connection followed by immediate program exit. None
  • Host
  • Zigbee Z4 Gateway
  • EZSP

Changes#

The following general changes are included in Zigbee SDK 9.1.0.

ID Change Description GitHub Reference (if any) Affected Software Variants, Hardware, Modes, Host Interfaces
1630265

Standardized display labels and project names for certain Zigbee example applications in Simplicity Studio have been updated. Example apps now use a consistent title format that identifies the stack (Zigbee, Zigbee SE, Zigbee GP, or Zigbee BLE DMP), the target role (SoC, Host, or NCP), and the application name with readable spacing (for example, "Zigbee - SoC Z3 Light" instead of "Zigbee - Z3Light").

The NCP SPI example was renamed from ncp-spi to zigbee_ncp_spi, including its project folder, .slcp file, and project_name field. NCP example labels were normalized (for example, UartHw to UART HW, Multi-PAN naming). GPD single-button/LED variant examples use distinct project names and labels so each variant is uniquely identified in Studio.

This change affects how example applications appear when browsing or creating projects in Simplicity Studio. Application functionality is unchanged.

None
  • All
  • Zigbee sample applications
  • Simplicity Studio
1650585

Updated board and project compatibility for 32 KB RAM parts (EFR32MG22 and derivatives). Zigbee NCP projects and SoC router/coordinator device types (including coordinator-or-router) are not supported; end device and sleepy end device SoC roles remain supported. Use a part with at least 64 KB RAM (for example EFR32MG24) for FFD or NCP designs.

In Simplicity Studio, MG22-class targets are omitted from Zigbee NCP example flows. If you retarget a project or select router/coordinator roles in Zigbee Pro Stack Config, stack validation reports that at least 64 KB RAM is required and blocks generation until you change the target or device type (including for NCP firmware and secondary networks).

None
  • EFR32MG22 and derivative boards (32 KB RAM)
  • NCP (all host interfaces)
  • SoC router and coordinator device types
  • Simplicity Studio 6

Chip Enablement#

None

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 - SoC Z4 Light

See README

Zigbee 4.0 light SoC sample using NVM3 storage. Demonstrates BDB 3.1 and R23 features (including Zigbee 4.0 security, network commissioning, and dynamic link keys) as a coordinator/router that can form or join a Zigbee 4.0 network. Pairs with the Zigbee 4.0 gateway and switch sample applications. Pro stack, Zigbee 4.0 security >SoC
  • EFR32MG21, EFR32MG24, EFR32MG26, EFR32MG27, EFR32MG29, and compatible modules
  • Supported development boards in Simplicity Studio (for example BRD4186C, BRD4187C, BRD2601B, BRD2709A)
N/A

Modified Examples#

Standardized display labels and project names for certain Zigbee example applications in Simplicity Studio were updated. Example apps now use a consistent title format that identifies the stack (Zigbee, Zigbee SE, Zigbee GP, or Zigbee BLE DMP), the target role (SoC, Host, or NCP), and the application name with readable spacing. The NCP SPI example was renamed from ncp-spi to zigbee_ncp_spi; NCP example labels were normalized; and GPD single-button/LED variant examples use distinct project names and labels. This affects how examples appear when browsing or creating projects in Studio only. Full details are in Changes (1630265). Application functionality is unchanged.

Example Name Changes Supported Software Variants if applicable Supported Modes Supported OPNs / Boards / OPN Combinations Supported Host Interfaces

Zigbee sample applications (Simplicity Studio display labels and project names)

See Changes (1630265).

  • Standardized Simplicity Studio display labels and project_name values across Zigbee, Zigbee SE, Zigbee GP, and Zigbee BLE DMP examples (stack, SoC/Host/NCP role, and readable application title spacing; for example, "Zigbee - SoC Z3 Light" instead of "Zigbee - Z3Light").
  • Renamed NCP SPI example from ncp-spi to zigbee_ncp_spi (project folder, .slcp file, and project_name field).
  • Normalized NCP example labels (for example, UartHw to UART HW, Multi-PAN naming).
  • Distinct project names and labels for GPD single-button/LED variant examples so each variant is uniquely identified in Studio.
  • Studio browsing and project creation only; functionality unchanged.
All applicable
  • SoC
  • Host
  • NCP
All supported boards and OPNs for affected examples All applicable (UART, SPI, CPC, and others per example)

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
1503910 For Series 3 parts, the boot time is inconsistent because of the NVM3 repack invoked during initialization. To optimize application performance, it is recommended for users to implement user NVM3 repacks periodically during application downtime. None Refer to the NVM3 documentation regarding implementing the user triggered repack function. A code example to call the user repack is provided below this table. Series 3
1650585

32 KB RAM targets (EFR32MG22 and derivatives): Zigbee NCP projects and SoC router or coordinator network device types are not supported on parts with 32 KB of primary RAM. End device and sleepy end device SoC roles remain supported on MG22-class hardware; use a part with at least 64 KB RAM (for example EFR32MG24) for router, coordinator, or NCP designs that require a full-function device role.

Simplicity Studio omits MG22-class targets from Zigbee NCP example flows. If you retarget an existing project or select an unsupported network device type in Zigbee Pro Stack Config, Zigbee stack project validation reports an error that coordinator or router types require at least 64 KB of primary RAM and blocks project generation until you change the target or device type. The same validation applies to NCP firmware configured as router or coordinator on these parts.

See Changes (1650585) for a full description.

None Choose an end device or sleepy end device type on MG22, select a 64 KB-or-larger part for router/coordinator SoC or NCP, or create a new project from a supported example and target.
  • EFR32MG22 and derivative boards (32 KB RAM)
  • NCP and SoC router/coordinator device types
  • Simplicity Studio 6
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
1477680 The following two issues are present for the Sleepy to Sleepy applications
  1. Default zigbee_ble_sleepy_to_sleepy sample apps do not build on Simplicity SDK 2025.6 and future when the Window Covering cluster is included in ZAP configuration for MG21 and MG24.
  2. Building an application for MG27 using the suggested workaround for issue 1 does not work as expected.
None
  • Workaround issue 1: remove the Window Covering cluster
  • No workaround currently available for issue 2
Zigbee BLE Sleepy To Sleepy Apps
1479979 The zigbee daemon (zigbeed) has an issue where it exits spontaneously when installed using 32-bit Debian packages. None Users may use the Docker-based zigbeed to circumvent the issue until a fix is provided in a future SDK release Zigbeed CMP
1571691 An issue is present where a device can fail to join a large network (>30 devices) if the coordinator is using the Zigbee Secure Key Storage component, which is enabled by default. The problem is seen when the joining device associates successfully, but the update of the trust center link key fails, which results in the joining device leaving the network. When this issue occurs, all APS link keys on the trust center are seemingly wiped, including those found in the link key table and transient key table, as can be seen in the output to the command "keys print." With all APS keys temporarily wiped, encrypted APS communications with the trust center fail. None Set the SL_PSA_KEY_USER_SLOT_COUNT configuration item to the maximum number of devices in the network when configuring the coordinator image (SoC or NCP). If using Simplicity Studio, the configuration is found under the PSA Configuration component. Note: trust centers using the Zigbee Classic Key Storage component are unaffected by this issue and thus require no workaround, which includes zigbeed, or the Zigbee Daemon. SoC and NCP trust centers using the Zigbee Secure Key Storage component
1571186 An issue is present whereby an event that is armed in interrupt context does not fire when expected None As a workaround, users may issue a call to sl_zigbee_wakeup_common_task() after arming the event to get the event to fire on time All variants
1617908 ZAP-generated cluster command parsers may perform out-of-bounds reads when handling truncated conditional or string fields. Regenerate application clusters from an updated ZAP template when a fix is available. None Validate untrusted cluster command payloads at the application layer until updated templates ship. All variants using ZAP-generated command parsers
1679642

When upgrading a project that uses the Green Power Combo Zap Config component (zigbee_green_power_combo_zap_config) from Simplicity SDK 2025.12 or earlier to Simplicity SDK 2026.6.0 or later, custom edits to the Green Power ZAP configuration may be lost.

The component supplies zcl_config_gp_combo.zap, which defines Green Power endpoint and cluster configuration for NCP applications such as zigbee_ncp_ot_rcp_uart_gp_multi_rail.

  • Prior to Simplicity SDK 2026.6.0: The file was copied to <project>/config/zcl_config_gp_combo.zap.
  • Starting in Simplicity SDK 2026.6.0: The file is copied to <project>/config/zcl/zcl_config_gp_combo.zap.

During SDK upgrade, the upgrader removes the file at the former path. Any user modifications stored there are discarded. The new file at config/zcl/zcl_config_gp_combo.zap is installed with default component content and does not automatically incorporate prior customizations.

None

After upgrading, manually merge customizations from the backed-up file in the project's trashed_modified_files folder (look for the previous config/zcl_config_gp_combo.zap) into config/zcl/zcl_config_gp_combo.zap.

  • Applications using Green Power Combo Zap Config (zigbee_green_power_combo_zap_config), including zigbee_ncp_ot_rcp_uart_gp_multi_rail
  • Project upgrade from Simplicity SDK 2025.12 or earlier to 2026.6.0 or later
1682899 An issue is present on a host application where invoking the bootloader to boot an image in storage on the NCP results in error, with the host encountering an EZSP failure. The host subsequently disconnects from the NCP.

This will be addressed in a future release.

None None Host applications with NCP

Code example for Known Issue 1503910:

 // Set the user repack threshold
                static uint32_t user_repack_threshold = 1024;
                /***************************************************************************//**
                * Perform a user-triggered repack with a configurable threshold.
                *
                * This function sets the number of bytes (threshold) that must remain free
                * before a forced repack is triggered. It performs repack operations until
                * the threshold is satisfied or no further memory can be freed.
                ******************************************************************************/
                void nvm3_repack_with_threshold(void)
                {
                  sl_status_t sta;
                  nvm3_MemInfo_t memInfo;
                  size_t initMemInfo;  // Get available memory
                  if (nvm3_getMemInfo(nvm3_defaultHandle, &memInfo) != SL_STATUS_OK) {
                    printf("Get memory info failed at startup\r\n");
                    return;
                  }  // Set the repack headroom to user threshold
                  nvm3_defaultInit->repackHeadroom = user_repack_threshold;
                  sta = nvm3_open(nvm3_defaultHandle, nvm3_defaultInit);
                  if (sta != SL_STATUS_OK) {
                    printf("NVM3 re-open with increased headroom failed: %lu\r\n", sta);
                    return;
                  }
                  initMemInfo = memInfo.availableMemory;
                  int repack =0;
                  while (user_repack_threshold > memInfo.availableMemory) {
                    repack++;
                    sta = nvm3_repack(nvm3_defaultHandle);
                    if (sta != SL_STATUS_OK) {
                      printf("ERROR: NVM3 repack failed! Status: %lu\r\n", sta);
                      EFM_ASSERT(sta == SL_STATUS_OK);
                      break;
                    }
                    nvm3_getMemInfo(nvm3_defaultHandle, &memInfo);
                  }
                  return;
                }