Including Thread 1.3 features in SoC Applications#
Silicon Labs provides a number of sample SoC OpenThread applications. You can modify these to include Thread 1.3 features (some of which are enabled by default). This chapter assumes you are familiar with creating and modifying OpenThread projects in Simplicity Studio. If you need more information, see the Simplicity Studio User’s Guide and the OpenThread Quick Start Guide.
As an example, the following procedure shows how to configure 1.3 features:
Create a project based on the example: OpenThread – SoC CLI (FTD).
On the SOFTWARE COMPONENTS tab, search for and select the Stack (FTD) entry. Depending on your application, you may have to do this on a Stack (MTD) or Stack (RCP) component (this example is for an FTD application).


Configure the various compile-time settings. The options are explained in the OpenThread documentation.


For Thread 1.3 features, the following flags are required. The description for each flag indicates whether it is mandatory, optional, or recommended. Do not enable these flags for a Thread 1.1 application.
Thread Stack Protocol Version: Set to Thread 1.3 (mandatory).
DNS Client (mandatory): Required for Thread 1.3 compliance.
DNS-SD Server (recommended): FTDs only. Required for Thread 1.3 compliance on Thread Border Routers. Optional otherwise.
SRP Client (mandatory): Required for Thread 1.3 compliance.
SRP Server (recommended): FTDs only. Required for Thread 1.3 compliance on Thread Border Routers. Optional otherwise.
TCP features: For more information, see TCP in Thread 1.3.
TCP (recommended): Recommended for Thread 1.3 compliance. Declarative support required for Thread 1.3 component certification.
DNS Client over TCP: Recommended for Thread 1.3 compliance. Declarative support required for Thread 1.3 component certification.
Thread over Infrastructure (recommended): NCPs only. Required for Thread 1.3 compliance on Thread Border Routers (and enabled by default for the border router POSIX stack). For sample applications on EFR platforms, this applies only to NCPs, and as such is an untested feature, as Silicon Labs does not support full-featured NCP FTD/MTD applications.
Additional information about these features is included in the following table.
| Flag | Note |
|---|---|
| DNS Client (OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE) |
Must always be turned on for Thread 1.3 conformance. Enables support for DNS client. Enables sending DNS queries for AAAA (IPv6) records. |
| DNS-SD Server (OPENTHREAD_CONFIG_DNSSD_SERVER_ENABLE) |
Enables support for DNS-SD server. Service information from a local SRP server is used to resolve DNS-SD queries. A DNS server should implement the following features:
|
| SRP Client (OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE) |
Must always be turned on for Thread 1.3 conformance. Enables support for SRP (Service Registration Protocol) client. An SRP client Thread Device registers services with the SRP server, communicates with the corresponding DNS-SD authoritative server for queries, and uses the DNS recursive resolver for DNS resolution as defined by the respective IETF specifications. For more information, see: https://github.com/openthread/openthread/blob/main/src/cli/README_SRP_CLIENT.md |
| SRP Server (OPENTHREAD_CONFIG_SRP_SERVER_ENABLE) |
Enables support for SRP (Service Registration Protocol) server. An SRP server supports the DNS Update Server functions, plus additional public key cryptography for security and some other minor enhancements to better support constrained clients. For more information, see: https://github.com/openthread/openthread/blob/main/src/cli/README_SRP.md |
| TCP API (OPENTHREAD_CONFIG_TCP_ENABLE) |
Enables low-power TCP APIs. For more information, see: https://github.com/openthread/openthread/blob/main/src/cli/README_TCP.md |
| DNS Client over TCP (OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE) |
Enables sending DNS queries over TCP. For more information, see: https://github.com/openthread/openthread/blob/main/src/cli/README.md#dns-config |
| Thread over Infrastructure (OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE) |
Must always be turned on for Thread 1.3 conformance. Enables TREL radio link for Thread over Infrastructure feature. For sample applications, this is applicable to NCPs only, which are currently not supported by Silicon Labs. See the next section for information on how this applies to border router POSIX platforms. |
| Delay Aware Queue Management (OPENTHREAD_CONFIG_DELAY_AWARE_QUEUE_MANAGEMENT_ENABLE) |
Must always be turned on for Thread 1.3 conformance. Devices will monitor time-in-queue of messages in the direct tx queue and if the wait time is larger than specified thresholds it may update ECN flag (if message indicates it is ECN-capable) or drop the message. |
TCP in Thread 1.3#
Thread 1.3 component certification requires declarative support for TCP, which means the TCP APIs (OPENTHREAD_CONFIG_TCP_ENABLE and OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE) must be enabled for conformance. However, if one chooses to not include TCP, then the third-party TCPlp implementation can be stubbed out using the “TCPlp stubs for OpenThread TCP API” component. If this component is installed, TCPlp implementation will be stubbed for an FTD / MTD application. Otherwise, the TCPlp implementation is included by default.


It is recommended to enable TCP for Thread 1.3 conformance so that OpenThread border routers using DNS can make use of well-known DNS-over-TCP queries and responses.
Note: TCP is supported in SoC and POSIX host (OTBR) applications. It is not required on RCP applications, and can be supported on NCP applications, but Silicon Labs does not yet provide support for full-featured NCP FTD/MTD applications.