UPDATE: When the companion app gives the ‘Unknown command’ error I see this in the HA log:
2026-04-01 13:46:31.752 INFO (MainThread) [homeassistant.components.websocket_api.http.connection] [281471731087648] Received unknown command: thread/add_dataset_tlv
So it seems the companion pp is sending a command that HA does not understand. I;m running HA 2026.3.3.
I have a fully functional Matter/Thread network with several devices. These devices are all exposed to Home Assistant via Matter (HA Matter Server) and are working fine, and very reliably, with both Homekit and Home Assistant. I have 5 Thread border routers in my Thread network; Apple TV 4K (ethernet connected), Homepod2 (WiFi) and 3x HomePod mini (WiFi).
In the companion app (most recent version running on iOS 26.4), ifI go to one of the matter devices and tap on 'View Thread Network. It tells me that I don’t have a preferred network yet and offers me the option to 'Send credentials to Home Assistant then I get the iOS pronto to allow the app to find devices on my local network (which I allow of course) and then moments later the app throws an error ‘Unknown command’ with options of Done or Retry, retry also fails (every time).
My iPhone can ping all of my TBRs using both their home network and Thread network IPv6 addresses.
Any idea what the issue is here? How can I diagnose this and resolve it?
Not sure, but it seems you don’t have a “OTBR” (which is fine since you have other TBRs), so I don’t think there is any real need to send the credentials to HA, as HA would want to take those credentials and send them to the OTBR (which may be the cause of the error as the HA Thread Integration also uses websockets to talk to the OTBR).
Also, in the image showing the Thread Integration, it is not showing any of your Apple Thread Border Routers. HA snoops on mDNS advertisements from TBRs and lists them here, so I think this is also a problem.
Maybe you’re right, just seems poor to present buttons for actions only to have the actions fail. Either the action should succeed or the button should not be presented in the first place. And no, I don’t have an OTBR as there is no requirement for one.
All my TBRs are visible in mDNS (using various mDNS / Bonjour browsers) so no idea why HA doesn’t list them. I have lots of stuff that uses mDNS and it is all working perfectly fine. HA itself advertises to, and is visible, in mDNS as is the HA matter server. So I don;lt think there is any mDNS issue.
As a check, goto HA’s UI->Settings->System->Network and scroll down to the bottom and click on “zeroconf browser”. Look to see if there are any _meshcop._udp.local or even _matter._tcp.local. If not then HA is not seeing them but it should which likely means there is something in the network blocking HA from getting them.
Well, the strange thing (maybe) is that there is no sign of a Thread integration in my HA instance. It is not listed anywhere under integrations. Should I expect to see it somewhere? Under what circumstances does it appear?
I’ll speculate here a little …
The primary purpose of the Thread Integration is to manage Thread credentials to and from the OTBR as the Thread Integration talks to the OTBR over a websocket API (to pull from or push credentials to it); And as far as I know, this API only works for the OTBR (not Apple TBR, not Google TBR, etc). So without a OTBR for the Thread Integration to talk to, there is not much the Thread Integration can do.
I did see with another user, they too did not see the Thread Integration in the Settings->Integration view even though they had an OTBR, but it turns out that they had not setup the OTBR properly so was not auto-discoverable by HA, so I think the Thread Integration did not even see the OTBR so stayed hidden from view.
So my speculation is that without an OTBR, HA must not be making the Thread Integration visible in the UI in certain views, and looks like in your findings, when it is view-able, it doesn’t even bother looking for other TBRs (advertised via mDNS) on the network.
I suspect you may be right. Luckily the (apparent) absence of the Thread integration, and the inability to send my Thread network credentials to HA, do not seem to be causing any actual issues. So maybe I just won’t worry about this any more