Describe the issue you are experiencing
Title:
OpenThread Border Router 3.1.0: otbr-agent crash-loops with "RCP device disconnected (EOF)" — works fine on 3.0.2
Describe the bug
After updating the OpenThread Border Router add-on from 3.0.2 to 3.1.0, the add-on crash-loops. When the TCP link to the Thread radio (SLZB-MR2 via socat TCP client) is up, the add-on connects cleanly, becomes Thread leader, then ~9 minutes later the RCP connection drops mid-session with RCP device disconnected (EOF) and otbr-agent exits with code 1. The add-on restarts and repeats. Sometimes the radio is unreachable entirely and socat logs No route to host, then the migration script fails with TimeoutError and otbr-agent exits.
Restoring the add-on to 3.0.2 from a backup (same Core version, same Supervisor, same radio, same config) makes the crash-loop disappear completely and all Thread/Matter devices come back online.
The radio is confirmed healthy: fixed IP, PoE-powered, reachable at all times during the failure.
Environment
- Add-on: OpenThread Border Router 3.1.0 (broken) / 3.0.2 (working)
- Home Assistant OS 18.2 (amd64 / qemux86-64 VM)
- Home Assistant Core: 2026.8.0
- Home Assistant Supervisor: 2026.07.5
- Matter Server add-on: 9.1.1
- Thread radio: SLZB-MR2, TCP link via socat to 192.168.1.8:6638 (fixed IP, PoE)
- Radio URL:
spinel+hdlc+uart:///tmp/ttyOTBR?uart-baudrate=460800&uart-init-deassert
- Radio EUI64:
38:5b:44:ff:fe:4a:5a:24
- otbr-agent build on 3.1.0:
0.3.0-ec16e396
- Devices affected: 8 window sensors + 1 Aqara U200 lock (all Matter over Thread)
Steps to reproduce
- On Supervisor 2026.07.5 / Core 2026.8.0, update OpenThread Border Router to 3.1.0.
- Wait ~10 minutes. The add-on enters error state (crash-loop).
- Restore the add-on to 3.0.2 from a backup (only the add-on; keep the same Core/Supervisor/radio).
- The add-on is stable and all devices return.
Expected behavior
The add-on should maintain the RCP connection over the socat TCP link indefinitely, as 3.0.2 does.
Actual behavior
- Clean start: socat connects to the radio, RCP negotiates, agent becomes leader.
- After ~9 minutes:
RCP device disconnected (EOF), Failure → otbr-agent exited with code 1 → restart loop.
- Sometimes:
No route to host to 192.168.1.8:6638 → migration script TimeoutError → exit.
- When the link stays up, NoAck errors to child devices precede the EOF.
Logs
Healthy start on 3.1.0 (then the crash ~9 min later):
What type of installation are you running?
Home Assistant OS
Which operating system are you running on?
Home Assistant Operating System
Which app are you reporting an issue with?
Matter Server
What is the version of the app?
3.1
Steps to reproduce the issue
- On Supervisor 2026.07.5 / Core 2026.8.0, update OpenThread Border Router to 3.1.0.
- Wait ~10 minutes. The add-on enters error state (crash-loop).
- Restore the add-on to 3.0.2 from a backup (only the add-on; keep the same Core/Supervisor/radio).
- The add-on is stable and all devices return.
System Health information
all ok after downgrade
Anything in the Supervisor logs that might be useful for us?
Anything in the app logs that might be useful for us?
[22:33:40] INFO: Enabled socat-otbr-tcp.
[22:33:40] INFO: Starting socat TCP client for OTBR daemon...
[22:33:41] INFO: Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-ec16e396
[NOTE]-AGENT---: Thread version: 1.4.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///tmp/ttyOTBR?uart-baudrate=460800&uart-init-deassert
00:00:08.455 [N] Mle-----------: RLOC16 4400 -> fffe
00:00:08.534 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
00:00:15.034 [N] RouterTable---: Allocate router id 17
00:00:15.037 [N] Mle-----------: Role detached -> leader
00:00:15.038 [N] Mle-----------: Partition ID 0x5fa4852
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!
00:01:11.178 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:205, chksum:bdfe, ecn:no, to:ca493d45842d00a3, sec:yes, error:NoAck, prio:net, radio:all
00:06:57.533 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:408, chksum:2218, ecn:no, to:0x4401, sec:yes, error:NoAck, prio:low, radio:all
00:07:50.822 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:646, chksum:3f76, ecn:no, to:0x4402, sec:yes, error:NoAck, prio:low, radio:all
00:09:37.008 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:196, chksum:4ec2, ecn:no, to:36103ef7c090b473, sec:yes, error:NoAck, prio:net, radio:all
00:09:37.128 [C] Platform------: exit(1): Read line 207, RCP device disconnected (EOF), Failure
[22:43:18] WARNING: otbr-agent exited with code 1 (by signal 0).
Additional information
Installation method = Home Assistant OS
Core = 2026.8.0
Supervisor = 2026.07.5
Operating System = 18.2
Frontend = 20260729.5
Running on Proxmox
Describe the issue you are experiencing
Title:
OpenThread Border Router 3.1.0: otbr-agent crash-loops with "RCP device disconnected (EOF)" — works fine on 3.0.2
Describe the bug
After updating the OpenThread Border Router add-on from 3.0.2 to 3.1.0, the add-on crash-loops. When the TCP link to the Thread radio (SLZB-MR2 via socat TCP client) is up, the add-on connects cleanly, becomes Thread leader, then ~9 minutes later the RCP connection drops mid-session with
RCP device disconnected (EOF)and otbr-agent exits with code 1. The add-on restarts and repeats. Sometimes the radio is unreachable entirely and socat logsNo route to host, then the migration script fails withTimeoutErrorand otbr-agent exits.Restoring the add-on to 3.0.2 from a backup (same Core version, same Supervisor, same radio, same config) makes the crash-loop disappear completely and all Thread/Matter devices come back online.
The radio is confirmed healthy: fixed IP, PoE-powered, reachable at all times during the failure.
Environment
spinel+hdlc+uart:///tmp/ttyOTBR?uart-baudrate=460800&uart-init-deassert38:5b:44:ff:fe:4a:5a:240.3.0-ec16e396Steps to reproduce
Expected behavior
The add-on should maintain the RCP connection over the socat TCP link indefinitely, as 3.0.2 does.
Actual behavior
RCP device disconnected (EOF), Failure→otbr-agent exited with code 1→ restart loop.No route to hostto192.168.1.8:6638→ migration scriptTimeoutError→ exit.Logs
Healthy start on 3.1.0 (then the crash ~9 min later):
What type of installation are you running?
Home Assistant OS
Which operating system are you running on?
Home Assistant Operating System
Which app are you reporting an issue with?
Matter Server
What is the version of the app?
3.1
Steps to reproduce the issue
System Health information
all ok after downgrade
Anything in the Supervisor logs that might be useful for us?
Anything in the app logs that might be useful for us?
Additional information
Installation method = Home Assistant OS
Core = 2026.8.0
Supervisor = 2026.07.5
Operating System = 18.2
Frontend = 20260729.5
Running on Proxmox