Open Thread Border Router Addon not connecting to Sonoff Dongle MG24

Hello all,

i am trying to get a Thread Boarder Router Running in Homeassistant, that is running on a Raspberry in Homeassistant OS. I have a Sonoff Dongle Plus MG24. I flashed the OpenThread Firmware to the Dongle using the webflash tool. I installed the addon and did the configuration with choosing the MG24 as the correct device. But when i start the addon, it obviously can not connect correctly to the dongle.

This is the protocoll of the addon...

Does anybody has a hint, what might be wrong?

-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.16.8
 You are running the latest version of this add-on.
 System: Home Assistant OS 17.3  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2026.5.1
 Home Assistant Supervisor: 2026.05.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[23:22:32] INFO: Setup OTBR firewall...
[23:22:32] INFO: Migrating OTBR settings if needed...
2026-05-15 23:22:32 homeassistant asyncio[241] DEBUG Using selector: EpollSelector
2026-05-15 23:22:32 homeassistant zigpy.serial[241] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_8c7ef41ce99aef11a268ad9061ce3355-if00-port0' (baudrate=57600, xonxoff=False, rtscts=True)
2026-05-15 23:22:32 homeassistant serialx.platforms.serial_posix[241] DEBUG Configuring serial port '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_8c7ef41ce99aef11a268ad9061ce3355-if00-port0'
2026-05-15 23:22:32 homeassistant serialx.platforms.serial_posix[241] DEBUG Configuring serial port: [0, 0, 2147486896, 0, 4097, 4097, [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-05-15 23:22:32 homeassistant serialx.platforms.serial_posix[241] DEBUG Setting low latency mode: True
2026-05-15 23:22:32 homeassistant serialx.platforms.serial_posix[241] DEBUG Setting modem pins: ModemPins[dtr rts]
2026-05-15 23:22:32 homeassistant serialx.platforms.serial_posix[241] DEBUG Setting TIOCMBIS: 0x00000006
2026-05-15 23:22:32 homeassistant zigpy.serial[241] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7fa1880890>
2026-05-15 23:22:32 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.RESET: 1>, data=b'\x02')
2026-05-15 23:22:32 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-05-15 23:22:32 homeassistant serialx.descriptor_transport[241] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-05-15 23:22:32 homeassistant serialx.descriptor_transport[241] DEBUG Sent 7 of 7 bytes
2026-05-15 23:22:34 homeassistant universal_silabs_flasher.spinel[241] DEBUG Device did not respond to reset, continuing
2026-05-15 23:22:34 homeassistant universal_silabs_flasher.spinel[241] 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-05-15 23:22:34 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-05-15 23:22:34 homeassistant serialx.descriptor_transport[241] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-05-15 23:22:34 homeassistant serialx.descriptor_transport[241] DEBUG Sent 7 of 7 bytes
2026-05-15 23:22:36 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 1 of 3)
2026-05-15 23:22:37 homeassistant universal_silabs_flasher.spinel[241] 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-05-15 23:22:37 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-05-15 23:22:37 homeassistant serialx.descriptor_transport[241] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-05-15 23:22:37 homeassistant serialx.descriptor_transport[241] DEBUG Sent 7 of 7 bytes
2026-05-15 23:22:39 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 2 of 3)
2026-05-15 23:22:39 homeassistant universal_silabs_flasher.spinel[241] 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-05-15 23:22:39 homeassistant universal_silabs_flasher.spinel[241] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-05-15 23:22:39 homeassistant serialx.descriptor_transport[241] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-05-15 23:22:39 homeassistant serialx.descriptor_transport[241] DEBUG Sent 7 of 7 bytes
2026-05-15 23:22:41 homeassistant universal_silabs_flasher.spinel[241] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 3 of 3)
2026-05-15 23:22:41 homeassistant serialx.descriptor_transport[241] DEBUG Closing at the request of the application
2026-05-15 23:22:41 homeassistant zigpy.serial[241] DEBUG Waiting for serial port to close
2026-05-15 23:22:41 homeassistant serialx.descriptor_transport[241] DEBUG Closing connection: None
2026-05-15 23:22:41 homeassistant serialx.descriptor_transport[241] DEBUG Closing file descriptor 7
2026-05-15 23:23:11 homeassistant serialx.descriptor_transport[241] DEBUG Calling protocol `connection_lost` with exc=None
2026-05-15 23:23:11 homeassistant zigpy.serial[241] DEBUG Connection lost: None
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/dist-packages/universal_silabs_flasher/spinel.py", line 260, in send_frame
    return await asyncio.shield(future)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/local/bin/migrate_otbr_settings.py", line 228, in <module>
    asyncio.run(main())
    ~~~~~~~~~~~^^^^^^^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 195, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/usr/local/bin/migrate_otbr_settings.py", line 156, in main
    hwaddr = await get_adapter_hardware_addr(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/bin/migrate_otbr_settings.py", line 103, in get_adapter_hardware_addr
    rsp = await protocol.send_command(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/dist-packages/universal_silabs_flasher/spinel.py", line 292, in send_command
    return await self.send_frame(frame, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/dist-packages/universal_silabs_flasher/spinel.py", line 259, in send_frame
    async with asyncio_timeout(timeout):
               ~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.13/asyncio/timeouts.py", line 116, in __aexit__
    raise TimeoutError from exc_val
TimeoutError
[23:23:11] WARNING: otbr-agent exited with code 1 (by signal 0).
Chain OTBR_FORWARD_INGRESS (0 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere             PKTTYPE = unicast
DROP       all  --  anywhere             anywhere             match-set otbr-ingress-deny-src src
ACCEPT     all  --  anywhere             anywhere             match-set otbr-ingress-allow-dst dst
DROP       all  --  anywhere             anywhere             PKTTYPE = unicast
ACCEPT     all  --  anywhere             anywhere            
otbr-ingress-deny-src
otbr-ingress-deny-src-swap
otbr-ingress-allow-dst
otbr-ingress-allow-dst-swap
Chain OTBR_FORWARD_EGRESS (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
[23:23:11] INFO: OTBR firewall/NAT64 rules teardown completed.
s6-svlisten: fatal: some services reported permanent failure or their supervisor died
s6-rc: warning: unable to start service otbr-agent: command exited 1
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service banner: stopping
s6-rc: info: service mdns: stopping
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service banner successfully stopped
Default: mDNSResponder (Engineering Build) (May  6 2026 09:56:44) stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: warning: service s6rc-oneshot-runner is marked as essential, not stopping it
[23:23:11] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped

Thanks and kind regards.

I'm not an expert in analysing HA Logs.
But for Matter/Thread you generally have to make sure that your Home(WiFi) Router has IPv6 and mDNS fully enabled.
Then you have to manually enable IPv6 in the Terminal: put in
ha docker options --enable-ipv6=true
Then restart HA.
In HA System/Network/ IPv6 has to be set to "automatic"

Give it a try and see if it helps.

Thank you for the reply. I finally managed to get it running.
In the configuration tap of the OTBR Addon the Flow control needs to be disabled and a Baudrate of 460800 has to be set. With this settings i managed to get it running.

1 Like