Matter over Thread - Cannot commission IKEA device - IPv6 routing issue
Setup:
- Home Assistant OS 17.3, Core 2026.5.4 (running on generic x86 hardware)
- ZBT-2 USB dongle used as Thread border router via OpenThread Border Router add-on (latest version)
- Google TV Streamer (also a Thread border router)
- IKEA Motion Sensor - Matter over Thread (factory reset)
- IPv6 set to Automatic in HA network settings
- Network adapter set to Autoconfigure
Background / What worked before:
Originally, I only had the Google TV Streamer as a Thread border router. The IKEA Motion Sensor (Matter over Thread) was working perfectly .
After purchasing and installing the ZBT-2 USB dongle and setting up the OpenThread Border Router add-on, everything broke. and I can no longer commission any Matter over Thread devices.
What I did to try to fix it:
- HA OTBR was originally on its own network (ha-thread-2738, channel 15)
- Google TV Streamer was on Google-24CD network (channel 18, PAN 0x24CD)
- Successfully joined HA OTBR to the Google-24CD network using the correct Network Key extracted from the Thread TLV stored in
/config/.storage/thread.datasets - Both border routers (Google TV Streamer + HA OTBR homeassistant-otbr.local) are now visible on the same Google-24CD network

- OTBR Status page shows: RCP State = router, WPAN service = associated, Network Name = Google-24CD, Channel = 18

- Thread credentials sent from Android phone to Home Assistant
- Tried setting Backbone Network Interface to
enp1s0, then tried leaving it blank - no change
The problem:
When trying to commission the IKEA Matter device via HA (Settings > Devices > Matter > Add device), it fails with "Cannot reach device".
Same error when trying via Google Home app.
Matter Server logs show:
The device IS discovered via mDNS:
Discovered commissionable Matter node: AsyncServiceInfo(..., name='57D0FDA4CB42BE17._matterc._udp.local.', addresses=[b'\xc0\xa8\x00['], port=5540, ..., 'DN': b'Smart Multicolor Bulb', interface_index=None)
But then disappears before commissioning completes:
Commissionable Matter node disappeared: AsyncServiceInfo(..., addresses=[], port=None, ...)
Note: the address \xc0\xa8\x00 is IPv4 (192.168.x.x) with interface_index=None - no IPv6 Thread address is discovered.
OTBR logs show the IKEA device IS connected to the Thread network:
DataPollHandlr: Rx data poll, src:0x3801, rss:-75 (every 500ms)
RadioSelector: UpdateOnRx 15.4 - neighbor:[06aabc2646583bb8 rloc16:0x3801]
The IKEA motion sensor is communicating with the OTBR on Thread, but HA cannot reach it via IPv6.
IPv6 routing issue:
Running ip -6 route show in the SSH terminal shows:
fd0c:ac1e:2100::/48 dev eth0 metric 256
fe80::/64 dev eth0 metric 256
default via fd0c:ac1e:2100::1 dev eth0 metric 1024
There is NO route to the Thread mesh-local prefix (fdc5:8cf6:88e3:4e76::/64).
HA's IPv6 address on enp1s0 is fd13:4707:e1a3:b7b4:ba85:84ff:feb6:abf3/64 which is a different prefix than the Thread network.
Reference:
I found this article describing a similar issue: Home Assistant Was Unable to Add IKEA Matter Devices – Majornetwork
The fix described there (changing IPv6 from Static to Automatic) does not apply here as IPv6 is already set to Automatic.
Question:
How do I get HA to properly route IPv6 traffic to the Thread mesh-local network so Matter commissioning can succeed? Is there a specific configuration needed for the OTBR add-on to properly advertise its routes to HA?
Thank you!