Matter over Thread using Sonoff Dongle Plus MG24

Hi,

I am stuck and need your help, please.

I set up HA and I love it!
Now I bought a Sonoff Dongle Plus MG24 to work as a Thread Border Router.
I flashed the Thread software (using Sonoff Dongle Flasher since all the other flash methods don’t seem to support the MG24 variant yet).

I installed the OpenThread Border Router app:

  • Selected the Sonoff Dongle
  • Baud rate is at 460800 (default)
  • Hardware Flow Control = off
  • OTBR firewall = on (default)

Matter Server is also up and running:

  • Did not change anything here

Using the companion app, I tried adding my first Matter-over-Thread devices (IKEA Alpstuga and Timmerflotte). The smartphone (Pixel 7) connects to the device, creates Matter credentials, and all that good stuff, but then it gets stuck on "checking connection to thread network" (rough translation).
Sometimes it just loads indefinitely, sometimes it fails after ~1-2 min.

On the positive side:
If I look for Thread within my Android settings, I do find the network!

What I tried so far:

  • Completely removing the OpenThread Border Router app and reinstalling it
  • Restarting HA
  • Restarting the smartphone
  • Adding a USB extension cord to the Dongle
  • Running the "ha docker options --enable-ipv6=true" command in the HA terminal
  • Setting various router options
  • And probably many other things I don’t even remember

Can anybody give me a hint on what might be the problem?

My guesses would be:

  • Some weird router setting
  • Sonoff Dongle not transmitting with enough dB (AI suggested that one… ;D)

I really look forward to your help!

PS:
Honestly… I’m thinking hard about switching to Zigbee and just sending back the 2 Thread devices.

In my case it was the “weird router setting”.

I had similar frustrations with Matter over Thread and I ended up putting my Thread devices in Zigbee mode for a while until I finally got things mostly working after several months. It sounds like the BLE part of the pairing process is working but perhaps the process is getting stuck at the point where it’s supposed to hand the Thread network credentials to the device so that commissioning can finish.

My setup was different since I was using iOS and an IKEA DIRIGERA hub instead of a Sonoff dongle. I don’t know what ultimately got everything to work for me but some things that might be helpful for troubleshooting:

  • Posting the relevant OTBR logs
  • Router brand and model
  • Android version

There are a series of commands that you can also try running locally to ensure that this isn’t a networking issues. Using a *nix OS was easiest for me (Linux distro, MacOS). I feel silly linking it but I wrote out the steps that I used to rule out a networking issue here. If you go through those steps, you should be able to find the equivalent commands if you’re using a different OS.

If you can rule out a networking issue, you might be able to slowly isolate the actual problem. For what it’s worth, successfully commissioning Matter over Thread devices seems to have been challenging for a lot of people and it was a breath of fresh air when I switched to Zigbee. Some of the Matter enabled IKEA devices have a hidden Zigbee mode but unfortunately, I don’t believe that the ALPSTUGA or TIMMERFLOTTE offer that functionality.

Thank you for your reply!

I am using a Google Pixel 7 running Android 17 (latest version) and Security Patch 5. Juli 26.

At the moment I am using a Telekom Speedport Smart 4. (hate that thin and going to change as soon as I can get out of my contract)

I did not find an easy way to attach the log files so i will copy paste them here.
Everything that happend today 23.07.2026 (DD.MM.YYYY) should tell the story. This morning i restartet HA and tried parring the Ikea Alpstuga again to create the logs.

OTBR Logs:

[21:54:33] INFO: e[32mThe otbr-web is disabled.e[0m
/run/s6/basedir/scripts/rc.init: info: hook /etc/s6-overlay/scripts/enable-check.sh exited 0
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service banner: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started

e[34m-----------------------------------------------------------e[0m
e[34m Add-on: OpenThread Border Routere[0m
e[34m OpenThread Border Router appe[0m
e[34m-----------------------------------------------------------e[0m
e[34m Add-on version: 3.0.2e[0m
e[32m You are running the latest version of this add-on.e[0m
e[34m System: Home Assistant OS 18.1  (amd64 / generic-x86-64)e[0m
e[34m Home Assistant Core: 2026.7.3e[0m
e[34m Home Assistant Supervisor: 2026.07.3e[0m
e[34m-----------------------------------------------------------e[0m
e[34m Please, share the above information when looking for helpe[0m
e[34m or support in, e.g., GitHub, forums or the Discord chat.e[0m
e[34m-----------------------------------------------------------e[0m
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[21:54:33] INFO: e[32mSetup OTBR firewall...e[0m
[21:54:33] INFO: e[32mMigrating OTBR settings if needed...e[0m
2026-07-22 21:54:34 homeassistant asyncio[232] DEBUG Using selector: EpollSelector
2026-07-22 21:54:34 homeassistant zigpy.serial[232] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_2c4efe797da3ef1194af4abd61ce3355-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2026-07-22 21:54:34 homeassistant serialx.platforms.serial_posix[232] DEBUG Locking serial port '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_2c4efe797da3ef1194af4abd61ce3355-if00-port0'
2026-07-22 21:54:34 homeassistant serialx.platforms.serial_posix[232] DEBUG Configuring serial port '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_2c4efe797da3ef1194af4abd61ce3355-if00-port0'
2026-07-22 21:54:34 homeassistant serialx.platforms.serial_posix[232] DEBUG Configuring serial port: TcsetattrFlags(iflag=0, oflag=0, cflag=3248, lflag=0, ispeed=4100, ospeed=4100, cc_vmin=0, cc_vtime=0) + cc=[b'\x03', b'\x1c', b'\x7f', b'\x15', b'\x04', 0, 0, b'\x00', b'\x11', b'\x13', b'\x1a', b'\x00', b'\x12', b'\x0f', b'\x17', b'\x16', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00']
2026-07-22 21:54:34 homeassistant serialx.platforms.serial_linux[232] DEBUG Setting low latency mode: True
2026-07-22 21:54:34 homeassistant serialx.platforms.serial_posix[232] DEBUG Setting modem pins: ModemPins[!dtr !rts]
2026-07-22 21:54:34 homeassistant serialx.platforms.serial_posix[232] DEBUG TIOCMBIC: 0x00000006
2026-07-22 21:54:34 homeassistant zigpy.serial[232] DEBUG Connection made: <serialx.platforms.serial_linux.LinuxSerialTransport object at 0x7f5e48075190>
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.RESET: 1>, data=b'\x02')
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Sent 7 of 7 bytes
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Event loop woke up reader
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Received b'~\x80\x06\x00p\xeet~'
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Decoded HDLC frame: HDLCLiteFrame(data=b'\x80\x06\x00p')
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Parsed frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_IS: 6>, data=b'\x00p')
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Sent 7 of 7 bytes
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Event loop woke up reader
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Received b'~\x83\x06\x08\x18\r\xf9\xff\xfe\xd2\x18\xcc\x8a\x08~'
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Decoded HDLC frame: HDLCLiteFrame(data=b'\x83\x06\x08\x18\r\xf9\xff\xfe\xd2\x18\xcc')
2026-07-22 21:54:34 homeassistant universal_silabs_flasher.spinel[232] DEBUG Parsed frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_IS: 6>, data=b'\x08\x18\r\xf9\xff\xfe\xd2\x18\xcc')
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Closing at the request of the application
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Backgrounding a close request: None
2026-07-22 21:54:34 homeassistant zigpy.serial[232] DEBUG Waiting for serial port to close
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Closing connection: None
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Closing file descriptor 7
2026-07-22 21:54:34 homeassistant serialx.descriptor_transport[232] DEBUG Calling protocol `connection_lost` with exc=None
2026-07-22 21:54:34 homeassistant zigpy.serial[232] DEBUG Connection lost: None
Adapter settings file /data/thread/0_180df9fffed218cc.data is the most recently used, skipping
[21:54:34] INFO: e[32mStarting otbr-agent...e[0m
[NOTE]-AGENT---: Running 0.3.0-624a7d98-dirty
[NOTE]-AGENT---: Thread version: 1.4.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_2c4efe797da3ef1194af4abd61ce3355-if00-port0?uart-baudrate=460800&uart-init-deassert
[NOTE]-AGENT---: Radio URL: trel://enp1s0
[NOTE]-ILS-----: Infra link selected: enp1s0
49d.17:03:16.586 [C] P-SpinelDrive-: Software reset co-processor successfully
00:00:00.049 [N] BorderRouting-: BR ULA prefix: fd48:798:4e34::/48 (loaded)
00:00:00.049 [N] BorderRouting-: Local on-link prefix: fd67:a2e8:3abc:a3f0::/64
[WARN]-UTILS---: /usr/src/ot-br-posix/src/rest/network_diag_handler.cpp:1300 lacking some attributes for deviceId de91a3a9b8eeba03
[WARN]-UTILS---: /usr/src/ot-br-posix/src/rest/network_diag_handler.cpp:1244 cannot get LeaderData while detached
[WARN]-UTILS---: /usr/src/ot-br-posix/src/rest/rest_devices_coll.cpp:232 - AddItem - de91a3a9b8eeba03
00:00:00.067 [N] Mle-----------: Role disabled -> detached
00:00:00.067 [N] P-Netif-------: Changing interface state to up.
00:00:00.071 [W] P-Netif-------: Failed to process request#2: No such process
00:00:00.071 [W] P-Netif-------: Failed to process request#6: No such process
Connection to 172.30.32.1 8081 port [tcp/tproxy] succeeded!
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-configure: starting
Done
00:00:00.262 [W] P-Daemon------: Failed to write CLI output: Broken pipe
[21:54:34] INFO: e[32mSetting OpenThread mDNS local hostname to homeassistant-otbr.e[0m
Done
Done
Done
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
[21:54:34] INFO: e[32mSuccessfully sent discovery information to Home Assistant.e[0m
s6-rc: info: service otbr-agent-rest-discovery successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
00:00:27.557 [N] Mle-----------: RLOC16 4400 -> fffe
00:00:28.232 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
00:00:34.732 [N] RouterTable---: Allocate router id 17
00:00:34.732 [N] Mle-----------: RLOC16 fffe -> 4400
00:00:34.735 [N] Mle-----------: Role detached -> leader
00:00:34.735 [N] Mle-----------: Partition ID 0x3f965fa7
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!
11:23:51.693 [N] RouterTable---: Allocate router id 16

Matter Server Logs:

s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service banner: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started

e[34m-----------------------------------------------------------e[0m
e[34m Add-on: Matter Servere[0m
e[34m Matter WebSocket Server for Home Assistant Matter support.e[0m
e[34m-----------------------------------------------------------e[0m
e[34m Add-on version: 9.1.0e[0m
e[32m You are running the latest version of this add-on.e[0m
e[34m System: Home Assistant OS 18.1  (amd64 / generic-x86-64)e[0m
e[34m Home Assistant Core: 2026.7.3e[0m
e[34m Home Assistant Supervisor: 2026.07.3e[0m
e[34m-----------------------------------------------------------e[0m
e[34m Please, share the above information when looking for helpe[0m
e[34m or support in, e.g., GitHub, forums or the Discord chat.e[0m
e[34m-----------------------------------------------------------e[0m
s6-rc: info: service banner successfully started
s6-rc: info: service matter-server: starting
s6-rc: info: service matter-server successfully started
s6-rc: info: service legacy-services: starting
[21:54:36] INFO: e[32mStarting Matter Server...e[0m
s6-rc: info: service legacy-services successfully started
[21:54:36] INFO: e[32mTime sync 'auto': host NTP is not synchronized, leaving time sync disabled.e[0m
[21:54:36] INFO: e[32mUsing 'enp1s0' as primary network interface.e[0m
[21:54:36] INFO: e[32mSuccessfully send discovery information to Home Assistant.e[0m
e[2m2026-07-22 21:54:40.721 INFO   e[0;1;90mMatterServer         e[0mCommand line: --storage-path /data --port 5580 --log-level info --primary-interface enp1s0 --fabricid 2 --vendorid 4939 --listen-address 172.30.32.1 --listen-address 127.0.0.1e[0m
e[2m2026-07-22 21:54:40.729 INFO   e[0;1;90mMatterServer         e[0mUsing storage drivers: kv=wal, blob=dire[0m
e[2m2026-07-22 21:54:40.731 INFO   e[0;1;90mConfigStorage        e[0mStorage location: /data (Directory)e[0m
e[2m2026-07-22 21:54:40.739 INFO   e[0;1;90mNodeJsDirectoryLock  e[0mCleaning stale storage lock for config - PID 117 reused (token mismatch)e[0m
e[2m2026-07-22 21:54:40.757 INFO   e[0;1;90mConfigStorage        e[0mSet config key fabricLabel to Homee[0m
e[2m2026-07-22 21:54:40.763 INFO   e[0;1;90mConfigStorage        e[0mSet config key nextNodeId to 6e[0m
e[2m2026-07-22 21:54:40.765 INFO   e[0;1;90mConfigStorage        e[0mSet config key wifiSsid to YerAWiFiHarrye[0m
e[2m2026-07-22 21:54:40.766 INFO   e[0;1;90mConfigStorage        e[0mSet config key wifiCredentials to <redacted>e[0m
e[2m2026-07-22 21:54:40.768 INFO   e[0;1;90mConfigStorage        e[0mSet config key threadDataset to <redacted>e[0m
e[2m2026-07-22 21:54:40.770 INFO   e[0;1;90mServerIdResolver     e[0mFound existing storage for server ID: server-2-134be[0m
e[2m2026-07-22 21:54:40.773 INFO   e[0;1;90mNodeJsDirectoryLock  e[0mCleaning stale storage lock for server-2-134b - PID 117 reused (token mismatch)e[0m
e[2m2026-07-22 21:54:40.794 INFO   e[0;1;90mDclCertifi~teService e[0mInitialize CertificateService e[34mprod: e[2;39mhttps://on.dcl.csa-iot.org e[0;34mtest: e[2;39mhttps://on.test-net.dcl.csa-iot.org e[0;34mgithub: e[2;39myese[0m
e[2m2026-07-22 21:54:40.797 INFO   e[0;1;90mDclVendorInfoService e[0mInitialize VendorInfoService e[34msource: e[2;39mhttps://on.dcl.csa-iot.org e[0;34minterval: e[2;39m24he[0m
e[2m2026-07-22 21:54:40.798 INFO   e[0;1;90mController~ndHandler e[0mBLE is disablede[0m
e[2m2026-07-22 21:54:40.802 NOTICE e[0;1;90mWebSocketC~erHandler e[0;32mStarting server: matter-server/1.2.6 (matter.js/0.17.6-alpha.0-20260715-3585d95fe)e[0m
e[2m2026-07-22 21:54:40.806 INFO   e[0;1;90mNodeJsDirectoryLock  e[0mCleaning stale storage lock for vendors - PID 117 reused (token mismatch)e[0m
e[2m2026-07-22 21:54:40.806 INFO   e[0;1;90mNodeJsDirectoryLock  e[0mCleaning stale storage lock for certificates - PID 117 reused (token mismatch)e[0m
e[2m2026-07-22 21:54:40.880 INFO   e[0;1;90mDclCertifi~teService e[0mLoaded 179 certificates from storagee[0m
e[2m2026-07-22 21:54:40.931 INFO   e[0;1;90mDclCertifi~teService e[0mseed: consumed 0 PAA certs from snapshot 2026-07-15T03:06:06.361Ze[0m
e[2m2026-07-22 21:54:40.937 INFO   e[0;1;90mDclCertifi~teService e[0mseed: consumed 0 CDSigner certs from snapshot 2026-07-15T03:06:06.361Ze[0m
e[2m2026-07-22 21:54:40.959 INFO   e[0;1;90mDclVendorInfoService e[0mLoaded 455 vendors from storagee[0m
e[2m2026-07-22 21:54:40.959 INFO   e[0;1;90mDclVendorInfoService e[0mseed: skipping vendors — storage has 455 entries >= seed expectedCount 455e[0m
e[2m2026-07-22 21:54:40.959 INFO   e[0;1;90mDclVendorInfoService e[0mFetching vendor information from DCLe[0m
e[2m2026-07-22 21:54:40.967 INFO   e[0;1;90mServerNodeStore      e[0mOpened e[1mserver-2-134b e[0mstorage e[34mlocation: e[2;39m/data/server-2-134b e[0;34mdriver: e[2;39mwale[0m
e[2m2026-07-22 21:54:41.080 INFO   e[0;1;90mBaseEventStore       e[0mLoaded volatile event store with next number 16001e[0m
e[2m2026-07-22 21:54:41.087 INFO   e[0;1;90mEndpoint             e[39mserver-2-134b e[0mready e[34mendpoint#: e[2;39m0 e[0;34mtype: e[2;39mRootNode (0x16, rev 4) e[0;34mbehaviors: e[90m💤parts e[32m✓index ✓accessControl ✓basicInformation ✓generalCommissioning ✓generalDiagnostics ✓administratorCommissioning ✓operationalCredentials ✓groupKeyManagement ✓commissioning ✓network e[90m💤productDescription 💤subscriptions 💤sessions e[32m✓events e[90m💤controller e[32m✓descriptore[0m
e[2m2026-07-22 21:54:41.109 INFO   e[0;1;90mDclOtaUpdateService  e[0mInitialize OTAUpdateService e[34mprod: e[2;39mhttps://on.dcl.csa-iot.org e[0;34mtest: e[2;39mhttps://on.test-net.dcl.csa-iot.orge[0m
e[2m2026-07-22 21:54:41.114 INFO   e[0;1;90mNodeJsDirectoryLock  e[0mCleaning stale storage lock for ota - PID 117 reused (token mismatch)e[0m
e[2m2026-07-22 21:54:41.120 INFO   e[0;1;90mEndpoint             e[39mserver-2-134b.ota-provider e[0mready e[34mendpoint#: e[2;39m1 e[0;34mtype: e[2;39mOtaProvider (0x14, rev 1) e[0;34mbehaviors: e[32m✓otaSoftwareUpdateProvider ✓descriptor ✓softwareupdatese[0m
e[2m2026-07-22 21:54:41.121 INFO   e[0;1;90mCertificateAuthority e[0mLoaded stored credentials with ID 0e[0m
e[2m2026-07-22 21:54:41.146 NOTICE e[0;1;90mFabricAuthority      e[0;32mRotated NOC for fabric 1e[0m
e[2m2026-07-22 21:54:41.151 WARN   e[0;1;90mCommission~ontroller e[0;33mBLE is not enabled on this platforme[0m
e[2m2026-07-22 21:54:41.152 NOTICE e[0;1;90mNode                 e[32mserver-2-134b e[0;32mgoing onlinee[0m
e[2m2026-07-22 21:54:41.155 INFO   e[0;1;90mServerNetworkRuntime e[0mTCP transport enabled (incoming=true, outgoing=true)e[0m
e[2m2026-07-22 21:54:41.163 INFO   e[0;1;90mNetworkProfiles      e[0mConfigure profile fast e[34mexchanges: e[2;39m200 e[0;34madditionalMrpDelay: e[2;39m0e[0m
e[2m2026-07-22 21:54:41.164 NOTICE e[0;1;90mNode                 e[32mserver-2-134b e[0;32mis onlinee[0m
e[2m2026-07-22 21:54:41.165 INFO   e[0;1;90mFabricAccessControl  e[0mACL List updated e[34mprivilege: e[2;39m5 e[0;34mauthMode: e[2;39m2 e[0;34msubjects: e[2;39m112233 e[0;34mtargets: e[2;39mnull e[0;34mfabricIndex: e[2;39m1 e[0;34mprivilege: e[2;39m3 e[0;34mauthMode: e[2;39m2 e[0;34msubjects:  targets: e[2;39m{ cluster: 41, endpoint: 1, deviceType: null } e[0;34mfabricIndex: e[2;39m1 e[0;34mprivilege: e[2;39m3 e[0;34mauthMode: e[2;39m2 e[0;34msubjects:  targets: e[2;39m{ cluster: 1364, endpoint: 2, deviceType: null } e[0;34mfabricIndex: e[2;39m1e[0m
e[2m2026-07-22 21:54:41.181 INFO   e[0;1;90mMdnsAdvertisement    e[0mPublishing e[34mkind: e[2;39moperational e[0;34mservice: e[2;39mmdns:66B13EAC39DEBCC5-000000000001B669._matter._tcp.locale[0m
e[2m2026-07-22 21:54:41.182 INFO   e[0;1;90mSoftwareUp~teManager e[0mScheduling first OTA update check in 7m 23se[0m
e[2m2026-07-22 21:54:41.189 NOTICE e[0;1;90mController~ndHandler e[0;32mMatter Controller startede[0m
e[2m2026-07-22 21:54:41.190 INFO   e[0;1;90mController~ndHandler e[0mOTA event handlers registerede[0m
e[2m2026-07-22 21:54:41.197 INFO   e[0;1;90mWebRtcTran~torServer e[0mWebRtcTransportRequestor initialized on endpoint=2 (id="camera-controller")e[0m
e[2m2026-07-22 21:54:41.205 INFO   e[0;1;90mEndpoint             e[39mserver-2-134b.camera-controller e[0mready e[34mendpoint#: e[2;39m2 e[0;34mtype: e[2;39mCameraController (0x0147, rev 1) e[0;34mbehaviors: e[32m✓webRtcTransportRequestor ✓descriptore[0m
e[2m2026-07-22 21:54:41.206 INFO   e[0;1;90mController~ndHandler e[0mWebRTC callback bridge wirede[0m
e[2m2026-07-22 21:54:41.207 INFO   e[0;1;90mController~ndHandler e[0mFound 0 nodes:e[0m
e[2m2026-07-22 21:54:41.207 INFO   e[0;1;90mController~ndHandler e[0mAll 0 nodes initialized, starting connectionse[0m
e[2m2026-07-22 21:54:41.210 NOTICE e[0;1;90mWebServer            e[0;32mWebserver listening on http://172.30.32.1:5580e[0m
e[2m2026-07-22 21:54:41.211 NOTICE e[0;1;90mWebSocketC~erHandler e[0;32mStarting server: matter-server/1.2.6 (matter.js/0.17.6-alpha.0-20260715-3585d95fe)e[0m
e[2m2026-07-22 21:54:41.213 NOTICE e[0;1;90mWebServer            e[0;32mWebserver listening on http://127.0.0.1:5580e[0m
e[2m2026-07-22 21:54:45.939 INFO   e[0;1;90mDclCertifi~teService e[0mCertificate update failed e[31m[e[1mdcl-responsee[0;31m] Error fetching /dcl/pki/root-certificates from DCL: 500 - The operation was aborted due to timeout: The operation was aborted due to timeoute[0m
e[2m2026-07-22 21:54:45.961 INFO   e[0;1;90mDclVendorInfoService e[0mError updating vendor information e[31m[e[1mdcl-responsee[0;31m] Error fetching /dcl/vendorinfo/vendors from DCL: 500 - The operation was aborted due to timeout: The operation was aborted due to timeoute[0m
e[2m2026-07-22 21:55:13.925 INFO   e[0;1;90mWebSocketC~erHandler e[0m[0] WebSocket connection establishede[0m
e[2m2026-07-22 21:55:13.934 INFO   e[0;1;90mWebSocketC~erHandler e[0mWebSocket server start_listeninge[0m
e[2m2026-07-22 21:55:13.934 INFO   e[0;1;90mWebSocketC~erHandler e[0mWebSocket server start_listening. Returned 0 nodese[0m
e[2m2026-07-22 21:55:13.936 INFO   e[0;1;90mConfigStorage        e[0mSet config key fabricLabel to Homee[0m
e[2m2026-07-22 22:02:04.186 INFO   e[0;1;90mSoftwareUp~teManager e[0mNo updatable nodes founde[0m
e[2m2026-07-22 23:13:26.281 INFO   e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="otTRELde91a3a9b8eeba03._trel._udp.local" source=trel xa=missing nn="" vn=""e[0m
e[2m2026-07-23 00:14:28.008 INFO   e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="otTRELde91a3a9b8eeba03._trel._udp.local" source=trel xa=missing nn="" vn=""e[0m
e[2m2026-07-23 00:55:57.486 INFO   e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="otTRELde91a3a9b8eeba03._trel._udp.local" source=trel xa=missing nn="" vn=""e[0m
e[2m2026-07-23 01:56:33.914 INFO   e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="Home Assistant OpenThread Border Router de91a3a9b8eeba03._meshcop._udp.local" source=meshcop xa=missing nn="" vn=""e[0m
e[2m2026-07-23 08:30:19.236 INFO   e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="Home Assistant OpenThread Border Router de91a3a9b8eeba03._meshcop._udp.local" source=meshcop xa=missing nn="" vn=""e[0m
e[2m2026-07-23 09:13:06.786 INFO   e[0;1;90mWebSocketC~erHandler e[0m[0] WebSocket connection closede[0m
e[2m2026-07-23 09:13:06.786 INFO   e[0;1;90mWebSocketC~erHandler e[0m[0] Releasing fabric label ownership (owning connection closed)e[0m
e[2m2026-07-23 09:13:22.071 INFO   e[0;1;90mWebSocketC~erHandler e[0m[1] WebSocket connection establishede[0m
e[2m2026-07-23 09:13:22.078 INFO   e[0;1;90mWebSocketC~erHandler e[0mWebSocket server start_listeninge[0m
e[2m2026-07-23 09:13:22.078 INFO   e[0;1;90mWebSocketC~erHandler e[0mWebSocket server start_listening. Returned 0 nodese[0m
e[2m2026-07-23 09:13:22.081 INFO   e[0;1;90mConfigStorage        e[0mSet config key fabricLabel to Homee[0m
e[2m2026-07-23 09:15:48.284 INFO   e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="otTRELde91a3a9b8eeba03._trel._udp.local" source=trel xa=missing nn="" vn=""e[0m

EDIT:
Matter over WiFi works. I was able to connect a Lightbulb. But i used my Smarpthone with HA Companion App to connect it. Maybe there is a problem sharing information between my LAN and WiFi network?

what did you change to fix it?

Argh, it probably depends on what router you use. I have a mikrotik and I had to enable multicast querier.

This line seems a little suspicious but I don’t necessarily know that it represents a problem or the specific problem in question: e[2m2026-07-23 01:56:33.914 INFO e[0;1;90mBorderRouterRegistry e[0mBR instance dropped (no valid xa) qname="Home Assistant OpenThread Border Router de91a3a9b8eeba03._meshcop._udp.local" source=meshcop xa=missing nn="" vn=""e[0m

However, since you confirmed that Matter over Wi-Fi works, it seems less likely that the Matter server is the problem. I’m also not seeing any clear errors in your OTBR logs.

Under your Thread settings in Home Assistant, is the Sonoff dongle listed as your only Thread border router? I don’t have an Android device anymore but do you have Google Home installed and have you used it? Is there a possibility that it might be trying to manage any of your Thread credentials? Are you using any VLANs, especially in conjunction with any of your smart home devices?

If you have access to a machine running Linux or a Mac, it could be useful to ensure that your PC can see the Thread border router. On Linux, you have a lot of different options as far as commands go but you could use something like avahi-browse and try avahi-browse -rt _meshcop._udp. I believe that this should return some useful information like the Thread network name, Thread version, and extended address (xa=). If you’re seeing errors there, that might be able to narrow things down a bit.

I didn’t see any mentioning of this, but how did you load your Android device with the HA-OTBR Thread credentials?

The Sonoff donge is listet as Thread Border Router.
It is sending yout information but not receiving.
Seems like the “acknowledge” check dosnt work.

The Sensors is getting information (via BT) and gets the Matter credentials but fails to talk back to the Thread Router.

At the moment i do not have acces to a Linux or Mac device but i will try to get my hands on one to check the thread network.

EDIT:
When searching for “Thread” in my Adroid Settings i find a section where i can see all active Thread networks. I deactivated my OTBR to check and it went away. Reactivating OTBR it showed up again. So atleast the network exists.

I tried

  • clearing the Google Play Services Cache.
  • Syncing Thread Acces Data in HA Companion app (Troubleshooting)
  • Using a fresh Android device-> installing HA Companion App → syncing Thread data → same problem

Same stick, same problems. Bought a Google Home Speaker which contains also a OTBR. Did, it solve my problems? No. Same problems. So it had to be something on my network side. Eventually I solved it with thanks to Claude. With the Google Home Speaker as OTBR, I put the MG24 aside…

Things to check and what did the trick for me:

  • Does your network support IPv6? Does your HA supports IPv6? Matter over Thread relies heavily on IPv6. There are hints in your log files about that. Remember to activate SLAAC and RA on IPv6 (in your router).

  • Do you have mDNS activated on your network?

I had a difficulty on top, VLAN’s. I had to route traffic (and explicitely some IPv6 mDNS packets) from IoT VLAN (Google Home Speaker) to default VLAN (HA instance).

Good luck!

Thank you!

i just got it working. AI helped me the last 4 days troubleshooting but the final push was good old desperation. I tried to just change random shit.

some bios, some network stuff.. i wrote a list and will Edit the post as soon as i find out what actualy helped me ;D

2 Likes

I finally got around testing for the problem and I was able to narrow it down to 2 things.

  1. I used a static IPv6 Setting in HA → changed it to automatic
  2. USB power Settings in BIOS → sett to “always on”

I hope this helps somebody.