Unable to configure ZBT-1 as Thread Border router

My setup:
Gigabyte GB-BMCE-5105, running HAOS natively.

  • Core: 2025.3.4
  • Supervisor: 2025.03.3
  • Operating System: 15.0
  • Frontend: 20250306.0
    Running Zigbee2MQTT over a Sonoff USB dongle (USB0)
    So far so good. Now I wanted to try out the Thread functionality. So I purchased the ZBT-1.
    But I failed to configure it and now I am really clueless.
    Plugged it in (with extension cable) to the USB1 port.
    Checked Settings/Hardware and the new stick was identified.

    Went to Devices&Services.
    Under the Discovered section, I could find Home Assistant Connect ZBT-1
    Clicked the Add button and selected Thread as firmware.
    Then it tried to install/configure the OpenThread Border Router add-on.
    After awhile it errored out with the same message as in this thread:
    Configure ZBT-1 is not possible

The OpenThreadRouter log says:

OpenThreadRouter - Log

e[34m-----------------------------------------------------------e[0m
e[34m Add-on: OpenThread Border Routere[0m
e[34m OpenThread Border Router add-one[0m
e[34m-----------------------------------------------------------e[0m
e[34m Add-on version: 2.13.0e[0m
e[32m You are running the latest version of this add-on.e[0m
e[34m System: Home Assistant OS 15.0  (amd64 / generic-x86-64)e[0m
e[34m Home Assistant Core: 2025.3.4e[0m
e[34m Home Assistant Supervisor: 2025.03.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 universal-silabs-flasher: starting
[12:40:20] INFO: e[32mChecking /dev/ttyUSB1 identifying Home Assistant Connect ZBT-1 from Nabu Casa.e[0m
[12:40:20] INFO: e[32mStarting universal-silabs-flasher with /dev/ttyUSB1e[0m
2025-03-25 12:40:20.746 homeassistant universal_silabs_flasher.flash INFO Extracted GBL metadata: NabuCasaMetadata(metadata_version=2, sdk_version='4.4.4', ezsp_version=None, ot_rcp_version='SL-OPENTHREAD/2.4.4.0_GitHub-7074a43e4' (2.4.4.0), cpc_version=None, fw_type=<FirmwareImageType.OPENTHREAD_RCP: 'openthread_rcp'>, fw_variant=None, baudrate=460800)
2025-03-25 12:40:20.746 homeassistant universal_silabs_flasher.flasher INFO Probing ApplicationType.GECKO_BOOTLOADER at 115200 baud
2025-03-25 12:40:22.753 homeassistant universal_silabs_flasher.flasher INFO Probing ApplicationType.SPINEL at 460800 baud
2025-03-25 12:40:23.872 homeassistant universal_silabs_flasher.flasher INFO Detected ApplicationType.SPINEL, version 'SL-OPENTHREAD/2.4.4.0_GitHub-7074a43e4' (2.4.4.0) at 460800 baudrate (bootloader baudrate None)
2025-03-25 12:40:23.873 homeassistant universal_silabs_flasher.flash INFO Firmware version 'SL-OPENTHREAD/2.4.4.0_GitHub-7074a43e4' (2.4.4.0) is flashed, not re-installing
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service otbr-agent: starting
[12:40:24] INFO: e[32mSetup OTBR firewall...e[0m
[12:40:24] INFO: e[32mStarting otbr-agent...e[0m
[NOTE]-AGENT---: Running 0.3.0-b067e5ac-dirty
[NOTE]-AGENT---: Thread version: 1.3.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/ttyUSB1?uart-baudrate=460800&uart-flow-control
[NOTE]-AGENT---: Radio URL: trel://enp3s0
[NOTE]-ILS-----: Infra link selected: enp3s0
49d.17:12:29.570 [C] P-SpinelDrive-: Software reset co-processor successfully
00:00:00.053 [N] RoutingManager: BR ULA prefix: fdbe:66e2:bb3::/48 (loaded)
00:00:00.053 [N] RoutingManager: Local on-link prefix: fd97:ba50:dd34:e75d::/64
00:00:00.084 [N] Mle-----------: Role disabled -> detached
00:00:00.107 [N] P-Netif-------: Changing interface state to up.
00:00:00.117 [W] P-Netif-------: Failed to process request#2: No such process
00:00:00.117 [W] P-Netif-------: Failed to process request#6: No such process
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-configure: starting
Done
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
[12:40:25] 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:01.631 [W] P-RadioSpinel-: Unexpected Spinel transaction message: 3
00:00:01.631 [W] P-RadioSpinel-: Error processing response: Drop
00:00:02.734 [W] P-RadioSpinel-: Unexpected Spinel transaction message: 3
00:00:02.734 [W] P-RadioSpinel-: Error processing response: Drop
00:00:03.838 [W] P-RadioSpinel-: Unexpected Spinel transaction message: 3
00:00:03.838 [W] P-RadioSpinel-: Error processing response: Drop
00:00:04.942 [W] P-RadioSpinel-: Unexpected Spinel transaction message: 3
00:00:04.942 [W] P-RadioSpinel-: Error processing response: Drop
00:00:26.900 [N] Mle-----------: RLOC16 c000 -> fffe
00:00:27.556 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
00:00:34.056 [N] RouterTable---: Allocate router id 48
00:00:34.056 [N] Mle-----------: RLOC16 fffe -> c000
00:00:34.059 [N] Mle-----------: Role detached -> leader
00:00:34.060 [N] Mle-----------: Partition ID 0x2868228c
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!
00:00:38.167 [W] DuaManager----: Failed to perform next registration: NotFound
00:01:13.158 [N] TrelLink------: Peer 2abf1998e70f03f7 rx sock-addr differs the previously saved one
00:01:13.158 [N] TrelLink------:     Rcvd sock-addr:[fdb3:ce28:a001:2843:140b:9c21:d6b7:63d4]:50580
00:01:13.158 [N] TrelLink------:     Prev sock-addr:[fdb3:ce28:a001:2843:2:fd72:677c:678f]:50580
00:01:13.158 [N] TrelLink------: Updating the peer sock-addr to the newly received

Any help or hints are greatly appreciated. Thank you

FYI - found the official thread setup instructions wrong for the ZBT-1; the ZBT-1 shows up as a device and that’s where the user selects it as thread or zigbee firmware. I then had to go back to “Settings > System > Hardware.” and “Home Assistant Connect ZBT-1” shows up now and user must select again thread or zigbee. At this point HA automatically installs the “Open Thread Border Router” add-on. However, the “Open Thread Border Router” add-on couldn’t find the ZBT-1. But listed in the “Open Thread Border Router” add-on documentation tab that the add-on configuration must be set to “/dev/ttyAMA1” for Home Assistant Yellow but this is only if using the internal HA yellow radio; I wanted the ZBT-1 radio which has a path that looks something like this:

/dev/serial/by-id/usb-Nabu_Casa_Home_Assistant_Connect_ZBT-1_527f1fb5ad38ef11bc0b357af3d9b1e5-if00-port0. So I think I maybe just needed to wait, or flash it via the “Silicon Labs Flasher” add-on.

Since I accidentally flashed the internal radio wrong, I disabled Zigbee and flashed the internal radio “/dev/ttyAMA1” without the ZBT-1 connected. I then restarted Zigbee.

Firmware for the ZBT-1 is supposed to automatically update by the “Open Thread Border Router” when the ZBT-1 is in thread mode (More about that here). However, it was failing. Disabled “Open Thread Border Router” add-on. Installed “Silicon Labs Flasher” add-on (install available via link at this page here). Make sure any integrations/add-ons that use the radio are disabled before flashing. Configured the flasher add-on to access the ZBT-1 via “/dev/serial/by-id/usb-Nabu_Casa_Home_Assistant_Connect_ZBT-1_527f1fb5ad38ef11bc0b357af3d9b1e5-if00-port0”.

I then enabled/re-started “Open Thread Border Router” add-on, thread and matter integrations and now ZBT-1 is showing firmware “up-to-date” with OpenThread RCP 2.4.4.0 (via SDK version 4.4.4 - full github filename: yellow_openthread_rcp_2.4.4.0_GitHub-7074a43e4_gsdk_4.4.4.gbl). Don’t forget to go back to any of the add-ons and enable “Auto update” if that’s your preference.

1 Like

You are mixing the two radios:

  • /dev/ttyAMA1 is the on-board radio of Yellow, which ALSO can be used for Thread
  • The ZBT-1 is ALWAYS /dev/ttyUSB<something>.

The things changes recently, so the original post is already outdated, and documentation is being updated as well.

1 Like

Ya, I figured all that out eventually and edited the above. Perplexity was saying both radios shared /dev/ttyAMA1 because they are both from Silicon Labs. AI is funny sometimes! Apparently the recommended path is a persistent path like /dev/serial/by-id/usb-Nabu_Casa_Home_Assistant_Connect_ZBT-1_. I think maybe I didn’t wait long enough for Open Border Router or ZBT-1 needed a manual flash before Open Border router used it. It’s working now. Internal radio is zigbee, ZBT-1 is thread.