[SOLVED] Failing to install OpenThread Border Router with Sonoff MG24 (HAOS)

Still very new to HA. I have Home Assistant OS (2026.2.1) running in Proxmox (VM), so far with a Zigbee (ConBee II). I’m now trying to add Threads support with a MG24 dongle, and can’t figure it out.

I’ve installed the OpenThread Border Router app, Thread and OpenThread Border Router in Integrations. When I try to put http://core-openthread-border-router:8081 as REST API URL, it fails to connect, and I see a bunch of errors in the app’s log.

Default: mDNSResponder (Engineering Build) (Feb  3 2026 18:11:45) starting
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.16.1
 You are running the latest version of this add-on.
 System: Home Assistant OS 17.0  (amd64 / qemux86-64)
 Home Assistant Core: 2026.2.1
 Home Assistant Supervisor: 2026.02.1
-----------------------------------------------------------
 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
[18:53:29] INFO: Setup OTBR firewall...
[18:53:29] INFO: Migrating OTBR settings if needed...
2026-02-09 18:53:30 homeassistant asyncio[237] DEBUG Using selector: EpollSelector
2026-02-09 18:53:30 homeassistant zigpy.serial[237] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_b89b78917a8bef11975f1fccef8776e9-if00-port0' (baudrate=460800, xonxoff=False, rtscts=True)
2026-02-09 18:53:30 homeassistant serialx.platforms.serial_posix[237] DEBUG Configuring serial port '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_b89b78917a8bef11975f1fccef8776e9-if00-port0'
2026-02-09 18:53:30 homeassistant serialx.platforms.serial_posix[237] DEBUG Configuring serial port: [0, 0, 2147486896, 0, 4100, 4100, [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-02-09 18:53:30 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting low latency mode: True
2026-02-09 18:53:30 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting modem pins: ModemPins[dtr rts]
2026-02-09 18:53:30 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting TIOCMBIS: 0x00000006
2026-02-09 18:53:30 homeassistant zigpy.serial[237] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7f6def49c190>
2026-02-09 18:53:30 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.RESET: 1>, data=b'\x02')
2026-02-09 18:53:30 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-02-09 18:53:30 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-02-09 18:53:30 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-09 18:53:32 homeassistant universal_silabs_flasher.spinel[237] DEBUG Device did not respond to reset, continuing
2026-02-09 18:53:32 homeassistant universal_silabs_flasher.spinel[237] 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-02-09 18:53:32 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:53:32 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:53:32 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-09 18:53:34 homeassistant universal_silabs_flasher.spinel[237] 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-02-09 18:53:34 homeassistant universal_silabs_flasher.spinel[237] 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-02-09 18:53:34 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:53:34 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:53:34 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-09 18:53:36 homeassistant universal_silabs_flasher.spinel[237] 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-02-09 18:53:36 homeassistant universal_silabs_flasher.spinel[237] 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-02-09 18:53:36 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:53:36 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:53:36 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-09 18:53:38 homeassistant universal_silabs_flasher.spinel[237] 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-02-09 18:53:38 homeassistant serialx.descriptor_transport[237] DEBUG Closing at the request of the application
2026-02-09 18:53:38 homeassistant zigpy.serial[237] DEBUG Waiting for serial port to close
2026-02-09 18:53:38 homeassistant serialx.descriptor_transport[237] DEBUG Closing connection: None
2026-02-09 18:53:38 homeassistant serialx.descriptor_transport[237] DEBUG Closing file descriptor 7
2026-02-09 18:54:08 homeassistant serialx.descriptor_transport[237] DEBUG Calling protocol `connection_lost` with exc=None
2026-02-09 18:54:08 homeassistant zigpy.serial[237] 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 223, 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 154, in main
    hwaddr = await get_adapter_hardware_addr(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/bin/migrate_otbr_settings.py", line 101, 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
[18:54:08] 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            
[18:54:08] INFO: OTBR firewall teardown completed.
s6-svlisten1: fatal: /run/s6-rc/servicedirs/otbr-agent failed permanently or its supervisor died
s6-rc: warning: unable to start service otbr-agent: command exited 1
s6-rc: info: service legacy-cont-init: 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: stopping
s6-rc: info: service mdns: stopping
s6-rc: info: service banner successfully stopped
Default: mDNSResponder (Engineering Build) (Feb  3 2026 18:11:45) 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: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
[18:54:08] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
[18:54:12] INFO: Stable mode, enabling mDNSResponder.
[18:54:12] INFO: The otbr-web is disabled.
s6-rc: info: service mdns: starting
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service mdns successfully started
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
[18:54:12] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Feb  3 2026 18:11:45) starting
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.16.1
 You are running the latest version of this add-on.
 System: Home Assistant OS 17.0  (amd64 / qemux86-64)
 Home Assistant Core: 2026.2.1
 Home Assistant Supervisor: 2026.02.1
-----------------------------------------------------------
 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
[18:54:12] INFO: Setup OTBR firewall...
[18:54:12] INFO: Migrating OTBR settings if needed...
2026-02-09 18:54:12 homeassistant asyncio[238] DEBUG Using selector: EpollSelector
2026-02-09 18:54:12 homeassistant zigpy.serial[238] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_b89b78917a8bef11975f1fccef8776e9-if00-port0' (baudrate=460800, xonxoff=False, rtscts=True)
2026-02-09 18:54:12 homeassistant serialx.platforms.serial_posix[238] DEBUG Configuring serial port '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_b89b78917a8bef11975f1fccef8776e9-if00-port0'
2026-02-09 18:54:12 homeassistant serialx.platforms.serial_posix[238] DEBUG Configuring serial port: [0, 0, 2147486896, 0, 4100, 4100, [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-02-09 18:54:12 homeassistant serialx.platforms.serial_posix[238] DEBUG Setting low latency mode: True
2026-02-09 18:54:12 homeassistant serialx.platforms.serial_posix[238] DEBUG Setting modem pins: ModemPins[dtr rts]
2026-02-09 18:54:12 homeassistant serialx.platforms.serial_posix[238] DEBUG Setting TIOCMBIS: 0x00000006
2026-02-09 18:54:12 homeassistant zigpy.serial[238] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7f89da09c410>
2026-02-09 18:54:12 homeassistant universal_silabs_flasher.spinel[238] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.RESET: 1>, data=b'\x02')
2026-02-09 18:54:12 homeassistant universal_silabs_flasher.spinel[238] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-02-09 18:54:12 homeassistant serialx.descriptor_transport[238] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-02-09 18:54:12 homeassistant serialx.descriptor_transport[238] DEBUG Sent 7 of 7 bytes
2026-02-09 18:54:14 homeassistant universal_silabs_flasher.spinel[238] DEBUG Device did not respond to reset, continuing
2026-02-09 18:54:14 homeassistant universal_silabs_flasher.spinel[238] 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-02-09 18:54:14 homeassistant universal_silabs_flasher.spinel[238] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:54:14 homeassistant serialx.descriptor_transport[238] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:54:14 homeassistant serialx.descriptor_transport[238] DEBUG Sent 7 of 7 bytes
2026-02-09 18:54:16 homeassistant universal_silabs_flasher.spinel[238] 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-02-09 18:54:16 homeassistant universal_silabs_flasher.spinel[238] 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-02-09 18:54:16 homeassistant universal_silabs_flasher.spinel[238] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:54:16 homeassistant serialx.descriptor_transport[238] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:54:16 homeassistant serialx.descriptor_transport[238] DEBUG Sent 7 of 7 bytes
2026-02-09 18:54:18 homeassistant universal_silabs_flasher.spinel[238] 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-02-09 18:54:18 homeassistant universal_silabs_flasher.spinel[238] 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-02-09 18:54:18 homeassistant universal_silabs_flasher.spinel[238] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:54:18 homeassistant serialx.descriptor_transport[238] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-09 18:54:18 homeassistant serialx.descriptor_transport[238] DEBUG Sent 7 of 7 bytes
2026-02-09 18:54:20 homeassistant universal_silabs_flasher.spinel[238] 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-02-09 18:54:20 homeassistant serialx.descriptor_transport[238] DEBUG Closing at the request of the application
2026-02-09 18:54:20 homeassistant zigpy.serial[238] DEBUG Waiting for serial port to close
2026-02-09 18:54:20 homeassistant serialx.descriptor_transport[238] DEBUG Closing connection: None
2026-02-09 18:54:20 homeassistant serialx.descriptor_transport[238] DEBUG Closing file descriptor 7
2026-02-09 18:54:20 homeassistant serialx.descriptor_transport[238] DEBUG Closing at the request of the application
2026-02-09 18:54:20 homeassistant zigpy.serial[238] DEBUG Waiting for serial port to close
2026-02-09 18:54:20 homeassistant serialx.descriptor_transport[238] DEBUG Closing connection: None
2026-02-09 18:54:20 homeassistant serialx.descriptor_transport[238] DEBUG Closing file descriptor 7
2026-02-09 18:54:50 homeassistant serialx.descriptor_transport[238] DEBUG Calling protocol `connection_lost` with exc=None
2026-02-09 18:54:50 homeassistant zigpy.serial[238] 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 223, 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 154, in main
    hwaddr = await get_adapter_hardware_addr(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/bin/migrate_otbr_settings.py", line 101, 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
[18:54:50] 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            
[18:54:51] INFO: OTBR firewall teardown completed.
s6-svlisten1: fatal: /run/s6-rc/servicedirs/otbr-agent failed permanently or its 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
Default: mDNSResponder (Engineering Build) (Feb  3 2026 18:11:45) stopping
s6-rc: info: service banner successfully stopped
/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 legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
[18:54:51] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
[18:54:54] INFO: Stable mode, enabling mDNSResponder.
[18:54:54] INFO: The otbr-web is disabled.
s6-rc: info: service mdns: starting
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service mdns successfully started
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
[18:54:54] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Feb  3 2026 18:11:45) starting

Forgot to mention that I flashed the Openthread firmware, since it had Zigbee by default.

Looks like I finally managed to make it work by disabling flow control.

Now I see a network in Threads, Matter says is online, but still can’t connect the freaking IKEA button (BILRESA).

Hey, i am having exactly the same problem. What did you use as URL for ‘Provide URL for the OpenThread Border Router’s REST API’? I tried http://core-openthread-border-router:8081 but that doesn’t work. I also have the MG24 and flashed it from Zigbee tot Thread.

Hi
@PrintBoaz do you get a JSON with 404 in it in the browser when you open your link? If not, something else is wrong.

@flodolo I had to disable my firewall for pairing, however, still not sure what exactly got blocked (mdns is enabled). Also does the thread integration in HA show the border router correctly?