Building OTBR Locally#
The purpose of this document is to provide comprehensive steps and guidance on building an OpenThread Border Router (OTBR) that communicates with the Co-Processor Communication Daemon (CPCd). This guide aims to assist developers and engineers in setting up and configuring an OTBR to enhance network communication and management. By following the outlined procedures, you can use the OTBR in a multiprotocol context. For reference on hardware or software requirements, refer to the local host configuration and co-processor configuration.
Install OTBR Repository#
OpenThread host applications can be built from the Silicon Labs Simplicity SDK. Silicon Labs provides a vendor extension to build an OpenThread Linux host application with multi-PAN and CPC support.
Start by cloning the SDK:
git clone https://github.com/SiliconLabsSoftware/sisdk-release.git
Check out the desired SDK branch. This guide uses the sisdk-2026.6 branch.
In this document, $SDK_DIR refers to the location the above repo is checked out. Set the SDK directory environment variable:
export SDK_DIR=<absolute path to the SDK checkout>
Silicon Labs maintains both openthread and ot-br-posix as forks of their respective upstream projects. To make the changes transparent, the SDK package ships the following under $SDK_DIR/openthread_stack/:
README.md— overview of the patch files and how to inspect or apply themopenthread.patch— diff between the upstreamopenthreadbase commit and the Silicon Labs forkot-br-posix.patch— diff between the upstreamot-br-posixbase commit and the Silicon Labs forkupstream-commits— the upstream base commit for each repositoryCHANGELOG.md— per-release summary of fork changes relative to upstream
The upstream commit SHAs are also listed in the Silicon Labs OpenThread Release Notes. You can use the patch files to inspect exactly what Silicon Labs changed, reproduce the diff independently, or apply it to your own fork with git apply.
Install the required host package:
sudo apt-get install bind9
For steps on setting up and running CPCd, refer to Building CPCd locally.
Building OTBR#
Before you build OTBR, ensure the OpenThread repo at $SDK_DIR/openthread_stack/util/third_party/openthread is symlinked under $SDK_DIR/openthread_stack/util/third_party/ot-br-posix/third_party/openthread/repo. If the symlink does not exist, create it:
ln -s $SDK_DIR/openthread_stack/util/third_party/openthread \ $SDK_DIR/openthread_stack/util/third_party/ot-br-posix/third_party/openthread/repo
Configuration Options Reference#
Starting with SiSDK 2026.6, the bootstrap and setup scripts accept explicit environment variables that control which service implementations are compiled in. Set these variables consistently to both the bootstrap and setup steps.
The tables below list all environment variables supported by ./script/bootstrap and ./script/setup. Variables shared by both scripts must be set to the same value for each script.
Note: In this section, RCP and NCP refer to the co-processor firmware type. For CPC-based multiprotocol builds, both cases compile in
DOT_MULTIPAN_RCP=ONand can be considered RCP-CPC and NCP-CPC co-processors. This distinction affects which service implementations are used on the host side.
./script/bootstrap
bootstrap resolves system package dependencies. These variables control which optional packages are installed.
Variable | Repo Default | RCP Default | NCP Default | Description | Values |
|---|---|---|---|---|---|
|
|
|
| Select mDNS implementation |
|
|
|
|
| Select DHCPv6 Prefix Delegation client |
|
|
|
|
| Install NAT64-related packages (iptables, bind9) |
|
|
|
|
| Select NAT64 translator implementation |
|
|
|
|
| Install backbone router library packages ( |
|
|
|
|
| Install firewall packages ( |
|
|
|
|
| Install web GUI dependencies (nodejs, npm) |
|
|
|
|
| Install reference device packages ( |
|
|
|
|
| Install additional packages required for backbone CI testing ( |
|
./script/setup#
setup builds and installs the border router. These variables govern which Thread features are compiled in and how the infrastructure link is configured.
Variable | Repo Default | RCP Default | NCP Default | Description | Values |
|---|---|---|---|---|---|
|
| Valid interface | Valid interface | Infrastructure network interface name | Any valid interface, e.g. |
|
|
|
| mDNS implementation compiled into |
|
|
|
|
| DHCPv6 PD client compiled in; |
|
|
|
|
| Enable NAT64 support ( |
|
|
|
|
| NAT64 dataplane translator |
|
|
|
|
| IPv4 address pool for the OpenThread NAT64 translator; passed as | Any valid CIDR |
|
|
|
| Enable Thread border routing (IPv6 RA install/forwarding) |
|
|
|
|
| Enable Thread Backbone Router feature ( |
|
|
|
|
| Enable DNS-SD discovery proxy; automatically disabled when |
|
|
|
|
| Install and enable the |
|
|
|
|
| Build the OTBR web management UI ( |
|
|
|
|
| Build the OTBR REST API ( |
|
|
|
|
| Build as a Thread certification reference device; sets |
|
|
|
|
| Vendor name advertised by the OTBR service ( | Any string |
|
|
|
| Product name advertised by the OTBR service ( | Any string |
| (unset) | (see build command) | (see build command) | Additional CMake | Any valid CMake flags |
Note:
OTBR_MDNS=avahiis deprecated as of SiSDK 2026.6 and is not recommended.
Build Steps#
Note: The values shown below are what Silicon Labs builds the host with when qualifying our co-processor for certification. Alternate values are supported — if your integration requires a different combination, try the available options. For example, if your ecosystem relies on mDNSResponder, set
OTBR_MDNS=mDNSResponderindependently.
Set up the required environment variables before running any build commands (if not already set):
export THREAD_DIR=$SDK_DIR/openthread # Silicon Labs OpenThread PAL (contains platform-abstraction/) export CPCD_DIR=<absolute path to the cpc-daemon directory>
For the following steps, we will run from the included version of the ot-br-posix in the Silicon Labs SDK, at:
cd $SDK_DIR/openthread_stack/util/third_party/ot-br-posix/
Step 1: Run the bootstrap script
For RCP:
sudo OTBR_MDNS=openthread OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 NAT64_SERVICE=openthread \ ./script/bootstrap
For NCP:
sudo OTBR_MDNS=mDNSResponder OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 NAT64_SERVICE=tayga \ ./script/bootstrap
Step 2: Copy the Silicon Labs configuration header
To configure the OTBR for multi-PAN and CPC support, copy the Silicon Labs-specific configuration header into the ot-br-posix OpenThread source tree:
sudo cp $THREAD_DIR/platform-abstraction/posix/openthread-core-silabs-posix-config.h \ $SDK_DIR/openthread_stack/util/third_party/openthread/src/posix/platform/
Note: This configuration header overrides many settings to recommended values from the certifiable OTBR configuration. Review the file for any settings specific to your scenario.
Step 3: Run the setup script
Both RCP and NCP CPC builds require -DOT_MULTIPAN_RCP=ON. Adjust INFRA_IF_NAME to match your network interface (eth0 for Ethernet, wlan0 for Wi-Fi).
For RCP:
sudo INFRA_IF_NAME=eth0 OTBR_MDNS=openthread OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 \ NAT64_SERVICE=openthread \ OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON \ -DCPCD_SOURCE_DIR=$CPCD_DIR \ -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON \ -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$THREAD_DIR/platform-abstraction/posix/posix_vendor_rcp.cmake \ -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$THREAD_DIR/platform-abstraction/posix/cpc_interface.cpp \ -DOT_CLI_VENDOR_EXTENSION=$THREAD_DIR/platform-abstraction/posix/posix_vendor_cli.cmake \ -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h \ -DOTBR_DUA_ROUTING=ON -DOTBR_DHCP6_PD=ON" \ ./script/setup
For NCP:
sudo INFRA_IF_NAME=eth0 OTBR_MDNS=mDNSResponder OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 \ NAT64_SERVICE=tayga \ OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON \ -DCPCD_SOURCE_DIR=$CPCD_DIR \ -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON \ -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$THREAD_DIR/platform-abstraction/posix/posix_vendor_rcp.cmake \ -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$THREAD_DIR/platform-abstraction/posix/cpc_interface.cpp \ -DOT_CLI_VENDOR_EXTENSION=$THREAD_DIR/platform-abstraction/posix/posix_vendor_cli.cmake \ -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h \ -DOTBR_DUA_ROUTING=ON -DOTBR_DHCP6_PD=ON" \ ./script/setup
NCP Mode Limitations#
When OpenThread runs on the NCP, 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.
Troubleshooting — Missing
.default-versionfile: If CMake reports an error such as:file failed to open for reading: .../third_party/openthread/repo/.default-versionCreate the missing file manually from the root of
ot-br-posixbefore re-running setup:echo "0.01.00" > ./third_party/openthread/repo/.default-version
Some key build flags used in the setup command:
-DOT_THREAD_VERSION: Thread protocol version to build against (e.g.,1.4).-DOT_MULTIPAN_RCP=ON: Enables multi-PAN RCP support.-DOT_POSIX_RCP_VENDOR_BUS=ON: Enables the vendor RCP bus.-DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE: Path to the vendor CMake package file. For multiprotocol CPC builds this isposix_vendor_rcp.cmake. (In earlier releases this was referred to asSilabsRcpDeps.)-DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE: Path to the vendor RCP interface source file. For multiprotocol CPC builds this iscpc_interface.cpp.-DOT_PLATFORM_CONFIG: Path toopenthread-core-silabs-posix-config.h.
Note: Earlier SDK releases (SiSDK 2025.12 and earlier) included
-DOTBR_SRP_ADVERTISING_PROXY=ONand-DOTBR_DNSSD_DISCOVERY_PROXY=ONexplicitly in the setup command. Starting with SiSDK 2026.6, these are derived automatically from theOTBR_MDNSchoice:
When
OTBR_MDNS=openthread(RCP default): the native OpenThread stack handles SRP advertising and DNS-SD discovery directly. The external proxy options defaultOFFand are not needed.When
OTBR_MDNS=mDNSResponder(NCP default):OTBR_SRP_ADVERTISING_PROXYis automatically set toONby the build system, since mDNSResponder requires it. You do not need to pass it explicitly.If you are maintaining build scripts from older SDK releases, you can safely remove those flags when targeting SiSDK 2026.6 and later.
To link against the CPC library and headers, it is recommended that CPCd is first built and installed. The OpenThread CMake projects will automatically resolve these dependencies using pkgconfig or by searching in standard installation directories. If CPCd is not installed, the library path and include directory can be specified as CMake arguments (-DCpc_LIBRARY and -DCpc_INCLUDE_DIR respectively), or the root path to the cpc-daemon project can be specified as a CMake argument (-DCPCD_SOURCE_DIR).
Note: Host applications can be built using CMake only;
makeis unsupported.
Note: To clear or update your build space, run
sudo rm -rf build/.
OTBR Configuration Changes for Child and Source Match Tables#
Starting with the 2025.12.0 release, the sizing logic for child and source match tables has been decoupled. The number of entries in the source match table now depends on a combination of:
The configured maximum number of children (
OPENTHREAD_CONFIG_MLE_MAX_CHILDREN)The build type (single-instance, multi-instance, or CMP)
The number of OpenThread network instances or protocol stacks included in the build (for example, OpenThread and Zigbee in a CMP setup)
The total number of source-match entries is sized to support all child devices across the enabled protocol stacks. In practice, this corresponds to the number of OpenThread children across all OT instances, plus any Zigbee end-device children when CMP is enabled:
total entries ≈ (MLE children × OT instances) + (Zigbee children, only when CMP is enabled)
This can be adjusted at build time using:
-DOPENTHREAD_CONFIG_MLE_MAX_CHILDREN=10 -DSL_ZIGBEE_MAX_END_DEVICE_CHILDREN=6 -DOPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE=1 -DOPENTHREAD_CONFIG_MULTIPLE_INSTANCE_NUM=2
Note: Use
SL_ZIGBEE_MAX_END_DEVICE_CHILDRENonly if Zigbee runs alongside OT (CMP).
Note: Use OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_* only if you're intentionally running multiple OT instances in the same host.
Configuration of the OTBR#
Once the OTBR has been successfully built, you need to modify the Radio URL to point to the correct CPCd iid. Note these instructions use: -DOT_MULTIPAN_RCP=ON meaning the OTBR was built for a multi-PAN RCP, this requires us to include both iid and iid-list values. Both Zigbeed and the OpenThread stack can connect to CPCd and use the multi-PAN RCP at one time. Spinel messages for each application are labeled with a Spinel Interface ID (IID), which is supplied to the application at startup via the OpenThread Radio URL command line argument. The fact that the RCP is being shared between multiple PANs is transparent to the host applications.
-Multi-PAN RCP (ex: Zigbee RCP + OT RCP): OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+cpc://cpcd_0?iid=2&iid-list=0". This indicates the OT RCP interface will respond to IID=2.
Zigbee NCP + OT RCP:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+cpc://cpcd_0?iid=0&iid-list=0". The Zigbee NCP does not use Spinel thus the multi-PAN interface (IID) can be set to 0.
/etc/default/otbr-agent is the configuration file where you can update the Radio URL as follows:
sudo vi /etc/default/otbr-agent OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+cpc://cpcd_0?iid=2&iid-list=0"
To confirm that the OTBR is correctly running, you can access its CLI utility by executing sudo ot-ctl.
OTBR Build Commands for SDK Versions#
The following are reference OTBR build commands for previous releases. Set $SDK_DIR, $THREAD_DIR, and $CPCD_DIR as described in Build Steps before running.
SiSDK 2026.6 - Thread 1.4#
The commands below use the new OTBR_MDNS, OTBR_DHCP6_PD_CLIENT, and NAT64_SERVICE environment variables mandated in this release. See Build Environment Variables for a full explanation.
Bootstrap and setup must use matching values for these variables. The $THREAD_DIR and $CPCD_DIR variables must be set before running (see Build Environment Variables).
RCP:
Bootstrap:
sudo OTBR_MDNS=openthread OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 NAT64_SERVICE=openthread \ ./script/bootstrap
Setup:
sudo INFRA_IF_NAME=eth0 OTBR_MDNS=openthread OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 \ NAT64_SERVICE=openthread \ OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON \ -DCPCD_SOURCE_DIR=$CPCD_DIR \ -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON \ -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$THREAD_DIR/platform-abstraction/posix/posix_vendor_rcp.cmake \ -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$THREAD_DIR/platform-abstraction/posix/cpc_interface.cpp \ -DOT_CLI_VENDOR_EXTENSION=$THREAD_DIR/platform-abstraction/posix/posix_vendor_cli.cmake \ -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h \ -DOTBR_DUA_ROUTING=ON -DOTBR_DHCP6_PD=ON" \ ./script/setup
NCP:
Bootstrap:
sudo OTBR_MDNS=mDNSResponder OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 NAT64_SERVICE=tayga \ ./script/bootstrap
Setup:
sudo INFRA_IF_NAME=eth0 OTBR_MDNS=mDNSResponder OTBR_DHCP6_PD_CLIENT=dhcpcd NAT64=1 \ NAT64_SERVICE=tayga \ OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON \ -DCPCD_SOURCE_DIR=$CPCD_DIR \ -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON \ -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$THREAD_DIR/platform-abstraction/posix/posix_vendor_rcp.cmake \ -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$THREAD_DIR/platform-abstraction/posix/cpc_interface.cpp \ -DOT_CLI_VENDOR_EXTENSION=$THREAD_DIR/platform-abstraction/posix/posix_vendor_cli.cmake \ -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h \ -DOTBR_DUA_ROUTING=ON -DOTBR_DHCP6_PD=ON" \ ./script/setup
Note: NCP support wasn't present in the older releases.
SiSDK 2025.12 - Thread 1.4#
sudo INFRA_IF_NAME=eth0 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$SDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$SDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DHCP6_PD=ON" ./script/setup
SiSDK 2025.06 - Thread 1.4#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=0 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NAT64=1 DHCPV6_PD=0 WEB_GUI=0 REST_API=0 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$SDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$SDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON -DOTBR_TREL=ON -DOTBR_DHCP6_PD=ON" ./script/setup
SiSDK 2024.12 - Thread 1.4#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=0 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NETWORK_MANAGER=0 NAT64=1 DNS64=1 DHCPV6_PD=0 WEB_GUI=0 REST_API=0 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.4 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON -DOTBR_TREL=ON -DOTBR_DHCP6_PD=ON" ./script/setup
SiSDK 2024.06 - Thread 1.3#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=0 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NETWORK_MANAGER=0 NAT64=1 DNS64=1 DHCPV6_PD=0 WEB_GUI=0 REST_API=0 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.3 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$SDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$SDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON -DOTBR_TREL=ON -DOTBR_DHCP6_PD=ON" ./script/setup
GSDK v4.4.3#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NAT64=1 DNS64=1 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.3 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_RCP_VENDOR_BUS=ON -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_PROJECT_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON" ./script/setup
GSDK v4.4.2#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NAT64=1 DNS64=1 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.3 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_CONFIG_RCP_BUS=VENDOR -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON" ./script/setup
GSDK v4.4.1, v4.4.0#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NAT64=1 DNS64=1 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.3 -DOT_MULTIPAN_RCP=ON -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_RCP_VENDOR_BUS=ON -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON" ./script/setup
GSDK v4.3.3, v4.3.2#
sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_ROUTING=1 NAT64=1 DNS64=1 OTBR_OPTIONS="-DOT_THREAD_VERSION=1.3 -DOT_MULTIPAN_RCP=ON -DCMAKE_MODULE_PATH=$GSDK_DIR/protocol/openthread/platform-abstraction/posix -DCPCD_SOURCE_DIR=$CPCD_DIR -DOT_POSIX_CONFIG_RCP_BUS=VENDOR -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=SilabsRcpDeps -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$GSDK_DIR/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp -DOT_CONFIG=openthread-core-silabs-posix-config.h -DOTBR_DUA_ROUTING=ON -DOTBR_DNSSD_DISCOVERY_PROXY=ON -DOTBR_SRP_ADVERTISING_PROXY=ON" ./script/setup
Building OT-CLI#
This command builds the POSIX ot-cli application using CMake (a separate OT host application from otbr-agent). Run from the util/third_party/openthread directory of the SDK, with $THREAD_DIR and $CPCD_DIR set as described in Build Steps:
sudo ./script/cmake-build posix \ -DOT_MULTIPAN_RCP=ON \ -DOT_POSIX_RCP_HDLC_BUS=ON -DOT_POSIX_RCP_SPI_BUS=ON -DOT_POSIX_RCP_VENDOR_BUS=ON \ -DCPCD_SOURCE_DIR=$CPCD_DIR \ -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=$THREAD_DIR/platform-abstraction/posix/cpc_interface.cpp \ -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=$THREAD_DIR/platform-abstraction/posix/posix_vendor_rcp.cmake \ -DOT_PLATFORM_CONFIG=openthread-core-silabs-posix-config.h