This article will present the steps for setting up a Thread border router on Raspberry Pi 5 using the open-source implementation OpenThread. The border router’s software stack will run on the host processor (Raspberry Pi), and a minimal “controller” will run on a device with a Thread radio (NRF52840 USB dongle). This kind of setup is known as a “Radio co-processor” (RPC) design. More information can be found here.

Creating a Thread Radio Co-processor (RCP)
Required items:
- nRF52840 Dongle
- nRF SDK* and toolchain (*SDK is needed only if we want to build the RPC firmware ourselves)
- nRF Util
SDK and Toolchain Installation
The Thread Radio Co-processor source code is available as a sample in nRF Connect SDK.
nRF Connect SDK has an associated toolchain, which includes tools and modules required to build nRF Connect SDK samples and applications. Installation guides for the SDK, the toolchain, and nRF Util are available on the Nordic site.
Once installed, open a terminal and execute the following command to check that a toolchain is available:
$ nrfutil toolchain-manager list
The result should look similar to this:

Build the Application
The source code for the application is available in your nRF Connect SDK installation folder (e.g., C:\nordic\v2.7.0\nrf\samples\openthread\coprocessor).
The application can be built using the nRF Connect VS Code extension or the nRF Util command-line tool. Here, we will use the command-line tool.
To build the thread co-processor sample, we will use the following steps:
Navigate to the nRF SDK folder. Start a CLI toolchain environment that is configured to work with West and the rest of the nRF Connect Toolchain and nRF Connect SDK environment:
$ nrfutil toolchain-manager launch --terminal
In the opened terminal, use the command below to build the application:
$ west build -p always -b nrf52840dongle/nrf52840 nrf/samples/openthread/coprocessor/
Program the NRF52840 USB Dongle with the RPC Firmware
Navigate to the coprocessor sample folder and execute the following commands:
Generate a package for a Device Firmware Update (DFU) of the nRF52840 Dongle device:
$ nrfutil pkg generate --hw-version 52 --sd-req=0x00
--application build/coprocessor/zephyr/zephyr.hex --application-version 1 build/coprocessor/zephyr/zephyr.zip

Plug the dongle into a USB port and press its RESET button to put it into the Device Firmware Update (DFU) mode. The LED on the dongle will start blinking red.
Update the firmware of the dongle with our package using a serial USB connection:
$ nrfutil dfu usb-serial -pkg .\build\coprocessor\zephyr\zephyr.zip -p COM4

Remember that the serial device, in your case, may have a different name.
Installing OTBR on Raspberry Pi 5
Instructions are based on the official guide of OpenThread
Clone the repo
$ git clone https://github.com/openthread/ot-br-posix
Install dependencies
Go to the cloned repo directory and execute:
$ WEB_GUI=1 ./script/bootstrap
Compile and install OTBR
At this step, we specify the Raspberry Pi’s interface, which in our case is the wlan0 (WiFi) interface.
$ INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
Attach the RCP Board
Now, we can plug in the nRF52840 Dongle, which we already programmed as a Radio co-processor (RPC), and then power cycle the Raspberry Pi.
Note: By default, the OpenThread border router configuration expects the RCP device serial port to be ttyACM0.
Check this using:
$ ls /dev/tty*
If your RCP device has a different serial port, please follow the instructions from the official guide here.
Testing
If the installation has been successful, the thread border router’s Web GUI service will be running. We can access it using a browser and typing the Raspberry Pi’s IP address, like this: http://192.168.178.XX.

Leave A Comment