Hi everyone, I’ve been stuck for several days trying to commission my first Matter over Thread devices (IKEA KAJPLATS bulbs) and I’m running out of ideas. I’d really appreciate any help.
Setup
- HA OS 17.1 running in a UTM VM on Mac (aarch64 / qemuarm-64), bridged networking
-
- Home Assistant Core 2026.2.3
-
- Matter Server 8.2.2 (SDK 2025.7.0)
-
- OTBR add-on connected to SMLIGHT SLZB-MR5U (tested both TCP/Ethernet AND USB — same result)
-
- Android phone with HA Companion app for commissioning
-
- Network: Orange ISP box, IPv6 enabled on HA, phone only has fe80:: link-local IPv6
-
- Using CPL (powerline) adapters between devices
What works
- OTBR is Leader on Thread network ha-thread-fb6e (channel 15)

-
- Bulb joins Thread successfully (gets IPv6 address, registers on SRP, publishes Matter service _matter._tcp)

- Bulb joins Thread successfully (gets IPv6 address, registers on SRP, publishes Matter service _matter._tcp)
-
- At 1m distance: RSSI -64 dBm, LQI 255, bulb even becomes a Thread router

- At 1m distance: RSSI -64 dBm, LQI 255, bulb even becomes a Thread router
-
- Phone can see _matter._tcp and _meshcop._udp services via service browser

- Phone can see _matter._tcp and _meshcop._udp services via service browser
-
- Zigbee works fine on the same SLZB-MR5U

- Zigbee works fine on the same SLZB-MR5U
What fails
Via HA Companion app (Android): Gets stuck on “Checking network connectivity to ha-thread-fb6e” for ~5 minutes, bulb blinks once, then error: “Unable to find device, make sure your phone is connected to WiFi”
Via Matter Server WebSocket (commission_with_code):
Discovery timed out
Secure Pairing Failed
CHIP Error 0x00000003: Incorrect state
Times out after exactly 30 seconds every time.
Via Matter Server Web UI: “Commission new Thread device” button is grayed out (no Bluetooth available on VM). “Commission existing device” with pairing code → same Discovery timeout.
OTBR logs during commissioning
The bulb joins Thread fine, but I see this pattern:
Frame Duplicated (13+ consecutive, same seqnum)
Dropping (reassembly queue)
IPv6 UDP msg, len:576, chksum:xxxx, error:ReassemblyTimeout
This happens on a 576-byte fragmented packet (likely the PASE exchange). Same behavior at 1m with perfect signal.
Matter Server logs
No commissioning activity at all when using the phone — the command never reaches the Matter Server. When using WebSocket directly: “Discovery timed out” after 30s → the Matter Server cannot find the bulb via mDNS.
What I’ve tried
- TCP/Ethernet connection AND USB direct → same failure
-
- Multiple bulbs, multiple resets
-
- Phone on same subnet (192.168.1.x)
-
- IPv6 enabled on HA
-
- Verified Thread dataset, OTBR status, SRP registration — all OK
What I suspect but haven’t been able to verify
- mDNS bridge issue: OTBR may not be correctly relaying mDNS advertisements from Thread to the IP network (the VM bridge might block multicast)
-
- Android Thread credentials: Possibly corrupted/stale credentials on Android (haven’t tried the Google Play Services data clear workaround yet)
-
- VM networking limitation: The UTM VM bridged network might not properly forward IPv6 multicast needed for mDNS service discovery
Questions
- Has anyone successfully commissioned Matter over Thread devices with HA running in a UTM VM on Mac?
-
- Could the mDNS relay between OTBR and the IP network be broken in a VM setup? How can I verify this?
-
- Is there a way to commission a Thread device purely server-side without needing phone BLE or mDNS discovery?
Thanks for any help! Happy to provide additional logs.
- Is there a way to commission a Thread device purely server-side without needing phone BLE or mDNS discovery?