OpenThread SDK Version 3.1.0 - Release Notes (Jun 23, 2026)#
Thread is a secure, reliable, scalable, and upgradeable wireless IPv6 mesh networking protocol. It provides low-cost bridging to other IP networks while optimized for low-power/battery-backed operation. The Thread stack is designed specifically for Connected Home applications where IP-based networking is desired and a variety of application layers may be required.
OpenThread, released by Google, is an open-source implementation of Thread. Google has released OpenThread to accelerate the development of products for the connected home and commercial buildings. With a narrow platform abstraction layer and a small memory footprint, OpenThread is highly portable. It supports system-on-chip (SoC), network co-processor (NCP), and radio co-processor (RCP) designs.
Silicon Labs has developed an OpenThread-based SDK tailored to work with Silicon Labs hardware. The Silicon Labs OpenThread SDK is a fully tested enhanced version of the GitHub source. It supports a broader range of hardware than does the GitHub version and includes documentation and example applications not available on GitHub.
Click here for earlier releases.
Release Summary#
Key Features | API Changes | Bug Fixes | Chip Enablement
Key Features#
Added Thread 1.4 qualification support for OTBR in NCP mode
Continued Thread 1.4 qualification support for SoC and OTBR in RCP mode
Added Thread - SoC Empty sample applications
Added NAT64 and TREL support for Host / NCP configurations
Added OTBR Android 15 support with CPC spinel proxy support
Standardized Simplicity SDK example app titles and descriptions
Silicon Labs standard logger integration
API Changes#
Refer to API changes as documented here, starting with the changes on November 11, 2025 and ending with the changes on April 29, 2026.
Bug Fixes#
Targeted quality improvements and bug fixes
Chip Enablement#
None.
Key Features#
New Features | Enhancements | Removed Features | Deprecated Features
New Features#
Thread - SoC Empty sample applications#
This release adds two new OpenThread SoC Empty sample applications:
ot-soc-empty-OpenThread - SoC Empty FTDot-soc-empty-freertos-OpenThread - SoC Empty FTD FreeRTOS
These sample applications provide minimal Full Thread Device (FTD) reference projects for baremetal and FreeRTOS environments. They are intended as starting points for developing Thread applications and include configurable default dataset values for form / join workflows.
OpenThread - SoC Empty FTD is a bare-metal application compatible with series 2 devices, while OpenThread - SoC Empty FTD FreeRTOS utilizes RTOS and is compatible with both series 2 and series 3 devices. Both applications contain only the essential elements required for a functional Thread application, and thus can serve as a base from which to build out OpenThread applications. The pre-made application code in SoC Empty provides basic out-of-the-box functionality to form a Thread network or join an existing one. It does so using dataset parameters that can be configured after project generation using the Simplicity Studio UI to configure the default Dataset Values component, or by modifying the application code directly.
Enhancements#
Thread 1.4 qualification coverage: This release extends Border Router qualification to support Thread 1.4 compliance in both RCP and NCP operating modes, while continuing Thread 1.4 compliance support for SoC applications.
Host / NCP NAT64 support: This release adds NAT64 support for OpenThread Border Router deployments that use a Host / NCP architecture.
Host / NCP TREL support: This release adds TREL peer-discovery and forwarding support for Host / NCP configurations.
Android CPC spinel proxy: This release adds the
cpc-spinel-proxyapplication and related CPC transport refactoring to support Android Thread HAL integrations that communicate through a Unix socket, including OTBR deployments on Android 15.Example metadata standardization: Standardized Simplicity SDK OpenThread example titles and descriptions to align naming and presentation across the example catalog.
Toolchain and platform integration updates: Added integration with the Silicon Labs standard logger.
Runtime initialization of IPv6 external address pools: OpenThread now supports runtime initialization of IPv6 external address pools via
otIp6Init(), with CLI support throughifconfig init <ucast-addr-count> <mcast-addr-count>. This is not yet supported in NCP configurations.Impacted users: certification library configurations (non-NCP) in this release default to runtime external address pool initialization.
For non-NCP certification library users, update application flow to call
otIp6Init()beforeotIp6SetEnabled()(or runifconfig init ...beforeifconfig upin CLI workflows).For (non-NCP) certification source users, runtime behavior is optional: enable
OPENTHREAD_CONFIG_IP6_INIT_EXT_ADDR_POOL_ENABLE(andOPENTHREAD_CONFIG_CLI_IFCONFIG_INIT_ENABLEfor CLI) to use this API/CLI flow; otherwise continue using compile-timeOPENTHREAD_CONFIG_IP6_MAX_EXT_UCAST_ADDRS/OPENTHREAD_CONFIG_IP6_MAX_EXT_MCAST_ADDRS.
Upgrade rules: Added project upgrade rules to preserve required NCP CLI support and serial-task stack sizing when upgrading existing projects.
Configurable ECDSA dependencies: Added OpenThread crypto component options to allow projects to choose deterministic or non-deterministic ECDSA behavior.
Default Dataset Values Component for testing purposes: This release adds a new component for OpenThread called Default Dataset Values. This component provides defines for the basic elements of an OpenThread dataset, those being Channel, PAN ID, and Network Key. Each of these is configurable via the component’s configuration menu in the Simplicity Studio UI. This component should only be used for testing, as utilizing a static default dataset in production applications poses a security risk.
OpenThread TrustZone applications: OpenThread TrustZone applications now utilize all available flash and RAM memory.
Packaging Updates: The filepaths of .slcc files and code classification headers inside openthread_stack have moved: component to component_stack and include to include/code_classification (but the SLC component interface to use this content in a project is unchanged).
Logging improvements: Added a new
ot_sl_logcomponent which, when included in an application, utilizes the standard Silicon Labs debug logger.
Removed Features#
None.
Deprecated Features#
None.
API Changes#
Refer to API changes as documented here, starting with the changes on November 11, 2025 and ending with the changes on April 29, 2026.
Impact of Release Changes#
Impact Statements | Migration Guide
Impact Statements#
Multi-instance application upgrades may require manual updates to app.c when migrating from 25Q4 to 26Q2.
Migration Guide#
Multi-instance upgrades:
Multi-instance applications require an
app.cupdate only when app-level logging with instance-aware logging is enabled, in which case, implementotPlatLogOutput()and add the#include <stdint.h>and#include <openthread/instance.h>directives.The 25Q4 OpenThread BLE DMP samples were moved to the multiprotocol example set in 26Q2. No manual
app.cchanges are required for the single-instance sample. The multi-instance sample requires anapp.cupdate only when instance-aware logging is enabled. In that case, implementotPlatLogOutput()and add the required#include <stdint.h>and#include <openthread/instance.h>directives.
Bug Fixes#
| ID | Issue Description | GitHub / Salesforce Reference (if any) | Affected Software Variants, Hardware, Modes, Host Interfaces |
|---|---|---|---|
| 1224581, 1224586 | Updated the Silicon Labs OpenThread platform layer to avoid configuration-dependent Mbed TLS / PSA Crypto ABI mismatches when using precompiled libraries with customized Mbed TLS settings. | None | Applications using precompiled OpenThread libraries with customized Mbed TLS / PSA Crypto configurations |
| 1485392, 1582132 | Fixed issue in which the RTOS stack task would unexpectedly process serial data. | None | RTOS OpenThread applications using the serial task |
| 1566197 | Fixed an issue where certain Thread communications could be disrupted between a pair of devices in which a ble connection is open. | None | Thread Multiprotocol applications with BLE |
| 1569156 | Linking with the “OpenThread certification library” and enabling both “SHA-384 and SHA-512” components will no longer result in a hard fault. | 00336033 | Applications using the OpenThread certification libraries and customized PSA / MBEDTLS configurations |
| 1589205 | Fixed otPlatRadioEnergyScan to return OT_ERROR_BUSY when radio is already performing energy scan, as required by OpenThread platform API contract. | None | Multi-instance applications |
| 1590627 | OTBR Debian packages now install NAT64 and other default OTBR services correctly. | None | Debian OTBR installations |
| 1569103 | Fixed an issue where a disconnected CPC endpoint during frame transmission was incorrectly treated as a successful send, leading to undetected frame loss. | None | OTBR / NCP CPC configurations |
| 1602474 | During the join process for a Synchronized Sleepy End Device (SSED), the NCP support no longer errors out in the MAC when processing enhanced ACKs. This occurred only during the CSL negotiation and not in other cases. | None | Synchronized Sleepy End Devices (SSEDs) |
| 1605124 | Fixed issue in which an assert is occasionally caused by starting an alarm while another alarm is active. | 00335311 | All OPNs, boards, modes and interfaces |
| 1621998 | Corrected the value returned by otPlatRadioGetTransmitPower() so transmit power is reported in dBm. |
00340226 | All OPNs, boards, modes and interfaces |
| 1635295 | Fixed a busfault / hardfault that could occur when building or running OpenThread applications with NDEBUG=1. |
00341017 | All OPNs, boards, modes and interfaces |
| 1640055 | Fixed an issue where openthread was reinitializing the sl_iostream_debug stream causing the system default stream to become sl_iostream_debug. | 00341123 | All OPNs, boards, modes and interfaces |
| 1633284 | Fixed a CSL issue with otbr + rcp by increasing OPENTHREAD_CONFIG_MAC_CSL_REQUEST_AHEAD_US on host. | None | Host / OTBR configurations using sleepy end devices on Series 3 |
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 |
|---|---|---|---|---|---|
|
ot-soc-empty See README. |
This is a minimal OpenThread SoC application on a Full Thread Device (FTD), intended as a starting point for developing Thread applications in a baremetal environment. | Full Thread Device | SoC | Series 2 devices | None |
|
ot-soc-empty-freertos See README. |
This is a minimal OpenThread SoC application on a Full Thread Device (FTD), intended as a starting point for developing Thread applications in a FreeRTOS environment. | Full Thread Device | SoC | All OPNs and boards that support Thread | None |
Modified Examples#
OpenThread example application titles and descriptions were standardized across the Simplicity SDK example catalog.
The OpenThread BLE DMP samples were moved to multiprotocol.
Watchdog support has been added to all sample apps.
Removed Examples#
None.
Deprecated Examples#
None.
Known Issues and Limitations#
Issues in bold were added since the previous release.
| ID | Issue or Limitation Description | GitHub / Salesforce Reference (if any) | Workaround (if any) | Affected Software Variants, Hardware, Modes, Host Interfaces |
|---|---|---|---|---|
| 1559163 | When running in a Host / NCP architecture and repeatedly sending factory resets to the NCP, after approximately 15 times the host may stop sending messages to the NCP. This is intended behavior and the correct procedure when factory resetting the NCP is to also reset the host at the same time. This will be removed as a known issue in the next release. | None | The correct procedure when factory resetting the NCP is to also reset the host at the same time. | Host / NCP architectures |
| 1625968 | Radio may not return to IDLE when CSL is in use in multi-protocol environments. | 00339903 | Contact customer support for workaround. | Multi-protocol environments with CSL enabled |
| 1629296 | RxFrame::ProcessReceiveAesCcm() can take more than 5 ms to process on Series 2 platforms. |
00340682 | Contact customer support for workaround. | All Series 2 devices |
| 1634898 | Intermittent Ping Failures when using ot-ble-multi-instance app. | None | No known workaround. | All devices |
| 1673927 | An intermittent Usage Fault may occur on Series 3 devices during in-band commissioning on the commissioner node when the application is built using the LLVM compiler. | None | No known workaround. | Series 3 devices using LLVM-built |
| 1677527 | When OpenThread runs on the NCP (network co-processor), the border router does not forward DNS queries from Thread devices to upstream resolvers on the infrastructure link, so upstream DNS forwarding is not supported in NCP mode. Product flows where the border router must resolve arbitrary Internet names for Thread clients are out of scope for this release. If you need assistance implementing upstream DNS forwarding or integrating a host-side DNS forwarder into an NCP OTBR platform image, please contact Silicon Labs support. | None | Implement upstream DNS forwarding or integrate a host-side DNS forwarder. | OTBR / NCP configurations |