Skip to content

Home Assistant not finding Border Router #3429

Description

@deanqx

Describe the bug

Home Assistant is not discovering the Border Router. Settings -> Thread:

Image

While it can communicate to the REST API. Settings -> Thread -> (i):

Image

From my understanding Home Assistant is finding the Border Router with mDNS. The discovery process worked for me before around August 2025 when I first set it up. Maybe it is related to the switch to OTBR's own mDNS service.

An avahi-browse _meshcop._udp on the same host does not find it (I don't know if that is even possible or expected for mDNS). On a different machine avahi-browse _meshcop._udp does find the OTBR broadcast.

In Home Assistant OS: it seems to transfer the information by a custom protocol and not mDNS, because it says in the logs of the OTBR Addon (which is a modified version of OTBR): Successfully sent discovery information to Home Assistant. Home Assistant OS does find the Border Router. Zeroconf (Home Assistant's mDNS and general discovery service) shows it under _meshcop._udp.

To Reproduce

I couldn't get it to compile with the steps shown on Docker Install, so I can't do a git bisect.

  1. This is the docker-compose.yaml which produces the bug:
services:
  # OpenThread Border Router
  otbr: # REST API at port 8081
    # template: https://github.com/orgs/openthread/discussions/10311
    # ref: https://openthread.io/guides/border-router/build-docker
    image: openthread/border-router:sha-c7164ef
    restart: unless-stopped
    # Required for IPv6 routing and mDNS
    network_mode: host 
    privileged: true
    devices:
      - /dev/net/tun
      - /dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07Mg24_2c4265b523adef11afe8904ba8793231-if00-port0:/dev/ttyUSB0
    environment:
      # help: sudo docker compose exec otbr otbr-agent
      - OT_RCP_DEVICE=spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=921600&uart-flow-control
      - OT_INFRA_IF=enp1s0
      - OT_THREAD_IF=wpan0
      - OT_LOG_LEVEL=7
    cap_add:
      - NET_ADMIN
    volumes:
      - ./otbr-data:/data
    healthcheck:
      test: "ot-ctl state | grep leader"
  home-assistant: # Web at port 8123
    image: ghcr.io/home-assistant/home-assistant:stable
    restart: unless-stopped
    network_mode: host
    privileged: true
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - ./config:/config
      - /run/dbus:/run/dbus
    environment:
      - TZ=Europe/Berlin
    healthcheck:
      test: "curl --fail http://localhost:8123/"
  1. The RCP device and network interface have to be adjusted.
sudo docker compose up -d
  1. Open http://localhost:8123/ and complete the Home Assistant setup.

  2. Add the OTBR Integration and enter http://localhost:8081/ as REST API URL.

  3. Restart:

sudo docker compose down home-assistant
sudo docker compose up -d
  1. Go to Settings -> Thread and no Border Router should show up.

Expected behavior Home Assistant should find the border router as it did a year ago.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions