Skip to content

OpenThread Border Router 3.1.0: otbr-agent crash-loops with "RCP device disconnected (EOF)" — works fine on 3.0.2 #4765

Description

@spants

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

  1. On Supervisor 2026.07.5 / Core 2026.8.0, update OpenThread Border Router to 3.1.0.
  2. Wait ~10 minutes. The add-on enters error state (crash-loop).
  3. Restore the add-on to 3.0.2 from a backup (only the add-on; keep the same Core/Supervisor/radio).
  4. 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), Failureotbr-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

  1. On Supervisor 2026.07.5 / Core 2026.8.0, update OpenThread Border Router to 3.1.0.
  2. Wait ~10 minutes. The add-on enters error state (crash-loop).
  3. Restore the add-on to 3.0.2 from a backup (only the add-on; keep the same Core/Supervisor/radio).
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions