I’m experiencing the same issue, both with a ZBT-2 USB and a SLZB over IP.
OTBR Logs:
[11:07:54] INFO: Stable mode, enabling mDNSResponder.
[11:07:55] 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
[11:07:55] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jan 28 2026 17:15:03) starting
-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.16.0
You are running the latest version of this add-on.
System: Home Assistant OS 17.0 (amd64 / qemux86-64)
Home Assistant Core: 2026.1.3
Home Assistant Supervisor: 2026.01.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
[11:07:55] INFO: Setup OTBR firewall...
[11:07:55] INFO: Migrating OTBR settings if needed...
2026-02-03 11:07:56 homeassistant asyncio[237] DEBUG Using selector: EpollSelector
2026-02-03 11:07:56 homeassistant zigpy.serial[237] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_DCB4D90E6C58-if00' (baudrate=460800, xonxoff=False, rtscts=False)
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Configuring serial port '/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_DCB4D90E6C58-if00'
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Configuring serial port: [0, 0, 3248, 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-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting low latency mode: True
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting modem pins: ModemPins[!dtr !rts]
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG TIOCMBIC: 0x00000006
2026-02-03 11:07:56 homeassistant zigpy.serial[237] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7f22bbaa41d0>
2026-02-03 11:07:56 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-03 11:07:56 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Event loop woke up reader
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Received b'\xa0T}:~'
2026-02-03 11:07:56 homeassistant universal_silabs_flasher.spinel[237] DEBUG Failed to decode HDLC chunk bytearray(b'\xa0T}:')
2026-02-03 11:07:58 homeassistant universal_silabs_flasher.spinel[237] DEBUG Device did not respond to reset, continuing
2026-02-03 11:07:58 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-03 11:07:58 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:07:58 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:07:58 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:08:00 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-03 11:08:00 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-03 11:08:00 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:00 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:00 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:08:02 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-03 11:08:02 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-03 11:08:02 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:02 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:02 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:08:04 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-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Closing at the request of the application
2026-02-03 11:08:04 homeassistant zigpy.serial[237] DEBUG Waiting for serial port to close
2026-02-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Closing connection: None
2026-02-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Closing file descriptor 7
2026-02-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Calling protocol `connection_lost` with exc=None
2026-02-03 11:08:04 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>...
)
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
[11:07:55] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jan 28 2026 17:15:03) starting
-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.16.0
You are running the latest version of this add-on.
System: Home Assistant OS 17.0 (amd64 / qemux86-64)
Home Assistant Core: 2026.1.3
Home Assistant Supervisor: 2026.01.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
[11:07:55] INFO: Setup OTBR firewall...
[11:07:55] INFO: Migrating OTBR settings if needed...
2026-02-03 11:07:56 homeassistant asyncio[237] DEBUG Using selector: EpollSelector
2026-02-03 11:07:56 homeassistant zigpy.serial[237] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_DCB4D90E6C58-if00' (baudrate=460800, xonxoff=False, rtscts=False)
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Configuring serial port '/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_DCB4D90E6C58-if00'
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Configuring serial port: [0, 0, 3248, 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-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting low latency mode: True
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG Setting modem pins: ModemPins[!dtr !rts]
2026-02-03 11:07:56 homeassistant serialx.platforms.serial_posix[237] DEBUG TIOCMBIC: 0x00000006
2026-02-03 11:07:56 homeassistant zigpy.serial[237] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7f22bbaa41d0>
2026-02-03 11:07:56 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-03 11:07:56 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Event loop woke up reader
2026-02-03 11:07:56 homeassistant serialx.descriptor_transport[237] DEBUG Received b'\xa0T}:~'
2026-02-03 11:07:56 homeassistant universal_silabs_flasher.spinel[237] DEBUG Failed to decode HDLC chunk bytearray(b'\xa0T}:')
2026-02-03 11:07:58 homeassistant universal_silabs_flasher.spinel[237] DEBUG Device did not respond to reset, continuing
2026-02-03 11:07:58 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-03 11:07:58 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:07:58 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:07:58 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:08:00 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-03 11:08:00 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-03 11:08:00 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:00 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:00 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:08:02 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-03 11:08:02 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-03 11:08:02 homeassistant universal_silabs_flasher.spinel[237] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:02 homeassistant serialx.descriptor_transport[237] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-02-03 11:08:02 homeassistant serialx.descriptor_transport[237] DEBUG Sent 7 of 7 bytes
2026-02-03 11:08:04 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-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Closing at the request of the application
2026-02-03 11:08:04 homeassistant zigpy.serial[237] DEBUG Waiting for serial port to close
2026-02-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Closing connection: None
2026-02-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Closing file descriptor 7
2026-02-03 11:08:04 homeassistant serialx.descriptor_transport[237] DEBUG Calling protocol `connection_lost` with exc=None
2026-02-03 11:08:04 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
[11:08:04] 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
[11:08:04] 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
/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) (Jan 28 2026 17:15:03) 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
[11:08:04] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped