Trouble with OpenThread Border Router and Ikea Matter/Thread devices
Hi! I’ve been trying to get the new Ikea Matter/Thread stuff up and running for several hours, but I’m struggling… So I wonder if anyone has any advice, as the experience is pretty weird.
My goal is to have a Thread/Matter network that works through only Home Assistant. I saw someone trying a fix where they had to install Google Home on their phone, etc — but I really want to try and avoid that.
My setup:
- Home Assistant OS running on a Mac mini through UTM
- Network set to Bridged
- USB devices not shared, but given to UTM
- No bluetooth directly to the UTM VM
- SMLIGHT SLZB-07Mg24 flashed with OpenThreD Border Router firmware
- Also have a regular SMLIGHT SLZB-07 running Zigbee, about 1 meter away
- OpenThread Border Router add-on, Matter Server add-on (now on the js beta)
- I don’t have any other border routers in the house, like a new enough Apple TV or Dirigera Hub. I don’t have any other Thread/Matter networks at all — I want everything in HA.
- I do have some wi-fi Matter devices, that works fine.
- UniFi home network. Express 7 is my hub and the wi-fi point close to where I’m doing the setup.
- mDNS on
- IGMP snooping off
- Everything on same VLAN
- I have Tailscale set up, but I’ve mostly had i turned off when working on this.
- I have the unofficial MCP server add-on running, and I’ve tried to work with Raycast AI on the problem. (Some Claude 4.7/4.8 and some Gemini.)
- Mostly trying to add the devices with my iPhone 13 mini, running the lates stable iOS, and by using the flow from the Home Assistant companion app.
- I only have one set of Thread credentials saved — the correct one.
- The phone is very close to the devices, and the devices is close to the Thread stick.
First I worked on getting a Bilresa two-button remote up and running. I flashed the stick, got the Thread network up and tried to add — but it didn’t work. The handshake would begin (the phone would get connection through Bluetooth), HA saw that something was trying to happen, but it didn’t succeed.
Turns out I didn’t have ipv6 activated on my UniFi — so I created a static subnet. After a while, the LLM reported that the Bilresa had been added to the network (while the phone was stuck on “Configuring”), but not 100 %. Next I stopped the process on the phone, and added the remote’s Matter code manually from my MacBook (Settings -> Matter -> Options -> Add manually), and then we had connection!
OK, so the Bilresa remote now works flawlessly, which makes me think that:
- The stick is working
- The Thread/Matter network in general works
- The phone managed to get connection via Bluetooth and hand some stuff over to HA.
- Ipv6 works However, I can’t add any other devices..! I’ve tried to add a differen Bilresa remote (with the wheel) and a Kajplats Matter bulb. But the error I’m getting is the following:
Commission failed: discovery of node with discriminator 1 failed: No commissionable device was discovered
I get this whether I scan the matter code or add it via other methods on my phone.
- Any advice on adding Ikea stuff via Matter, purely using HA?
- And how weird is it that the one Bilresa remote is working beautifully, but I can’t add anything else?? Thanks!
Some logs Claude thought could be relevant below. Let me know if there’s other info that could be relevant!
When trying to add manually from HA:
PeerConnection @1:1a•unsecured ip://[fd53:1882:3080:1:aeaf:2a23:9bd9:19d3]:5540
Connecting addr #: 2 attempt #: 1 thread:15:connect
CaseClient @1:1a New session with @1:1a
address: udp://[fd53:1882:3080:1:aeaf:2a23:9bd9:19d3]:5540 fabric: <redacted> (#1)
ClientNode server-2-134b.@1:1a is online
Node @1:1a availability changed to true (state: Connected)
OTBR is healthy (forming mesh, talking to neighbours):
[I] Mle-----------: Send Advertisement (ff02::1)
[I] MeshForwarder-: Received IPv6 UDP msg … from:76d14d56ee21c40e … rss:-73.0 radio:15.4
[D] RadioSelector-: neighbor:[16f3b10d4f3886a2 rloc16:0xa00a radio-pref:{15.4:255} state:Valid]
[I] BorderRouting-: Received RA from fe80::1e0b:8bff:fe3e:3792 on infra netif 2
- RA Header - flags - M:0 O:0 S:0
- RA Header - default route - lifetime:1800
- PIO fd01::/64 (valid:86400, preferred:86400, flags - L:1 A:1 P:0)
Thread integration diagnostics: ZERO routers registered:
"networks": {
"151ba8a2ab6a1173": {
"name": "ha-thread-9941",
"routers": {},
"prefixes": ["fd29:3ba6:be25:666b::"],
"unexpected_routers": []
}
}
OTBR add-on config, with the question Claude wanted me to ask (only AI generated non-log text in the post ;) ):
OTBR add-on 3.0.1, host_network: true, privileged: [IPC_LOCK, NET_ADMIN],
devices: [/dev/net/tun, /dev/ttyUSB0]. RCP radio = SLZB-07Mg24 @ 460800, flow control on.
backbone_interface is NOT set (falls back to primary interface) — running inside a
UTM VM (bridged), so I'm unsure if the auto-selected interface is the one that
reaches my UniFi LAN with working IPv6 multicast / _meshcop mDNS.
firewall: false, nat64: false. host_dbus: false.
The OTBR forms a healthy Thread mesh and existing devices work over IPv6, but HA's
Thread integration shows "routers": {} (no border router registered), and new-device
commissioning fails. Could the unset backbone_interface in a VM be why the border
router isn't being advertised/registered, even though operational Thread traffic works?