I have a multi-TBR setup with (1) Nest Hub Max, (3) Nest Hub v2, and a SkyConnect OTBR (see photo below). The HA Thread integration is currently set to use HA OTBR for Android + IOS credentials.
I have been able to add/control Matter-over-Thread (MoT) devices using the HA Companion App (Android) without issue. The reason I’m looking into this in the first place my new Google Streamer keeps wanting to create its own Thread network instead of joining my existing one. I initially created a post on reddit r/googlehome, but I have not received any answers so I’m reaching out the HA community. While investigating the Streamer issue, I noticed my OTBR add-on is showing several errors in the logs (example below). That led me to question whether my SkyConnect/OTBR is functioning properly, prompting my curiosity on whether I should set one of the other TBRs as the credential manager. I’m not sure how long OTBR has been showing these errors, and I’m not even sure how that all works or if it matters which router manages the credentials.
I have a few questions:
Should I use a Nest Hub or HA OTBR for sharing Android + IOS credentials? I can’t find any documentation indicating one way or the other. Does it even matter?
Any thoughts on why my Streamer keeps wanting to create another Thread network despite my other Google devices automatically joining together? It’s worth noting that my existing Nest Hubs created the initial thread network which I joined the Skyconnect/OTBR to.
Are the below errors indicative of an issue (that matters) with the OTBR Add-on? If so, any suggestions?
00:00:00.684 [W] Mle-----------: Failed to process Link Accept: Security
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::c2e:2aff:fe78:b87e/vethd6f5f39/3000:07:02.223
[N] MeshForwarder-: Failed to send IPv6 UDP msg, len:173, chksum:1b78, ecn:no, to:0x1c00, sec:yes, error:NoAck, prio:low, radio:15.4
00:07:02.223 [N] MeshForwarder-: src:[fd1d:98e7:2be8:1:2cf0:b70c:a546:9a0b]:46959
00:07:02.223 [N] MeshForwarder-: dst:[fd1d:98e7:2be8:1:efe5:114f:751a:3414]:5540
I don’t have so much experience with Google Thread networking products, so maybe more questions than answers … but I presume there is a setup process when you bring up a Google TBR for the first time that uses your Android phone with the Google Home App?
The Android device stores one and only one set of Thread credentials and it is the first one it ever sees that gets stored. If I assume for the moment that there is a setup process for the Google TBRs that use an Android device, then I presume the Android device got the the Thread networking credentials from the first TBR it brought up, and for the other Google TBRs it was the Android device that gave its stored Thread credentials to the other Google TBRs which is probably how all your Google TBRs joined the same Thread network.
If this is roughly correct, then is it possible you used a different Android device to setup the Streamer?
Thread credentials are stored in Android devices against a Border Agent ID. So I presume that the first TBR that was setup with Android stored the Thread credentials against this first Google TBR as the Border Agent ID.
From HA’s perspective, “Key inside a phone” in the HA UI means that this TBR has been selected as as the Border Agent ID. If the HA Companion App needs to get Thread Credentials from HA to store it in Android, then HA will provide the credentials using the TBR with the “key inside a phone” as the Border Agent ID. However, most likely your Android device already got Thread credentials using one of the Google TBRs as the Border Agent ID, and so there is no reason for HA to give credentials to your Android device so this isn’t so much an issue.
Thank you for the detailed response. It is helpful to know how the credentials are created/stored.
Your assumption is correct about commissioning Google devices; they were commissioned via the Google Home app on an Android phone. I don’t remember what phone (old Android or new) I used to commission the original Nest Hubs, but it is certainly possible that all or some were done on a previous Android phone. That said, I used the same phone (my current Pixel 5) to commission the Streamer this weekend and the HA SkyConnect a few months ago. I do remember having to “Send Credentials to Home Assistant” when I commissioned the SkyConnect/Thread network in HA, which I assume sent the Nest Thread network credentials that were already in my phone (as you said) to HA, which has allowed me to commissioned MoT devices without issue.
One thing I didn’t think of until now: When I commissioned the Streamer for the first time, I had it connected via ethernet and I cannot remember if I changed the VLAN for that port to IoT, or if I tried commissioning it initially with the port on LAN. I do know for a fact that my phone was connected to the IoT wifi network when commissioning. Both my HA and Nest Hubs are on the IoT network.
Is it plausible that the device (Streamer) being connected to a different network kept it from joining the existing Thread network when it was commissioned in the Google Home app?
Based on your last paragraph, it sounds like my phone should already have the thread credentials for my original network. That in conjunction with the Streamer being commissioned with the Google Home app (not HA), the TBR I have selected in HA shouldn’t even come into play, correct?