OpenThread Border Router running issues

Hi,
after a long time - probably one year using SMLight SLZB07p7 - USB Dongle - my OTBR can’t start:

s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[10:08:49] INFO: Setup OTBR firewall...
[10:08:50] INFO: Migrating OTBR settings if needed...
2025-10-30 10:08:50 homeassistant asyncio[226] DEBUG Using selector: EpollSelector
2025-10-30 10:08:50 homeassistant zigpy.serial[226] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_4cdc2b8ba473ed118a3b66eefdf7b791-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2025-10-30 10:08:50 homeassistant zigpy.serial[226] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7f9d6d02d0>, Serial<id=0x7f9d420ac0, open=True>(port='/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_4cdc2b8ba473ed118a3b66eefdf7b791-if00-port0', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-10-30 10:08:50 homeassistant universal_silabs_flasher.spinel[226] 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')
2025-10-30 10:08:50 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 10:08:51 homeassistant universal_silabs_flasher.spinel[226] 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 4)
2025-10-30 10:08:51 homeassistant universal_silabs_flasher.spinel[226] 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')
2025-10-30 10:08:51 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 10:08:52 homeassistant universal_silabs_flasher.spinel[226] 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 4)
2025-10-30 10:08:52 homeassistant universal_silabs_flasher.spinel[226] 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')
2025-10-30 10:08:52 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 10:08:53 homeassistant universal_silabs_flasher.spinel[226] 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 4)
2025-10-30 10:08:54 homeassistant universal_silabs_flasher.spinel[226] 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')
2025-10-30 10:08:54 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 10:08:55 homeassistant universal_silabs_flasher.spinel[226] 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 4 of 4)
2025-10-30 10:08:55 homeassistant zigpy.serial[226] DEBUG Waiting for serial port to close
2025-10-30 10:08:55 homeassistant zigpy.serial[226] DEBUG Connection lost: None
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 213, in send_frame
    return await asyncio.shield(future)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/bin/migrate_otbr_settings.py", line 189, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/local/bin/migrate_otbr_settings.py", line 126, in main
    hwaddr = await get_adapter_hardware_addr(args.adapter, args.baudrate)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/migrate_otbr_settings.py", line 84, in get_adapter_hardware_addr
    rsp = await protocol.send_command(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 245, in send_command
    return await self.send_frame(frame, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 212, in send_frame
    async with asyncio_timeout(timeout):
  File "/usr/lib/python3.11/asyncio/timeouts.py", line 98, in __aexit__
    raise TimeoutError
TimeoutError
[10:08:55] 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            
[10:08:55] 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
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.
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:42:47) 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
[10:08:56] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
[11:01:27] 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:01:29] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:42:47) starting
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.15.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 16.2  (aarch64 / yellow)
 Home Assistant Core: 2025.10.4
 Home Assistant Supervisor: 2025.10.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
[11:01:37] INFO: Setup OTBR firewall...
[11:01:37] INFO: Migrating OTBR settings if needed...
2025-10-30 11:01:38 homeassistant asyncio[227] DEBUG Using selector: EpollSelector
2025-10-30 11:01:38 homeassistant zigpy.serial[227] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_4cdc2b8ba473ed118a3b66eefdf7b791-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2025-10-30 11:01:38 homeassistant zigpy.serial[227] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7f99e702d0>, Serial<id=0x7f99bc0b20, open=True>(port='/dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_4cdc2b8ba473ed118a3b66eefdf7b791-if00-port0', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-10-30 11:01:38 homeassistant universal_silabs_flasher.spinel[227] 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')
2025-10-30 11:01:38 homeassistant universal_silabs_flasher.spinel[227] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 11:01:39 homeassistant universal_silabs_flasher.spinel[227] 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 4)
2025-10-30 11:01:39 homeassistant universal_silabs_flasher.spinel[227] 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')
2025-10-30 11:01:39 homeassistant universal_silabs_flasher.spinel[227] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 11:01:40 homeassistant universal_silabs_flasher.spinel[227] 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 4)
2025-10-30 11:01:40 homeassistant universal_silabs_flasher.spinel[227] 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')
2025-10-30 11:01:40 homeassistant universal_silabs_flasher.spinel[227] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 11:01:41 homeassistant universal_silabs_flasher.spinel[227] 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 4)
2025-10-30 11:01:41 homeassistant universal_silabs_flasher.spinel[227] 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')
2025-10-30 11:01:41 homeassistant universal_silabs_flasher.spinel[227] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-10-30 11:01:42 homeassistant universal_silabs_flasher.spinel[227] 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 4 of 4)
2025-10-30 11:01:42 homeassistant zigpy.serial[227] DEBUG Waiting for serial port to close
2025-10-30 11:01:42 homeassistant zigpy.serial[227] DEBUG Connection lost: None
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 213, in send_frame
    return await asyncio.shield(future)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/bin/migrate_otbr_settings.py", line 189, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/local/bin/migrate_otbr_settings.py", line 126, in main
    hwaddr = await get_adapter_hardware_addr(args.adapter, args.baudrate)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/migrate_otbr_settings.py", line 84, in get_adapter_hardware_addr
    rsp = await protocol.send_command(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 245, in send_command
    return await self.send_frame(frame, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 212, in send_frame
    async with asyncio_timeout(timeout):
  File "/usr/lib/python3.11/asyncio/timeouts.py", line 98, in __aexit__
    raise TimeoutError
TimeoutError
[11:01:43] 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:01:43] 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
s6-rc: info: service banner successfully stopped
Default: mDNSResponder (Engineering Build) (Oct 28 2025 07:42:47) 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 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:01:43] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped

I have tried to unplug the USB dongle and succesfully flashed it with the PC directly from SMLight webpage - with Thread Firmware.
Restarted, Shut down for a while, started the HA again. Uninstalled the Addon, set the correct parameters

device: >-
  /dev/serial/by-id/usb-SMLIGHT_SMLIGHT_SLZB-07p7_4cdc2b8ba473ed118a3b66eefdf7b791-if00-port0
baudrate: "460800"
flow_control: false
otbr_log_level: notice
firewall: true
nat64: false

Nothing helps.

  • What else can I try to repiar it?
  • how to diagnose it further?
    Thank you,
    Michal, Slovakia

Silicon Labs Flasher output:

-----------------------------------------------------------

Add-on: Silicon Labs Flasher

Silicon Labs firmware flasher add-on

-----------------------------------------------------------

Add-on version: 0.4.0

You are running the latest version of this add-on.

System: Home Assistant OS 16.2 (aarch64 / yellow)

Home Assistant Core: 2025.10.4

Home Assistant Supervisor: 2025.10.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 universal-silabs-flasher: starting

[03:35:05] INFO: The selected serial port is not a USB device.

[03:35:05] WARNING: No firmware found for the selected device, assuming firmware is installed.

[03:35:05] INFO: universal-silabs-flasher-up script exited with code 0

s6-rc: info: service universal-silabs-flasher successfully started

s6-rc: info: service legacy-services: starting

s6-rc: info: service legacy-services successfully started

s6-rc: info: service legacy-services: stopping

s6-rc: info: service legacy-services successfully stopped

s6-rc: info: service universal-silabs-flasher: stopping

s6-rc: info: service universal-silabs-flasher successfully stopped

s6-rc: info: service banner: stopping

s6-rc: info: service banner successfully stopped

s6-rc: info: service legacy-cont-init: 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

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 fix-attrs successfully started

s6-rc: info: service legacy-cont-init: starting

s6-rc: info: service legacy-cont-init successfully started

s6-rc: info: service banner: starting

I have the same issue - although my slzb-mr3 is connected over ethernet. I restored the last backup of the addon when the update was given to 2.15.0. This has resolved the issue for me.

1 Like

Thank you, I have learned how to restore the addon from backup, restored the previous version of OTBR and it works!
You helped me, thanks again!

Michal,
Slovakia

Same issue here. Why would these updates break slzb-mrN ? 2.15.2

  • Add baudrate list option 1000000 (Nordic Semiconductor nRF Connect SDK firmware)

2.15.1

  • Make radio spinel recovery more reliable by clearing source match tables before restoring

I have the same issue with a SLZB-MR3U stick. Can’t go back to a older add-on version via a backup, it’s a new home assistant installation.

Slzb07p7 - last update sorted it out.