BETA — Open to testers. Tell us what to fix on @vomehome or via a tester code.

Adding a Matter-over-Thread device

The pairing steps, and the four failures that each look like a broken border router but are not — including the Android one that is fixed on the phone.

Updated 26 August 2026 matterthreadtroubleshooting


Four steps. The phone stays on the house Wi-Fi. Android needs a credentials sync once. Then you scan the code.

If you already have ESPHome Bluetooth proxies, skip the phone: commission Matter with a Bluetooth proxy. If the Thread panel is empty, start at Thread and Matter with a hosted Home Assistant. The picture of the radios is how Thread and Matter actually work.

Bluetooth LE pairing only Dataset Thread credentials Thread mesh day-to-day traffic The phone (or a BLE proxy) is required for the first hop, then never again.
Failing at the QR scan never reached Thread. Hanging on "checking connectivity" already joined it.

Pairing

  1. Put the phone on the same home Wi-Fi as the border router. Not guest Wi-Fi, not mobile data.
  2. Android only, once per phone: companion app → Settings → Companion app → Troubleshooting → Sync Thread credentials. Expect a confirmation that Home Assistant's Thread credentials were added to the phone.
  3. Put the device into pairing mode near the border router, or near an ESPHome Bluetooth proxy.
  4. Add it from the companion app and scan the code.

Expect a firmware update to start on its own shortly after pairing. Ours went to Matter 1.2.0 unprompted.

A device that pairs successfully becomes a Thread router itself, so the next one can mesh through it rather than needing line of sight to the dongle.

Alternative: skip the phone's Thread stack

Put the device next to an ESPHome Bluetooth proxy and add it from the Home Assistant web interface. That path is written up as commission Matter with a Bluetooth proxy. It needs ble_proxy on the Matter Server add-on and Home Assistant 2026.06 or later, and it never involves Google Play Services.

When it goes wrong

The same four words — "needs a border router" — cover four different faults.

Fails on the QR scan never reached Bluetooth need a proxy, or iOS "Requires a border router" the phone lacks the dataset Sync Thread credentials "Checking connectivity…" joined the mesh; IPv6 is not forwarded host sysctls on the border router Thread panel is empty not announcing, or multicast restart the container; then L2
Read the screen you are actually on. The words are reused; the fix is not.

"Your device requires a Thread border router"

Home Assistant has one, and this message is not about Home Assistant. On Android, Matter-over-Thread commissioning goes through Google's Thread stack, which checks whether the phone holds credentials for a border router it recognises. Home Assistant's does not count until the phone has the same dataset — and the companion app stopped syncing that automatically.

So: Sync Thread credentials (step 2 above), then pair again. If it still refuses, the phone is probably holding an empty Google Thread network; clear Google Play Services storage and cache, sync again, retry.

Google Home Mini and Nest speakers are not Thread border routers, so they cannot satisfy that check either.

Hangs on "checking connectivity to Thread network"

The device has already joined. This is a routing failure, not a radio one, and the evidence is on the border router: a new neighbour appears in the router table while the phone sits on that screen, and the dataplane counters stay at zero.

The cause is almost always IPv6 forwarding being off on the border-router host. See the sysctls in build a Thread border router — with network_mode: host, a container cannot set them for you.

Once forwarding is on, ot-ctl br counters shows hundreds of packets in both directions within seconds of a successful pairing. That is the proof.

A device that timed out on this screen may need a factory reset before it will advertise for pairing again.

Fails instantly on the QR scan

It never reached Bluetooth, so nothing about Thread is involved. A hosted Home Assistant has no Bluetooth hardware of its own, so the Bluetooth hop has to come from somewhere: the companion app's phone radio, which is what the web interface will steer you to, or the Matter Server add-on's ble_proxy option using your ESPHome proxies.

Thread panel says there is no border router

Usually the border router needs to re-announce itself, especially just after a Home Assistant restart or update. Restart the border-router container.

Two things worth knowing while testing

Rapid back-to-back restarts each send an mDNS goodbye for the old service instance. Once we had multicast working, Home Assistant caught a withdrawal from one of our own test restarts moments after discovering the router — a fix that looked like a failure. Restart once and let it settle.

A short packet capture is weak evidence here. Services do not rebroadcast continuously once cached, so a 60-second window can land between two announcements and look exactly like a device advertising nothing.

If it is genuinely absent and restarting does not bring it back, the problem is usually that IPv6 multicast is not reaching Home Assistant — see HomeLink L2, and tell support. Include that IPv4 discovery works, if it does.

Rather not do this alone?
The Vome assistant will walk you through this guide a step at a time, and can do some of it for you.
Sign in for AI help

Something wrong or missing here? Tell us — these pages are written from real work, so corrections are welcome.