The first step I want to take is getting a basic development environment set up. I downloaded and installed Simplicity Studio from SiLabs’ website, which includes a GCC-based toolchain, and start spinning up an example project. Doing a bit of google-searching led me to a couple of tutorials, and I’m following this Youtube tutorial from SiLabs themselves. This will serve as a great starting point, as I’ll need a border-router for further Thread development anyway.
I’m using the same development board referenced in that video (an EFR32xG24 Explorer Kit), which makes things reasonably simple. Following the instructions I was able to build both the bootloader and the OpenThread RCP binary for my dev board. I deviated slightly from the video, however; I didn’t install the SiLabs Matter border-router image on my Raspberry Pi. I already have a Pi 4 set up to function as a docker container host for other things, so instead I followed these instructions from OpenThread to set up a border router docker container. I was able to follow these instructions as is, except for one modification: I changed the port mapping between the container and the host so that the container’s port 80 would be mapped to port 8081 on the host, to avoid a conflict. To do this, I replaced -p 8080:80
in the original docker run
command with -p 8081:80
. The complete command to run my container was:
docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8081:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
This also means that I access the OpenThread web portal via port 8081
on the raspberry pi instead of 8080
.
After all of that, I was able to to open up the OpenThread web portal and form a network successfully. Additionally, after creating the docker container I gave it a name by running
docker rename CONTAINER_ID ot_border_router
(Replace CONTAINER_ID with the actual container ID). I believe it’s also possible to name a container when it is created with docker run
, but because I didn’t do that initially, I had to use docker rename
.
Next up will be setting up a simple Thread device and testing out basic connectivity.