Summary
Matter‑over‑Thread commissioning does not progress beyond discovery when using Home Assistant as the first Matter commissioner, even though:
- Thread attach is successful
- ULA (
fdxx::/64) routing is correct end‑to‑end - OTBR advertises the Thread prefix correctly
- Matter Server binds IPv6 and mDNS correctly
_matter._tcpservices are advertised and visible
This issue report documents a fully verified IPv6/Thread/Matter setup where commissioning still does not proceed, to help clarify whether this is an expected device limitation, a documentation gap, or a controller limitation.
Environment
Home Assistant
- Home Assistant OS: 17.2 (amd64 / qemux86‑64)
- Home Assistant Core: 2026.4.3
- Home Assistant Supervisor: 2026.04.0
Matter / Thread
- Matter Server add‑on: 8.4.0
- JavaScript Matter Server (beta)
- OpenThread Border Router add‑on: enabled
- Thread radio: Home Assistant Connect ZBT‑2
- Primary network interface:
enp0s3 - Thread interface:
wpan0
Device
- Matter‑over‑Thread device (thermostat class)
- No Wi‑Fi
- Thread‑only
- Commissioned attempts via:
- Home Assistant (manual Matter code)
- Android phone
- iPhone (no Apple Thread Border Router present)
What works (verified)
1. Thread attach and operation 
From OTBR logs:
- Device sends Discovery Request
- Parent Request / Parent Response
- Child ID assigned
- Device becomes Thread child
- Stable RSSI and polling
- IPv6 addresses assigned
- Child supervision active
2. Thread ULA prefix is advertised 
OTBR repeatedly advertises a ULA prefix, e.g.:
fdc7:8758:d54e:1::/64
- Prefix is inside
fc00::/7 - Advertised via Router Advertisements
- Seen on both
wpan0and infrastructure interface
3. HA host IPv6 routing is correct 
ip -6 route on the HA host shows:
- Thread ULA routed via
wpan0 - Same ULA reachable via infrastructure (
enp0s3) through OTBR - Default IPv6 route present
- No missing or black‑holed
fc00::/7routing
4. Matter Server networking is correct 
From Matter Server startup logs:
- Binds IPv4 and IPv6 mDNS sockets
- Multicast bound on correct interface (
enp0s3) - Thread dataset successfully injected into Matter Server
- Controller starts successfully
- Fabric loads correctly
_matter._tcpoperational service is advertised
5. _matter._tcp advertised by device 
On the Thread side, the device:
- Registers via SRP
- Advertises
_matter._tcp.default.service.arpa
This confirms the device is commissionable and reachable on Thread.
What does NOT work 
Matter commissioning does not progress
When starting commissioning via Add device → Add using Matter code:
Matter Server logs show:
Initiating discovery of node with discriminator XX
but never show:
commission_with_codeOpening PASE sessionCASE exchangeOperational credentials installed
The Home Assistant UI remains stuck at:
“Checking Thread connection”
even though Thread attach is already complete.
Expected behavior
After successful Thread attach and discovery:
- Matter Server should initiate a PASE session
- Proceed with commissioning
- Or clearly fail with a descriptive error if the device rejects HA as first commissioner
Actual behavior
- Discovery starts
- Device is visible and reachable on Thread
- Commissioning does not start
- No error is surfaced
- Process stalls indefinitely
Additional notes / hypothesis
All networking layers have been verified as working:
- Thread
- IPv6 ULA routing
- OTBR border routing
- mDNS (IPv4 + IPv6)
- Matter Server binding and controller startup
This suggests the remaining cause is not networking, but one of:
- A device‑side restriction (device does not allow Home Assistant to be the first Matter commissioner)
- A Matter Server / controller limitation in Thread‑only first‑commissioner scenarios
- A documentation gap where certain devices require an external ecosystem (e.g. Apple Thread Border Router) for initial commissioning
If this behavior is expected, clarification in documentation would be very helpful, as the current UX suggests the setup should work.
Logs
Relevant logs available on request:
- OTBR logs showing Thread attach + RA
ip -6 routeoutput from HA host- Matter Server startup logs (IPv6/mDNS binding, controller start)
- Matter commissioning attempt logs
Question to maintainers
- Is Home Assistant expected to be able to commission Thread‑only Matter devices as the first controller?
- If not, should this be documented more explicitly (and surfaced in the UI)?
- If yes, is there a known limitation or missing step in the Matter Server / controller flow?