OpenThread Border Router via Ethernet

Hello,
I recently bought a SLZB-MR2 (SLZB-MR2 Zigbee Thread Ethernet PoE LAN USB WiFi Adapter CC2652P EFR32 | Zigbee2MQTT | Home Assistant | SMLIGHT | SMLIGHT Official Homepage) and flashed the Matter-over-Thread firmware on the Silicon Labs EFR32MG21 radio. The device is connected via Ethernet.

However, after that, I am a bit lost.

The SLZB-MR2 webinterface gives Socket Port: 6638 and Serial Speed: 460800 for the radio. The manual (Connecting Matter-over-Thread Device to Home Assistant | SLZB-06 * Series Manual) only describes how to setup the Home Assistant AddOn, which I can not do, as I do not use HomeAssistant OS, but on docker.

I am going to setup OpenThread Border Router following the manual Docker Install  |  OpenThread

  1. Setup IP forwarding (step 2)
  2. Add otbr-env.list file, set OT_INFRA_IF=eth0 (step 4)
  3. Start container: docker run --name=otbr --network=host --cap-add=NET_ADMIN --device=/dev/ttyACM0 --device=/dev/net/tun --volume=/var/lib/otbr:/data --env-file=otbr-env.list openthread/border-router

gives:

$ docker run --name=otbr --network=host --cap-add=NET_ADMIN --device=/dev/ttyACM0 --device=/dev/net/tun --volume=/var/lib/otbr:/data --env-file=otbr-env.list --restart=always openthread/border-router 

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service otbr-agent: starting
Configuring OpenThread firewall...
Configuring OpenThread NAT64...
Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-9cfb06a
[NOTE]-AGENT---: Thread version: 1.4.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=1000000
[NOTE]-AGENT---: Radio URL: trel://wlan0
[NOTE]-ILS-----: Infra link selected: wlan0
[INFO]-RCP_HOS-: OpenThread log level changed to 5
56d.17:02:46.139 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:0, cmd:RESET
56d.17:02:46.139 [D] P-SpinelDrive-: Waiting response: key=0
56d.17:02:48.141 [W] P-SpinelDrive-: Wait for response timeout
56d.17:02:48.141 [I] P-SpinelDrive-: co-processor self reset successfully
56d.17:02:48.141 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:PROTOCOL_VERSION
56d.17:02:48.142 [D] P-SpinelDrive-: Waiting response: key=1
56d.17:02:50.144 [W] P-SpinelDrive-: Wait for response timeout
56d.17:02:50.144 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:PROTOCOL_VERSION
56d.17:02:50.144 [D] P-SpinelDrive-: Waiting response: key=1
56d.17:02:52.146 [W] P-SpinelDrive-: Wait for response timeout
56d.17:02:52.146 [C] Platform------: Init() at spinel_driver.cpp:87: Failure
56d.17:02:52.146 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:PROTOCOL_VERSION
56d.17:02:52.146 [D] P-SpinelDrive-: Waiting response: key=1
56d.17:02:54.149 [W] P-SpinelDrive-: Wait for response timeout
otbr-agent exited with code 1 (by signal 0).
Chain OT_FORWARD_INGRESS (0 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere             PKTTYPE = unicast
DROP       all  --  anywhere             anywhere             match-set otbr-ingress-deny-src src
ACCEPT     all  --  anywhere             anywhere             match-set otbr-ingress-allow-dst dst
DROP       all  --  anywhere             anywhere             PKTTYPE = unicast
ACCEPT     all  --  anywhere             anywhere            
otbr-ingress-deny-src
otbr-ingress-deny-src-swap
otbr-ingress-allow-dst
otbr-ingress-allow-dst-swap
OpenThread firewall rules removed.
s6-svlisten1: fatal: /run/s6-rc/servicedirs/otbr-agent failed permanently or its supervisor died
s6-rc: warning: unable to start service otbr-agent: command exited 1
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

and the container stops.

Most information I found are about using the router with a local radio module, not a module connected over Ethernet.

Thanks for any hints that point me in some direction!

Same problem here, no solution yet… :frowning:

Did you manage to find a solution to this? I have the same issue where I can’t get the docker container for OTBR to stay running.

No, I resorted to run OTBR as HA AddOn, which works flawlessly. You might find some insight in studying the AddOn build / install script.

I’ve actually managed to get it working, but I had to switch the docker image for OTBR for this one.

I then had to use the docker-compose file as per this post