Adding Matter devices via non Apple/Google Thread Border Routers

Hello all, and apologies in advance if this is the wrong forum for this discussion.

I am trying to understand if Home Assistant’s Matter integration works when using Thread Border Routers that are not Apple/Google products (i.e a raspberry-pi with a nrf RCP).

My setup is composed of 2 raspberry pi devices
-Pi#1 is running Home Assistant
-Pi#2 is running otbr-posix image with a connected nrf dongle acting as RCP

When loading the HA UI on http://homeassistant.local:8123/, in the Thread intergration I can see the network formed by Pi#2 (showing that the network has a TBR).

When I try to add a Matter device, It always fails with a Thread Border Router Required message (I am using the ios companion app)

Thanks !

1 Like

I noticed you also posted to Discord with some additional information, so I thought I would add it here too:

"That’s what I have been doing, importing the TLV to the HA. Interesting that HA can tell that the network has a border router when its in the “Other Networks” categrory, once TLV is imported and the network is now the “Preferred Network” HA thinks “no border networks found”.

I like many other have been trying to figure out Matter and Thread, and still more to learn, but here is my take at the moment:

  1. Thread Integration learns/builds a list of Thread Networks/TBRs by listening in on “meshcop” protocol broadcasts by each TBR. This list is shown in the GUI (as you have here). Out of these, you can select a “preferred” Thread Network.
  2. URL (Ip-address/dns-name and port) is for a given TBR and that TBR should be an OTBR that has a webserver that supports APIs that HA requires. I’ll add that these APIs are partially sourced from HA Developer’s into the Open Thread upstream source code, and these APIs may not have yet propagated to all downstream distributions
  3. Dataset - A Dataset contains networking information (like channel number, pan-id) and credentials that a Device needs to be commissioned onto and afterwards operate on a given Thread Network. The Dataset format for the Thread Integration is a compressed list of TLVs (looks like a very long text string of hex digits. When commissioning a device using the HA companion App, HA would provide the companion App the Data set from the Preferred Network. If that Thread Network uses an OTBR, then HA can use the URL and APIs mentioned above to retrieve the Dataset from the OTBR. There is also a way for an Android based companion App to provide a Dataset to HA for Google based TBR (which are not OTBRs).

So in your case, the Thread Integration sees your Raspberry-Pi based TBR (and it looks like it is an OTBR too) which it probably discovered through mesh-cop, and you have selected it as the preferred network. Assuming the Thread Integration has the URL of the RaspPi OTBR, HA will try to contact it, and use the API to get its Dataset. Since in your case it says “No border routers found”, it is probable that either the URL is incorrect, or the OTBR posix image that you use does not support the APIs HA is expecting. So HA probably can also not get to the RaspPi’s Thread Dataset.

Its probably because the companion App is trying to get the credentials from HA for the Raspi OTBR, but can’t find any.

"That’s what I have been doing, importing the TLV to the HA

Let me ask, what have you used to do the importing?