Cannot download thread credentials to phone

First of all yes, I have read through a number of topics, tried a lot of stuff, but so far things don’t work.

I have a Ubiquity network, with 1 VLAN, Wifi & Ethernet are in the same VLAN.

I have a home assistant server on a Raspberry PI 5, booting from NVMe, freshly installed with a Home Assistant Connect ZBT-2.

I have installed a thread border router (#49F6), and I can see a ha-thread-d2e9 thread network, which is the preferred network, it has an icon that indicates that the network is used for android & IOS credentials.

I have an IPhone 17 pro with IOS 26, with the HA companion app.

When I go to Settings → Thread in the companion app, I see the thread network but I cannot download the credentials to my phone, I get the message “Failed to store credentials in keychain, error: Thread netwok credentials does not match with any of the active thread networks around.”

Home assistant server has IPV6 enable and I can ping it from my desktop machien over IPV6

When I look on the home assistant server in the Zeroconf browser I can see an entry for Home Assistant OpenThread Border Router #49F6, IP adresses inlcude the IPV4 addresses of the ethernet & wireless interfaces and the IPV6 address of the HA server.

I’m at a loss of what else I can check or do.

P.S. reason I have this freshly installed HA server is that I had trouble with the previous one with matter. I have an aqara Hub M3 and a number of aqara matter over wifi and matter over thread devices. The aqara matter devices were succesfully shared with the previous ha, but often disconnected, so I wanted to try a new HA and use matter without the aqara hub.
The hub is currently powered down.

The likely cause for this error is that the iPhone is not getting this same advertisement even though the HA Server is. You may need to download an iOS App that can also look for these advertisements to see if the iPhone is actually receiving them.

I downloaded such an app, called discovery.

And although it does see an _meshcop._udp. entry it does not see what’s in it.

Strange because it also sees _home-assistant._tcp and it does see the home assistant server.

I played around with setting on my Ubiquity network and suddenly I saw a lot more mDNS entries in the Discover app, one of which was the thread border router.

No clue what exactly I changed that made this happen.

But, I can now download thread credentials to Home Assistant.

Thanks for the help!!

Great! Glad it works

Oh and I could add an Aqara Door and Widnows Sensor P2, directly to HA.

Any idea on what you think solved this issue cause I’m in almost the exact same situation hardware & network wise:

Ubiquity network with multiple vlans, w/ both my iphone 17 pro and HA server on the same default vlan.

IPv6 is setup and both my phone and HA sever seem to have the same first couple sets of values so I assume they are both on the same IPv6 LAN. (I don’t know alot about IPv6).

Everything is as up-to-date as possible. My HA sever is running on a VM on my truenas machine but it has both USB and NICs passed thru so the ZBT-2 was able to update firmware and seems to be communicating, (although the LED is off, and the firmware state on the device page says it’s off but im not clear if that’s just the firmware update checker turning off or if the radio itself isn’t on). Not sure if that’s a red herring but I figured I mention it.

I encountered the same odd behavior when using the discovery app in that I would show meshcop but not what’s in it. I did some searching and found that I had some mDNS filtering to WAP clients in Unifi so after disabling that and messing around for a long time restarting everything it suddenly magically worked and more stuff popped up in Discovery. So I quickly got the thread credentials transferred and got my lights setup.

So solved right? No, not at all, later I tried to setup an IKEA CO2 sensor and I get the same failed credentials no thread network error… except I’ve already got one running just fine with the lights and it worked previously on the phone. In the discovery app it seems to switch from seeing meshcop to not randomly but even when all the mDNS entries that I expect to see are there it still does not connect and I get the same error even after restarting every device in the chain. I’m at a complete loss as to what could possibly be the issue here since I did get it working temporarily but now my phone seems to be blind to the thread network again.

I’m not sure if the issue is my Network, phone, HA server, HA compainion app, ZBT-2, or all of the above. I’d love for any insight on what could be going on here. I’ve found one other thread related to this issue but it seems like it was resolved a year ago.

I’m sorry to hear that although it worked for a while, it stopped working again. I would suspect a mDNS issue. I would start by matching what you see in HA → Settings → System → Network → Network Discovery and the discover app on your IPhone. You should see _meshcop._udp.local. with Home Assistant OpenThread Border Router #49F6 under it. (of course the number will differ). If you see that on both place than maybe it’s not an mDNS issue after all. If you don’t see it on the IPhone it really most likely is an mDNS issue.

As I said I don’t really know what I changed to make it work. But so far it keeps working.

There’s 2 places I can see mDNS settings:
in Networks

and in the Default VLAN where most of my stuff is.

TL:DR It was MLO, turn off MLO if you are having the same issues I was but already have mDNS setup properly. (until they fix MLO I guess)

Since I’ve had both mDNS setting turned on, and the issue seemed inconsistent I decided to try something I should have thought of before, I tried pinging all of my phone’s ip addresses from my desktop… and none of them could reach my phone. So firewall issue right? nope. I have no rules that could block their intra-lan traffic. Well in that process I needed to use the device page on unifi to find the ip addresses to ping and I noticed that the local link ipv6 address was flicking in and out of existence, so was one of the two ipv6 addresses that where assigned to the phone. Idk why the phone having two ipv6 addresses didn’t raise any red flags to me before but as I said I don’t know anything about v6 but the local link appearing and then disappearing was obviously not good and if my computer can’t ping my phone surely my phone couldn’t ping the border router either. So… why did it have a bunch of extra ip addresses and inconsistent ones at that? I can only guess it was something funky with how MLO is implemented since once I turned it off everything worked as it should have from the start. My phone went down to having one ipv6 address and I could ping it from my desktop, also I could finally click into _meshcop._udp and see the border router and it’s details rather than just an infinite loading wheel.