Timeout error on startup after latest release (OpenThread Border Router)
After the latest release I am not able to start OpenThread Border Router again. During startup I get this TimeOut Error:
`-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.15.0
You are running the latest version of this add-on.
System: Home Assistant OS 16.2 (amd64 / qemux86-64)
s6-rc: info: service socat-otbr-tcp successfully started
Home Assistant Core: 2025.10.4
Home Assistant Supervisor: 2025.10.0
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[13:54:14] INFO: Migrating OTBR settings if needed...
2025-10-29 13:54:14 homeassistant asyncio[241] DEBUG Using selector: EpollSelector
2025-10-29 13:54:14 homeassistant zigpy.serial[241] DEBUG Opening a serial connection to '/tmp/ttyOTBR' (baudrate=460800, xonxoff=False, rtscts=False)
2025-10-29 13:54:14 homeassistant zigpy.serial[241] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7fa18ad00310>, Serial<id=0x7fa18ab20a60, open=True>(port='/tmp/ttyOTBR', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-10-29 13:54:14 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-29 13:54:14 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-29 13:54:15 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 1 of 4)
2025-10-29 13:54:15 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-29 13:54:15 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-29 13:54:16 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 2 of 4)
2025-10-29 13:54:17 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-29 13:54:17 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-29 13:54:18 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 3 of 4)
2025-10-29 13:54:18 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-29 13:54:18 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-29 13:54:19 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 4 of 4)
2025-10-29 13:54:19 homeassistant zigpy.serial[241] DEBUG Waiting for serial port to close
2025-10-29 13:54:19 homeassistant zigpy.serial[241] DEBUG Connection lost: None
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 213, in send_frame
return await asyncio.shield(future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/migrate_otbr_settings.py", line 189, in <module>
asyncio.run(main())
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/local/bin/migrate_otbr_settings.py", line 126, in main
hwaddr = await get_adapter_hardware_addr(args.adapter, args.baudrate)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/bin/migrate_otbr_settings.py", line 84, in get_adapter_hardware_addr
rsp = await protocol.send_command(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 245, in send_command
return await self.send_frame(frame, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 212, in send_frame
async with asyncio_timeout(timeout):
File "/usr/lib/python3.11/asyncio/timeouts.py", line 98, in __aexit__
raise TimeoutError
TimeoutError
[13:54:19] WARNING: otbr-agent exited with code 1 (by signal 0).
otbr-ingress-deny-src
otbr-ingress-deny-src-swap
otbr-ingress-allow-dst
otbr-ingress-allow-dst-swap
[13:54:19] INFO: OTBR firewall teardown completed.
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
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service banner: stopping
s6-rc: info: service socat-otbr-tcp: stopping
s6-rc: info: service mdns: stopping
s6-rc: info: service banner successfully stopped
2025/10/29 13:54:19 socat[78] W exiting on signal 15
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:36:47) stopping
s6-rc: info: service socat-otbr-tcp successfully stopped
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
[13:54:19] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped`
I am using an SLZB-MR2 with the latest updates. The zigbee part of the coordinator is working without issues.
What type of installation are you running?
Home Assistant OS
Which operating system are you running on?
Home Assistant Operating System
Which add-on are you reporting an issue with?
OpenThread Border Router
What is the version of the add-on?
2.15.0
Steps to reproduce the issue
- Installed the latest OpenThreadRouter
- Start Process/Addon
- raises error
System Health information
System Information
| version | core-2025.10.4 |
|---|---|
| installation_type | Home Assistant OS |
| dev | false |
| hassio | true |
| docker | true |
| container_arch | amd64 |
| user | root |
| virtualenv | false |
| python_version | 3.13.7 |
| os_name | Linux |
| os_version | 6.12.43-haos |
| arch | x86_64 |
| timezone | Europe/Berlin |
| config_dir | /config |
Home Assistant Community Store
| GitHub API | ok |
|---|---|
| GitHub Content | ok |
| GitHub Web | ok |
| HACS Data | ok |
| GitHub API Calls Remaining | 5000 |
| Installed Version | 2.0.5 |
| Stage | running |
| Available Repositories | 2344 |
| Downloaded Repositories | 2 |
Home Assistant Cloud
| logged_in | false |
|---|---|
| can_reach_cert_server | ok |
| can_reach_cloud_auth | ok |
| can_reach_cloud | ok |
Home Assistant Supervisor
| host_os | Home Assistant OS 16.2 |
|---|---|
| update_channel | stable |
| supervisor_version | supervisor-2025.10.0 |
| agent_version | 1.7.2 |
| docker_version | 28.3.3 |
| disk_total | 30.8 GB |
| disk_used | 6.9 GB |
| nameservers | 2a02:810d:9588:2500:62b5:8dff:fed3:4aa5, 192.168.178.123, fdb4:ffd:fb03:0:62b5:8dff:fed3:4aa5 |
| healthy | true |
| supported | true |
| host_connectivity | true |
| supervisor_connectivity | true |
| ntp_synchronized | true |
| virtualization | kvm |
| board | ova |
| supervisor_api | ok |
| version_api | ok |
| installed_addons | Advanced SSH & Web Terminal (21.0.4), File editor (5.8.0), Matter Server (8.1.1), OpenThread Border Router (2.15.0), Mosquitto broker (6.5.2), Cloudflared (6.0.3), Get HACS (1.3.1) |
Dashboards
| dashboards | 2 |
|---|---|
| resources | 1 |
| views | 2 |
| mode | storage |
Network Configuration
| adapters | lo (disabled), enp0s18 (enabled, default, auto), hassio (disabled), docker0 (disabled), veth8b355c0 (disabled), veth9bcad78 (disabled), veth783863a (disabled), vethd1816cb (disabled), vethd412a58 (disabled), veth38ea3a6 (disabled), veth9ceb8c2 (disabled), vethf9af8f9 (disabled) |
|---|---|
| ipv4_addresses | lo (127.0.0.1/8), enp0s18 (192.168.178.48/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), veth8b355c0 (), veth9bcad78 (), veth783863a (), vethd1816cb (), vethd412a58 (), veth38ea3a6 (), veth9ceb8c2 (), vethf9af8f9 () |
| ipv6_addresses | lo (::1/128), enp0s18 (2a02:810d:9588:2500:c027:7098:8000:4610/64, fdb4:ffd:fb03:0:d587:8794:2d69:b34/64, fe80::f7c5:8b6a:ed2f:e2a/64), hassio (fe80::a8a2:c5ff:fe44:9eab/64), docker0 (fe80::f832:61ff:fea5:1cd3/64), veth8b355c0 (fe80::6c51:63ff:fe49:f094/64), veth9bcad78 (fe80::b03b:71ff:fe54:76d8/64), veth783863a (fe80::b03b:32ff:febe:81de/64), vethd1816cb (fe80::609d:79ff:fe91:35fc/64), vethd412a58 (fe80::3cff:18ff:fe35:a3a5/64), veth38ea3a6 (fe80::8f0:61ff:fe0e:5784/64), veth9ceb8c2 (fe80::184f:98ff:fef8:959e/64), vethf9af8f9 (fe80::c478:97ff:fea6:24ec/64) |
| announce_addresses | 192.168.178.48, 2a02:810d:9588:2500:c027:7098:8000:4610, fdb4:ffd:fb03:0:d587:8794:2d69:b34, fe80::f7c5:8b6a:ed2f:e2a |
Recorder
| oldest_recorder_run | 18. Oktober 2025 um 09:00 |
|---|---|
| current_recorder_run | 25. Oktober 2025 um 13:43 |
| estimated_db_size | 282.52 MiB |
| database_engine | sqlite |
| database_version | 3.49.2 |
Anything in the Supervisor logs that might be useful for us?
Anything in the add-on logs that might be useful for us?
Logger: homeassistant.components.hassio
Quelle: components/hassio/websocket_api.py:145
Integration: Home Assistant Supervisor (Dokumentation, Probleme)
Erstmals aufgetreten: 14:00:18 (1 Vorkommnis)
Zuletzt protokolliert: 14:00:18
Failed to to call /addons/core_openthread_border_router/stats - Container addon_core_openthread_border_router is not running
Additional information
No response
I have exactly the same problem. Everything was working fine on 2.14 and now I get the above mentioned error and the addon doesn't start. Any way to roll back to 2.14? Or any quick fix? Of course the config hasn't changed. I just upgraded to 2.15... Thanks for helping out!
same problem for me too with 2.15. 2.14 was working without problems :/
What adapters are you using?
I'm using a SLZB-MR3 connect through LAN. With this adapter I use the radio 1 [EFR32MG24] for thread.
Here is my config:
device: /dev/ttyS3
baudrate: "460800"
flow_control: false
otbr_log_level: notice
firewall: true
nat64: false
network_device: 192.168.1.204:6638
Encountering the same issue. I'm using a SLZB-MR1 running most recent slzb core framework, and OTBR addon version v2.15. RCP firmware is installed on the EFR32, connected directly over USB to my HAOS instance running as a Proxmox VM.
Re: downgrading, I've forked the addons repo and reverted the version manually. You can add it as an add-on repo: https://github.com/Auroric/addons. It gets me past the errors above, but introduces a new one (see below).
I just got my MR1 though and never had it set up on OTBR addon v2.14, so it might be unrelated. Could someone ( @Daniel-S-23 @fubu2k @taoofstefan ) else try it out and see if it fixes the issues?
-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.14.0
You are running the latest version of this add-on.
System: Home Assistant OS 16.2 (amd64 / qemux86-64)
Home Assistant Core: 2025.10.4
Home Assistant Supervisor: 2025.10.0
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[00:01:44] INFO: Setup OTBR firewall...
[00:01:45] INFO: Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-b067e5ac-dirty
[NOTE]-AGENT---: Thread version: 1.3.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/ttyS0?uart-baudrate=460800&uart-init-deassert
[NOTE]-AGENT---: Radio URL: trel://enp6s18
[NOTE]-ILS-----: Infra link selected: enp6s18
49d.17:04:32.030 [W] P-SpinelDrive-: Wait for response timeout
49d.17:04:34.032 [W] P-SpinelDrive-: Wait for response timeout
49d.17:04:36.035 [W] P-SpinelDrive-: Wait for response timeout
49d.17:04:36.035 [C] Platform------: Init() at spinel_driver.cpp:83: Failure
49d.17:04:38.037 [W] P-SpinelDrive-: Wait for response timeout
[00:01:54] WARNING: otbr-agent exited with code 1 (by signal 0).
Chain OTBR_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
Chain OTBR_FORWARD_EGRESS (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
[00:01:55] INFO: OTBR firewall teardown completed.
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 banner: stopping
s6-rc: info: service mdns: stopping
Default: mDNSResponder (Engineering Build) (Oct 7 2025 12:31:51) stopping
s6-rc: info: service banner successfully stopped
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service legacy-cont-init successfully stopped
[00:01:55] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service mdns successfully stopped
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
Thanks for helping out and setting up a repo with the old version @Auroric. Unfortunately I get the same error with your version:
[09:29:32] INFO: The otbr-web is disabled.
[09:29:32] INFO: Enabled socat-otbr-tcp.
s6-rc: info: service socat-otbr-tcp: starting
s6-rc: info: service mdns: starting
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service mdns successfully started
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service banner: 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
[09:29:32] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Oct 7 2025 12:31:51) starting
[09:29:32] INFO: Starting socat TCP client for OTBR daemon...
-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.14.0
s6-rc: info: service socat-otbr-tcp successfully started
You are running the latest version of this add-on.
System: Home Assistant OS 16.2 (amd64 / generic-x86-64)
Home Assistant Core: 2025.10.4
Home Assistant Supervisor: 2025.10.0
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[09:29:34] INFO: Setup OTBR firewall...
[09:29:34] INFO: Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-b067e5ac-dirty
[NOTE]-AGENT---: Thread version: 1.3.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///tmp/ttyOTBR?uart-baudrate=460800&uart-init-deassert
[NOTE]-AGENT---: Radio URL: trel://enp1s0
tiocmbic: Inappropriate ioctl for device
[NOTE]-ILS-----: Infra link selected: enp1s0
51d.11:45:18.527 [W] P-SpinelDrive-: Wait for response timeout
51d.11:45:20.529 [W] P-SpinelDrive-: Wait for response timeout
51d.11:45:22.531 [W] P-SpinelDrive-: Wait for response timeout
51d.11:45:22.531 [C] Platform------: Init() at spinel_driver.cpp:83: Failure
51d.11:45:24.533 [W] P-SpinelDrive-: Wait for response timeout
[09:29:42] WARNING: otbr-agent exited with code 1 (by signal 0).
Chain OTBR_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
Chain OTBR_FORWARD_EGRESS (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
[09:29:42] INFO: OTBR firewall teardown completed.
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 banner: stopping
s6-rc: info: service socat-otbr-tcp: stopping
s6-rc: info: service mdns: stopping
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
Default: mDNSResponder (Engineering Build) (Oct 7 2025 12:31:51) stopping
s6-rc: info: service banner successfully stopped
2025/10/31 09:29:42 socat[79] W exiting on signal 15
s6-rc: info: service socat-otbr-tcp successfully stopped
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
[09:29:42] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
For the OpenThread Border Router Team, here is my log file after upgrading to the official 2.15.0 version:
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:36:47) starting
[09:35:40] INFO: Starting socat TCP client for OTBR daemon...
-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.15.0
You are running the latest version of this add-on.
s6-rc: info: service socat-otbr-tcp successfully started
System: Home Assistant OS 16.2 (amd64 / generic-x86-64)
Home Assistant Core: 2025.10.4
Home Assistant Supervisor: 2025.10.0
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[09:35:41] INFO: Setup OTBR firewall...
ip6tables: Chain already exists.
[09:35:41] WARNING: otbr-agent exited with code 1 (by signal 0).
Chain OTBR_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
Chain OTBR_FORWARD_EGRESS (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
[09:35:41] INFO: OTBR firewall teardown completed.
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 banner: stopping
s6-rc: info: service socat-otbr-tcp: stopping
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service mdns: stopping
2025/10/31 09:35:41 socat[77] W exiting on signal 15
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:36:47) stopping
s6-rc: info: service banner successfully stopped
s6-rc: info: service socat-otbr-tcp successfully stopped
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
[09:35:41] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
Nice to know that it's not just me then. Let me revert 1 or 2 more versions to see if that might be the problem. Alternatively there might just be a compatibility issue with mismatched versions of addons and core.
Update: I managed to get it to work through a totally different route. As I said before, I'm running HAOS as a VM in Proxmox. I just went into the Proxmox UI and added the USB port as a passthrough to the HAOS VM, and that made it an option in the OTBR addon config. After selecting it, it passes through that error on v2.13.0 and seems to start up successfully. It's late here so I'll test to see if I can actually commission devices (and if this is replicable on 2.14) tomorrow.
So all SLZB-MR devices? Does their USB mode actually connect the EFR32 chip to HA or is there some sort of proxying going on?
As I wrote, I connect to the device through ethernet as a network device. I worked great before and it also works great with zigbee2mqtt in the same device. Please see my config again:
device: /dev/ttyS3
baudrate: "460800"
flow_control: false
otbr_log_level: notice
firewall: true
nat64: false
network_device: 192.168.1.204:6638
The local "device" has to stay in the config but it is not used, when a "network_device" is present...
Could everyone else post their config as well?
I have my device also connected via ethernet, here is my config:
device: /dev/ttyS0
baudrate: "460800"
flow_control: false
otbr_log_level: info
firewall: false
nat64: true
network_device: 192.168.178.46:6638
It worked with this config before the update.
Looks like this is just affecting network-connected devices
Environment Details
- Hardware: SMLIGHT SLZB-07p7 (USB version)
- Host: Virtual Machine
- Device path:
/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_02f8c469e6d6ef119f8043878f302768-if00-port0 - Baud rate: 460800
- Flow control: disabled
- OTBR log level: info
- Firewall: disabled
- NAT64: enabled
The SLZB-07p7 is running the Thread firmware version. The adapter is properly detected in the VM and in the HAOS OpenThread Border Router addon. OTBR-Add-on Config to USB device is correct and worked with 2.14.
Message: dd-on version: 2.15.0 You are running the latest version of this add-on. System: Home Assistant OS 16.2 (amd64 / qemux86-64) Home Assistant Core: 2025.10.4 Home Assistant Supervisor: 2025.10.0
Please, share the above information when looking for help or support in, e.g., GitHub, forums or the Discord chat.
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[16:07:29] INFO: Setup OTBR firewall...
[16:07:29] INFO: Migrating OTBR settings if needed...
2025-10-31 16:07:36 Zuhause asyncio[225] DEBUG Using selector: EpollSelector
2025-10-31 16:07:36 Zuhause zigpy.serial[225] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_02f8c469e6d6ef119f8043878f302768-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2025-10-31 16:07:36 Zuhause zigpy.serial[225] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7f6dc14b69d0>, Serial<id=0x7f6dc12f8a90, open=True>(port='/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_02f8c469e6d6ef119f8043878f302768-if00-port0', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-10-31 16:07:36 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-31 16:07:36 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-31 16:07:37 Zuhause universal_silabs_flasher.spinel[225] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 1 of 4)
2025-10-31 16:07:37 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-31 16:07:37 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-31 16:07:38 Zuhause universal_silabs_flasher.spinel[225] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 2 of 4)
2025-10-31 16:07:38 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-31 16:07:38 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-31 16:07:39 Zuhause universal_silabs_flasher.spinel[225] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 3 of 4)
2025-10-31 16:07:40 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-31 16:07:40 Zuhause universal_silabs_flasher.spinel[225] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-31 16:07:41 Zuhause universal_silabs_flasher.spinel[225] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 4 of 4)
2025-10-31 16:07:41 Zuhause zigpy.serial[225] DEBUG Waiting for serial port to close
2025-10-31 16:07:41 Zuhause zigpy.serial[225] DEBUG Connection lost: None
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 213, in send_frame
return await asyncio.shield(future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/migrate_otbr_settings.py", line 189, in
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
Chain OTBR_FORWARD_EGRESS (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
[16:07:41] INFO: OTBR firewall teardown completed.
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 banner: stopping
s6-rc: info: service mdns: stopping
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:36:47) stopping
s6-rc: info: service banner successfully stopped
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
[16:07:41] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service mdns successfully stopped
s6-rc: info: service s6rc-oneshot-runner successfully stopped
Got mine working, even on upstream v2.15.0 (able to start the add-on as well as commission and use devices). Turns out the issue is that even though the serial port is passed through from the hypervisor, it seems to not work. I had to pass the USB port over as well through the Proxmox UI. I guess since everyone else here is connecting over LAN, that my issue is unrelated but just happens to have the same error output.
[deleted]
We use the flasher Python package to communicate with the device (to read the adapter network address) in order to automatically migrate OTBR datasets between adapters when you change the serial port, no firmware is being flashed and that config was removed a few releases back.
I think the issue is squarely with the virtual serial port that's created for TCP adapters. I'll see if I can reproduce it, it should be a simple fix.
I'm unfortunately not seeing anything out of the ordinary with a SLZB-06 over Ethernet, it starts up as expected:
[14:54:49] INFO: Migrating OTBR settings if needed...
2025-10-31 14:54:50 test-yellow asyncio[247] DEBUG Using selector: EpollSelector
2025-10-31 14:54:50 test-yellow zigpy.serial[247] DEBUG Opening a serial connection to '/tmp/ttyOTBR' (baudrate=460800, xonxoff=False, rtscts=False)
2025-10-31 14:54:50 test-yellow zigpy.serial[247] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7f81882090>, Serial<id=0x7f81890b20, open=True>(port='/tmp/ttyOTBR', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-10-31 14:54:50 test-yellow universal_silabs_flasher.spinel[247] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-10-31 14:54:50 test-yellow universal_silabs_flasher.spinel[247] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-31 14:54:50 test-yellow universal_silabs_flasher.spinel[247] DEBUG Decoded HDLC frame: HDLCLiteFrame(data=b'\x83\x06\x08\x00\x12K\x001\xd8\x01e')
2025-10-31 14:54:50 test-yellow universal_silabs_flasher.spinel[247] DEBUG Parsed frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_IS: 6>, data=b'\x08\x00\x12K\x001\xd8\x01e')
2025-10-31 14:54:50 test-yellow zigpy.serial[247] DEBUG Waiting for serial port to close
2025-10-31 14:54:50 test-yellow zigpy.serial[247] DEBUG Connection lost: None
Adapter settings file /data/thread/0_124b0031d80165.data is the most recently used, skipping
[14:54:50] INFO: Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-b067e5ac-dirty
[NOTE]-AGENT---: Thread version: 1.3.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///tmp/ttyOTBR?uart-baudrate=460800&uart-flow-control
[NOTE]-AGENT---: Radio URL: trel://end0
[NOTE]-ILS-----: Infra link selected: end0
41d.05:40:33.309 [C] P-SpinelDrive-: Software reset co-processor successfully
@tl-sl Any thoughts about this?
Maybe only an issue with newer SLZB firmware? Seems like everyone affected has SLZB-MRx or 07X. Would be good to get everyone to describe their entire stack as well; since they're connecting over LAN there might be issues on the networking side right?
Maybe only an issue with newer SLZB firmware? Seems like everyone affected has SLZB-MRx or 07X. Would be good to get everyone to describe their entire stack as well; since they're connecting over LAN there might be issues on the networking side right?
Using FW 3.0.8 & the SLZB-06 is connected via wired ethernet in my case.
@joergbattermann maybe you and @puddly should compare setups since they're the most comparable
For example, where is HAOS running, how are HAOS and the SLZB-06 connected (directly or through a router, etc)
So I am running the SLZB-MR3 over Ethernet (LAN).
The SLZB-MR3 is on the newest firmware 3.0.8.
I'm using the integrated EFR32MG24 chip for thread running firmware 20250212 (and the other integrated CC2674P10 chip for zigbee).
I have the same issue with my Sonoff zigbee dongle E flashed with the thread coordinator firmware. Which i have plugged in to my pc with Proxmox VE that is forwarded to my HA OS vm.
@Sarnog Were you able to run earlier versions of the OTBR addon or is this the first time you're using it?
@Sarnog Were you able to run earlier versions of the OTBR addon or is this the first time you're using it?
I am able to run it on the previous version, but with the new version not...
It broke for me also. I was not yet using it active because had some issues onboarding the device but planned to troubleshoot this tonight... OTBR was running okay a few weeks ago.
Using the SLZB-MR3.
Tried some things:
- Reverting the SLZB-MR3 to 3.0.6 (OS firmware), no luck
- Connecting the SLZB-MR3 via USB and using the /dev/serial/by-id address, no luck
- Reverting to the OTBR version 2.14.0 @Auroric offered, no luck
Some logging, not sure if relevant
----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.15.0
You are running the latest version of this add-on.
System: Home Assistant OS 16.2 (amd64 / qemux86-64)
Home Assistant Core: 2025.10.4
Home Assistant Supervisor: 2025.10.0
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[21:00:37] INFO: Setup OTBR firewall...
[21:00:37] INFO: Migrating OTBR settings if needed...
2025-11-01 21:00:37 homeassistant asyncio[226] DEBUG Using selector: EpollSelector
2025-11-01 21:00:37 homeassistant zigpy.serial[226] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-MR3_446940c0029aef11aced017c61ce3355-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2025-11-01 21:00:37 homeassistant zigpy.serial[226] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7f4b66b95850>, Serial<id=0x7f4b66ba4ac0, open=True>(port='/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-MR3_446940c0029aef11aced017c61ce3355-if00-port0', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-11-01 21:00:37 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-11-01 21:00:37 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-11-01 21:00:38 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 1 of 4)
2025-11-01 21:00:38 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-11-01 21:00:38 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-11-01 21:00:39 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 2 of 4)
2025-11-01 21:00:39 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-11-01 21:00:39 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-11-01 21:00:40 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 3 of 4)
2025-11-01 21:00:40 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2025-11-01 21:00:40 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-11-01 21:00:41 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 4 of 4)
2025-11-01 21:00:41 homeassistant zigpy.serial[226] DEBUG Waiting for serial port to close
2025-11-01 21:00:41 homeassistant zigpy.serial[226] DEBUG Connection lost: None
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 213, in send_frame
return await asyncio.shield(future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/migrate_otbr_settings.py", line 189, in <module>
asyncio.run(main())
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/local/bin/migrate_otbr_settings.py", line 126, in main
hwaddr = await get_adapter_hardware_addr(args.adapter, args.baudrate)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/bin/migrate_otbr_settings.py", line 84, in get_adapter_hardware_addr
rsp = await protocol.send_command(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 245, in send_command
return await self.send_frame(frame, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 212, in send_frame
async with asyncio_timeout(timeout):
File "/usr/lib/python3.11/asyncio/timeouts.py", line 98, in __aexit__
raise TimeoutError
TimeoutError
[21:00:41] WARNING: otbr-agent exited with code 1 (by signal 0).
If reverting the addon version to 2.14.0 doesn't fix things, the issue definitely isn't caused by the most recent addition. It almost sounds like the firmware on the device did not like the addon being restarted and is in an inconsistent state.
The serial protocol itself is super robust and should handle interruptions like this without any problems so I'm not too sure what could be causing this issue. Your logging shows that the serial port just isn't responding to any traffic at all. Does the SLZB-MR3 expose a direct serial connection to the chip running OT-RCP firmware? Or is it being proxied through the ESP32? I seem to remember seeing in the SLZB web interface information about the installed firmware, which shouldn't be accessible unless the ESP32 is talking to the device as well.
@fbloemhof are you getting the same error I did when reverting to v2.14?
The serial protocol itself is super robust and should handle interruptions like this without any problems so I'm not too sure what could be causing this issue. Your logging shows that the serial port just isn't responding to any traffic at all. Does the SLZB-MR3 expose a direct serial connection to the chip running OT-RCP firmware? Or is it being proxied through the ESP32? I seem to remember seeing in the SLZB web interface information about the installed firmware, which shouldn't be accessible unless the ESP32 is talking to the device as well.
Yeah, connecting via USB was not my brightest idea, I did not change anything on the MR3 for that so that wasn't working anyway.
@fbloemhof are you getting the same error I did when reverting to v2.14?
Not sure. It started working now with 2.15.0... After switching the MR3 from Ethernet to USB and back, the OTBR is starting and working via TCP.
[edit] Also adding my device worked out after changing the OT channel.
Main thing I think I did was restarting the SLZB MR3.