Matter over Thread experience and help needed

I am trying to pair 6 new Matter over Thead devices to a Home Assistant Yellow using the built in Silicon Labs radio. Its been quite a journey and unfortunately I don’t have a solution yet. I am going to detail some steps and learning here and ask for some help!

First, everyone with a HA Yellow or Sky Connect / ZBT-1 dongle needs to start here.

I found this works very well. I actually have a two HA instances, a HA Yellow and a generic Raspberry Pi with the ZBT-1 dongle.

I am trying to pair Leviosa shades. I don’t have another matter over thread device to try. I am open to purchasing something else others have had good reliability from.BUT I do not think the shades are the problem.

I started out by ordering a single motor to test the Matter/Thread experience. It was incredibly easy! It paired on the first attempt and I kind of thought “wow this Matter Beta is better than I was expecting”. Brilliant, order 6 shades…

But now, I cannot pair any of the new shades, and after removing the test motor I cannot re-pair it again. What worked once no longer works! Very frustrating. I’ve had any number of different errors along the way.

Learnings & Debug

  1. Check that the Integrations page has three items
    a) Matter (Beta)
    b) OT Open Thread Border Router
    c) Thread

  2. Check Addons page has
    a) Matter Server (I am running 7.0.0)
    b) OpenThread Boarder Router (I am running 2.12.2)
    (and I am running HA Core 2025.1.0, and Supervisor 2024.12.3).

  3. Check both addons are running and enable debug logging levels
    a) Matter Server => Configuration tab, select Matter Server Log Level to debug.
    b) OpenThread Border Router => Configuration tab, select OpenThread Boarder Router agent log level to debug

Help - Not sure what the configuration option NAT64 IPv6 to IPv4 address translation should be set to. I read some things about Matter needing IPV6, but I don’t think that applies to Thread which is already IPv6. I think this only matters for Matter over a network. Changing the setting has not seemed to help me.

  1. Check the logs for both servers
    a) Open Thread should be spewing up messages every 10 seconds or so. I am not totally sure what I am looking at here but it looks functional!
18:13:44.271 [I] Mle-----------: Send Advertisement (ff02:0:0:0:0:0:0:1)
18:13:44.272 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:14, cmd:PROP_VALUE_SET, key:STREAM_RAW, len:69, channel:15, maxbackoffs:4, maxretries:15 ...
18:13:44.272 [D] P-SpinelDrive-: ... csmaCaEnabled:1, isHeaderUpdated:0, isARetx:0, skipAes:0, txDelay:0, txDelayBase:0
18:13:44.272 [D] P-Trel--------: SendPacket() -- sendto() failed errno 101
18:13:44.272 [D] P-Trel--------: SendPacket([fdde:7b3d:1a0:69c0:8018:3451:90d1:3f6]:55228) err:Abort pkt:[(len:83) 00 0f 65 6a 00 00 1b 6b 9e ef af 12 9e 74 85 b1 ... ]
18:13:44.280 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:14, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:OK
18:13:44.280 [I] MeshForwarder-: Sent IPv6 UDP msg, len:90, chksum:bcfb, ecn:no, to:0xffff, sec:no, prio:net, radio:all
18:13:44.280 [I] MeshForwarder-:     src:[fe80:0:0:0:9cef:af12:9e74:85b1]:19788
18:13:44.280 [I] MeshForwarder-:     dst:[ff02:0:0:0:0:0:0:1]:19788

b) Matter
Check the matter server has also started successfully. I see this set of log messages repeating over and over.
Help - I don’t know if these 2 failures are critical and what to do about them. I don’t think they matter, they refer to wlan0. I don’t have wlan0 set up, the HA Yellow connects via ethernet.

2025-01-04 10:24:17.907 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.908 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.910 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.912 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.913 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.914 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.915 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.916 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.917 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.918 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.919 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.920 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.921 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.921 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.922 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.924 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on wlan0:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000065: Network is unreachable
2025-01-04 10:24:17.928 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000013: No such device
2025-01-04 10:24:17.928 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 14 successes and 2 failures.
2025-01-04 10:24:17.929 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.930 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.931 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:17.933 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on wlan0:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000065: Network is unreachable
2025-01-04 10:24:17.936 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000013: No such device
2025-01-04 10:24:17.937 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 14 successes and 2 failures.
2025-01-04 10:24:20.845 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.848 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.851 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.852 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.853 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.854 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.855 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.856 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.857 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.859 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.860 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.861 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.862 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.862 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.864 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on wlan0:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000065: Network is unreachable
2025-01-04 10:24:20.867 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000013: No such device
2025-01-04 10:24:20.868 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 14 successes and 2 failures.
2025-01-04 10:24:20.869 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.870 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.871 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.871 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2025-01-04 10:24:20.873 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on wlan0:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000065: Network is unreachable
2025-01-04 10:24:20.877 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???:  src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000013: No such device
2025-01-04 10:24:20.878 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 14 successes and 2 failures.

(On my first magical test which worked I didn’t look at any of these logs and it just worked. But after that, during debug I found the servers failing to start and looping on watchdog restarts. One thing that fixed this was re-configuring the hardware per the original HA Yellow instructions. Running that again seemed to fix some things).

  1. Check Thread Integration’s preferred network. Go to Integrations, Thread, and select Configure. You should see something like this, noting that I have two HA instances and two thread networks each managed by a different HA instance.
    image

Now (this tricked me for a while), do that same step on a mobile device though the companion app. On the companion app you get an option for the Preferred network to SEND CREDENTIALS TO PHONE.
Then in the companion app you can check this worked by going to Settings=>Compainion App => Debugging => Thread and making sure you have a key chain for the Preferred network. When this was not correct, when pairing a device I got errors about not having a Thread Boarder Router for my network.

Note that Google searches about this return some out dated advice applying to older versions of the companion app. The location of the thread debugging information has changed!

( I also note that in my initial test all this happened automatically and it worked “magically”. All these steps are part of the debug when it hasn’t worked and I’ve reset and created new networks while trying to get things going. This needs the credentials to be shared with the phone ).

  1. Pair a device using a mobile device running Companion App.
    Now place the device into pairing mode, go to Integrations => devices tab and Add Device. Choose Matter and use the camera on device to scan the pairing QR code.
    I see messages in the companion app that say connecting, then Setting up. Then it fails and says failed to pair.

Help - This is where I am stuck. I cant see much from the logs to help me with the failure!
Matter log has this, showing me it found the device but there are no more messages that indicate pairing progress or why the pairing failed.

2025-01-04 09:37:47.728 (MainThread) DEBUG [matter_server.server.device_controller.mdns] Discovered commissionable Matter node: AsyncServiceInfo(type='_matterc._udp.local.', name='92B6D14DBC12E908._matterc._udp.local.', addresses=[], port=5540, weight=0, priority=0, server='D28AC72829E9219C.local.', properties={b'VP': b'5402+4660', b'SII': b'2800', b'SAI': b'1000', b'T': b'0', b'D': b'2903', b'CM': b'0', b'PH': b'36', b'PI': None}, interface_index=None)

and much later I see this message, probably indicating the matter device stopped advertising itself.

2025-01-04 10:45:04.864 (MainThread) DEBUG [matter_server.server.device_controller.mdns] Commissionable Matter node disappeared: AsyncServiceInfo(type='_matterc._udp.local.', name='9131BA987B572EDE._matterc._udp.local.', addresses=[], port=None, weight=0, priority=0, server=None, properties={}, interface_index=None)

Final thoughts.
I have HA Yellow connected to a Ubiquity network over ethernet.
HA network settings for IPv4 and IPV6 are both set to Automatic. Ubiquity provides a reserved address over DHCP.
I don’t think any IPv6 network issue should matter, because all traffic should be device => Thread Dongle => into Home Assistant. But I do have those wlan errors in the matter logs so I mention it here.

1 Like

My best guess is that your first successful pairing caused the Thread dataset/credentials to be stored on your iOS device for the Thread network that was in use at the time.
Even though you have created and wanting to use another Thread network, the iOS framework (that the HA Companion App uses) is likely trying to use that original Thread dataset for commissioning and that’s likely why it is failing.

Unfortunately, I have not heard from anyone how to remove the Thread dataset from the iOS keychain.

I think I’ve resolved the IOS credentials. When these were wrong it gives an error about a missing Thread Boarder Router.
Now I am getting the failed to pair error.

You need to re-copy the correct thread credentials to your iPhone.

Hi, any more success on this ?? I have also some Matter shades from Leviosa that work just fine in Homekit, but I can not get it paired or shared at all with HA. I have tried just the appletv as the preferred border router and also a zbt1 joined to the network because some suggested there is no way to join matter devices with Iphone without it. I tried also adding existing device using pairing code from home kit. or as a new device from scratch. So far I just get prompted for a new code after some time without any indication of any errors.

thanks

No, its been quite exasperating!
I cycled through a couple of phones and Ipads, and also uninstalled / reinstalled the whole Skyconect dongle and all the thread router / matter integrations. But I just cant get it to work like it did first time.

I also bought another matter smart plug and can’t connect that either. Same symptoms. So its not the Leviosa blinds.

A few days ago I ordered a $99 Home Pod Mini, expect that in a few days and I will try and connect over that route. I was going to connect it to HomeKit and then try and use the device sharing Matter offers. It sounds like that is the path you are on…

Today I set up the home pod mini and paired all my shades to Home Kit.
Very simple and intuitive and all working in a few minutes.
So the device are all set up in home kit via the home pod mini.

I am now trying to connect the shades to Home Assistant by sharing the device.
So first I removed the Thread Boarder Router Integration in HA, assuming that the HomePod mini is now my border router. In the Thread integration I selected the HomePod as my preferred network

Then I add matter device => Yes its already in use => Apple Home.
I get the pairing code from Apple Home and paste it in but it won’t connect.

The logs for the matter server indicate something is happening but its failing.

2025-02-09 12:27:18.161 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Discovered device to be commissioned over DNS-SD
2025-02-09 12:27:18.162 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Attempting PASE connection to UDP:[fd2b:f6e5:3299:0:5fcf:9d76:75f3:768a]:5540
2025-02-09 12:27:18.163 (Dummy-2) CHIP_DETAIL [chip.native.IN] SecureSession[0x7f7400cc30]: Allocated Type:1 LSID:57496
2025-02-09 12:27:18.163 (Dummy-2) CHIP_DETAIL [chip.native.SC] Assigned local session key ID 57496
2025-02-09 12:27:18.164 (Dummy-2) CHIP_PROGRESS [chip.native.EM] <<< [E:36087i S:0 M:158401735] (U) Msg TX from 9974D3EE26EE46C8 to 0:0000000000000000 [0000] [UDP:[fd2b:f6e5:3299:0:5fcf:9d76:75f3:768a]:5540] --- Type 0000:20 (SecureChannel:PBKDFParamRequest) (B:98)
2025-02-09 12:27:18.165 (Dummy-2) CHIP_ERROR [chip.native.IN] SendMessage() to UDP:[fd2b:f6e5:3299:0:5fcf:9d76:75f3:768a]:5540 failed: src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000065: Network is unreachable
2025-02-09 12:27:18.165 (Dummy-2) CHIP_DETAIL [chip.native.IN] SecureSession[0x7f7400cc30]: Released - Type:1 LSID:57496
2025-02-09 12:27:18.166 (Dummy-2) CHIP_ERROR [chip.native.-] src/inet/UDPEndPointImplSockets.cpp:421: OS Error 0x02000065: Network is unreachable at src/controller/SetUpCodePairer.cpp:332
2025-02-09 12:27:32.988 (Dummy-2) CHIP_ERROR [chip.native.CTL] Discovery timed out
2025-02-09 12:27:32.990 (Dummy-2) CHIP_DETAIL [chip.native.CTL] Stopping commissioning discovery over DNS-SD
2025-02-09 12:27:32.991 (Dummy-2) CHIP_ERROR [chip.native.ZCL] Secure Pairing Failed
2025-02-09 12:27:32.992 (Dummy-2) WARNING [chip.ChipDeviceCtrl] Failed to establish secure session to device: src/controller/python/ChipDeviceController-ScriptDevicePairingDelegate.cpp:96: CHIP Error 0x00000003: Incorrect state
2025-02-09 12:27:32.994 (MainThread) ERROR [matter_server.server.client_handler] [547676942896] Error while handling: commission_with_code: Commission with code failed for node 3.

So whats actually happening here?
I think HA is connecting to the homepod via wifi and then using the homepod’s thread radio to connect to the shades. But its getting a network unreachable error which seems very storage given the HomePod mini is added to HA via the Apple TV integration. So the wifi network connection is definitely working. Its difficult to see what the issue is!

Jason

Note sure, but maybe go into your ssh terminal to HA and execute the following:
`route -A inet6
and see if there is a route showing up with a nexthop and an interface for route fd2b:blah:blah.

Another check, is how many digits were in the pairing code? I think an 8 digit pairing code is for pairing with Homekit, so just wondering if the device is actually reachable, but using a homekit code is actually what is failing the PASE.

Hello there,

the issues you are explaning seems to refer as the thread credentials not quite synced.

It’s possible to add matter devices (thread aor wifi) directly from the HA web interface maybe you could try that ?

You need to have a bluetooth dongle connected to HA and then use the Matter server to add devices.

Hi, I got my setup working using sharing codes, I think the main step that changed was to use my ios app

app settings->debug->thread, and exchange your keychain with homeasitant

I run docker install 2025.1.3
the matter server runs as another docker image on that same host
configured thread to use apple tv as the preferred border route with exchange of ios android secrets