Replace SkyConnect with SLZB coordinator for Thread Network

I have a setup with OTBR and a SkyConnect stick. The reason I move away from the SkyConnect is to gain placement flexibility since the SLZB is PoE connected and also I am moving to a virtualized platform with automatic failover so I cannot connect devices to the clustered nodes.

Anyway I will need to replace the coordinator. Is there a procedure for this? Can I join the new coordinator to the network and hand over the control with OTBR? Is a process similar to the one in Z2M available where you can copy the IEEE adress and write that to the new stick prior to switching?

Any pointers would be great :smiley: thanks!

I don’t think OTBR uses the IEEE address.

Unless you are using multi-protocol, which is no longer advised.

Not using multiprotocol, dedicated controller.

Then you don’t need to worry about the IEEE address. Add your SLZB to the existing thread network, then remove your Skyconnect from the network.

Or make sure the SLZB uses the same credentials

Not quite sure how to do that, would I need to run 2 OTBR instances in the migration?

A, I have more then 1 HA instance. You can find the thread credentials in /config/.storage/tread.datasets. Just make sure they stay the same.

1 Like

Thanks for the tips. I will try.

You should only have to reconfigure the OTBR to use the SLZB instead of the ZBT-1…

Be aware of firmware needed for the SLZB. AFAIK, HA is suppose to be able to autoupdate firmware for SLZB-07, but you may have to do it yourself for others.
From another user:

I have tried, and I get the OTBR running on the new device. But the only FW I get working is the latest one. Flashing old versions does not work. When OTBR starts with the new stick my network looks like this (on port 8080):

This file has not changed:

âžś .storage diff thread.datasets thread.datasets_backup

Also I can see some available networks:

Any further ideas?

Let’s take a look at the logs from the OTBR.

Lets do that :slight_smile:

Logs from OTBR
s6-rc: info: service mdns successfully stopped
[14:40:24] INFO: e[32mWeb UI and REST API port are exposed, starting otbr-web.e[0m
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
[14:40:24] INFO: e[32mStarting mDNS Responder...e[0m
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
Default: mDNSResponder (Engineering Build) (Jan 14 2025 21:04:03) starting
s6-rc: info: service legacy-cont-init successfully started

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.2  (amd64 / qemux86-64)e[0m
e[34m Home Assistant Core: 2025.6.1e[0m
e[34m Home Assistant Supervisor: 2025.05.5e[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
[14:40:25] INFO: e[32mFlashing firmware is disablede[0m
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service otbr-agent: starting
[14:40:25] INFO: e[32mSetup OTBR firewall...e[0m
[14:40:25] INFO: e[32mStarting otbr-agent...e[0m
72d.19:25:05.052 [C] P-SpinelDrive-: Software reset co-processor successfully
00:00:00.092 [W] P-Netif-------: Failed to process request#2: No such process
00:00:00.093 [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
s6-rc: info: service otbr-web: starting
s6-rc: info: service otbr-web successfully started
[14:40:25] INFO: e[32mStarting otbr-web...e[0m
[INFO]-WEB-----: Running 0.3.0-b067e5ac-dirty
listenAddr not specified, using default ::
[INFO]-WEB-----: Border router web started on wpan0
Done
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
[14: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:20.640 [W] DuaManager----: Failed to perform next registration: NotFound
00:00:33.743 [W] P-RadioSpinel-: Handle transmit done failed: ChannelAccessFailure
00:00:51.073 [W] P-RadioSpinel-: Handle transmit done failed: ChannelAccessFailure
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::f4af:ff:fe0b:d414/vetha974f5f/121
00:01:08.110 [W] P-RadioSpinel-: Handle transmit done failed: ChannelAccessFailure
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service otbr-agent-rest-discovery: stopping
s6-rc: info: service otbr-web: stopping
[CRIT]-WEB-----: Stopping web server
s6-rc: info: service otbr-agent-rest-discovery successfully stopped
s6-rc: info: service otbr-agent-configure: stopping
s6-rc: info: service otbr-agent-configure successfully stopped
[14:46:19] INFO: e[32motbr-web ended with exit code 0 (signal 0)...e[0m
s6-rc: info: service otbr-web successfully stopped
s6-rc: info: service otbr-agent: stopping
[14:46:19] INFO: e[32motbr-agent exited with code 0 (by signal 0).e[0m
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            
[14:46:19] INFO: e[32mOTBR firewall teardown completed.e[0m
s6-rc: info: service otbr-agent successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service universal-silabs-flasher: stopping
s6-rc: info: service mdns: stopping
Default: mDNSResponder (Engineering Build) (Jan 14 2025 21:04:03) stopping
s6-rc: info: service universal-silabs-flasher successfully stopped
s6-rc: info: service banner: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service banner successfully stopped
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
[14:46:19] INFO: e[32mmDNS ended with exit code 4 (signal 0)...e[0m
s6-rc: info: service s6rc-oneshot-runner successfully stopped
s6-rc: info: service mdns successfully stopped
[14:46:23] INFO: e[32mWeb UI and REST API port are exposed, starting otbr-web.e[0m
[14:46:23] INFO: e[32mEnabled socat-otbr-tcp.e[0m
s6-rc: info: service socat-otbr-tcp: starting
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
[14:46:23] INFO: e[32mStarting mDNS Responder...e[0m
Default: mDNSResponder (Engineering Build) (Jan 14 2025 21:04:03) starting
s6-rc: info: service legacy-cont-init successfully started
[14:46:23] INFO: e[32mStarting socat TCP client for OTBR daemon...e[0m
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.2  (amd64 / qemux86-64)e[0m
e[34m Home Assistant Core: 2025.6.1e[0m
e[34m Home Assistant Supervisor: 2025.05.5e[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
[14:46:23] INFO: e[32mFlashing firmware is disablede[0m
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service socat-otbr-tcp successfully started
s6-rc: info: service otbr-agent: starting
[14:46:23] INFO: e[32mSetup OTBR firewall...e[0m
[14:46:23] INFO: e[32mStarting otbr-agent...e[0m
tiocmbic: Inappropriate ioctl for device
72d.19:31:04.244 [C] P-SpinelDrive-: Software reset co-processor successfully
72d.19:31:04.299 [C] P-RadioSpinel-: RCP => [C] Platform------: Reset info: 0x3 (EXT)
72d.19:31:04.299 [C] P-RadioSpinel-: RCP => [C] Platform------: Extended Reset info: 0x301 (PIN)
00:00:00.116 [W] P-Netif-------: Failed to process request#2: No such process
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-configure: starting
s6-rc: info: service otbr-web: starting
s6-rc: info: service otbr-web successfully started
[14:46:25] INFO: e[32mStarting otbr-web...e[0m
[INFO]-WEB-----: Running 0.3.0-b067e5ac-dirty
listenAddr not specified, using default ::
[INFO]-WEB-----: Border router web started on wpan0
Done
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
[14:46: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
[ERR ]-WEB-----: Error is 9
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::c0da:7eff:fed5:d4c/vethf6950a2/125
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::c0da:7eff:fed5:d4c/vethf6950a2/125
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::c0da:7eff:fed5:d4c/vethf6950a2/125
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::c0da:7eff:fed5:d4c/vethf6950a2/125
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::c0da:7eff:fed5:d4c/vethf6950a2/125
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface 10.0.0.10/enp0s18/2
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::5863:d0ff:fe70:5f4d/vetha26cb81/126
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface 10.0.0.10/enp0s18/2
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface 10.0.0.10/enp0s18/2
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface 10.0.0.10/enp0s18/2
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface 10.0.0.10/enp0s18/2
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::103c:30ff:fe2e:58fb/veth0a1572f/127
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::103c:30ff:fe2e:58fb/veth0a1572f/127
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::103c:30ff:fe2e:58fb/veth0a1572f/127
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::103c:30ff:fe2e:58fb/veth0a1572f/127
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::103c:30ff:fe2e:58fb/veth0a1572f/127
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::a8f1:43ff:fe85:600f/vethb067e32/129
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::a8f1:43ff:fe85:600f/vethb067e32/129
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::a8f1:43ff:fe85:600f/vethb067e32/129
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::a8f1:43ff:fe85:600f/vethb067e32/129
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::a8f1:43ff:fe85:600f/vethb067e32/129
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::a8f1:43ff:fe85:600f/vethb067e32/129

Looks like there are a couple of restarts, one without Socat and one with Socat, so not sure why, but I presume the last restart with Socat is the one of interest. Looks like universal-silabs-flasher is running but it has had its flashing firmware config disabled, so it may not be interrogating the SLZB to get an idea of health of the SLZB. Otherwise there isn’t anything else to go on. Maybe enable the flashing firmware to see if the logs reveal any more.

If the first restart also was using the SLZB, the log is showing a tx channel access failures which would account for problems.

Thanks for the help so far! Good pointers :slight_smile: Tried enabling fw update again, but it does not make any difference since it is network connected.

More OTBR Logs
[19:46:37] INFO: Web UI and REST API port are exposed, starting otbr-web.
[19:46:37] INFO: Enabled socat-otbr-tcp.
s6-rc: info: service socat-otbr-tcp: starting
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
[19:46:37] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jan 14 2025 21:04:03) 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
[19:46:37] INFO: Starting socat TCP client for OTBR daemon...
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.13.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 15.2  (amd64 / qemux86-64)
 Home Assistant Core: 2025.6.1
 Home Assistant Supervisor: 2025.06.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 universal-silabs-flasher: starting
[19:46:37] INFO: Network device is selected, skipping firmware flashing
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service socat-otbr-tcp successfully started
s6-rc: info: service otbr-agent: starting
[19:46:38] INFO: Setup OTBR firewall...
[19:46:38] INFO: Starting otbr-agent...
tiocmbic: Inappropriate ioctl for device
73d.00:31:17.603 [C] P-SpinelDrive-: Software reset co-processor successfully
73d.00:31:17.658 [C] P-RadioSpinel-: RCP => [C] Platform------: Reset info: 0x3 (EXT)
73d.00:31:17.658 [C] P-RadioSpinel-: RCP => [C] Platform------: Extended Reset info: 0x301 (PIN)
00:00:00.115 [W] P-Netif-------: Failed to process request#2: No such process
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-configure: starting
s6-rc: info: service otbr-web: starting
s6-rc: info: service otbr-web successfully started
[19:46:38] INFO: Starting otbr-web...
[INFO]-WEB-----: Running 0.3.0-b067e5ac-dirty
listenAddr not specified, using default ::
[INFO]-WEB-----: Border router web started on wpan0
Done
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
[19:46:38] INFO: Successfully sent discovery information to Home Assistant.
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
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started

My worry is that the firmware is not recognized by OTBR … based on this part of the OTBR web interface:

Here are logs with debugging enabled:

Debug logging for OTBR
[19:53:53] INFO: Web UI and REST API port are exposed, starting otbr-web.
[19:53:53] INFO: Enabled socat-otbr-tcp.
s6-rc: info: service socat-otbr-tcp: starting
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
[19:53:53] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jan 14 2025 21:04:03) starting
[19:53:53] INFO: Starting socat TCP client for OTBR daemon...
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.13.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 15.2  (amd64 / qemux86-64)
 Home Assistant Core: 2025.6.1
 Home Assistant Supervisor: 2025.06.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 universal-silabs-flasher: starting
[19:53:53] INFO: Flashing firmware is disabled
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service socat-otbr-tcp successfully started
s6-rc: info: service otbr-agent: starting
[19:53:53] INFO: Setup OTBR firewall...
[19:53:53] INFO: Starting otbr-agent...
[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:///tmp/ttyOTBR?uart-baudrate=460800&uart-init-deassert
[NOTE]-AGENT---: Radio URL: trel://enp0s18
tiocmbic: Inappropriate ioctl for device
[NOTE]-ILS-----: Infra link selected: enp0s18
[INFO]-RCP_HOS-: OpenThread log level changed to 5
73d.00:38:33.096 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:0, cmd:RESET
73d.00:38:33.096 [D] P-SpinelDrive-: Waiting response: key=0
73d.00:38:34.012 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:0, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:RESET_POWER_ON
73d.00:38:34.012 [I] P-SpinelDrive-: co-processor reset: RESET_POWER_ON
73d.00:38:34.012 [C] P-SpinelDrive-: Software reset co-processor successfully
73d.00:38:34.012 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:PROTOCOL_VERSION
73d.00:38:34.012 [D] P-SpinelDrive-: Waiting response: key=1
73d.00:38:34.022 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_IS, key:PROTOCOL_VERSION, major:4, minor:3
73d.00:38:34.022 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:NCP_VERSION
73d.00:38:34.022 [D] P-SpinelDrive-: Waiting response: key=2
73d.00:38:34.033 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_IS, key:NCP_VERSION, version:SL-OPENTHREAD/2.5.2.0_GitHub-1fceb225b; EFR32; Feb 12 2025 08:21:10
73d.00:38:34.033 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:CAPS
73d.00:38:34.033 [D] P-SpinelDrive-: Waiting response: key=5
73d.00:38:34.044 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_IS, key:CAPS, caps:COUNTERS UNSOL_UPDATE_FILTER 802_15_4_2450MHZ_OQPSK CONFIG_RADIO MAC_RAW RCP_API_VERSION RCP_MIN_HOST_API_VERSION RCP_RESET_TO_BOOTLOADER RCP_LOG_CRASH_DUMP OPENTHREAD_LOG_METADATA 
[INFO]-BA------: Ephemeral Key is: disabled during initialization
73d.00:38:34.044 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_GET, key:HWADDR
73d.00:38:34.044 [D] P-RadioSpinel-: Wait response: tid=1 key=8
73d.00:38:34.055 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_IS, key:HWADDR, eui64:bc8d7efffe239a33
73d.00:38:34.055 [D] P-RadioSpinel-: RCP supports crash dump logging. Requesting crash dump.
73d.00:38:34.055 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:2, cmd:PROP_VALUE_SET, key:RCP_LOG_CRASH_DUMP, log-crash-dump
73d.00:38:34.055 [D] P-RadioSpinel-: Wait response: tid=2 key=178
73d.00:38:34.066 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:2, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:OK
73d.00:38:34.066 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:0, cmd:PROP_VALUE_IS, key:STREAM_LOG, level:2, log:[C] Platform------: Reset info: 0x3 (EXT)
73d.00:38:34.066 [C] P-RadioSpinel-: RCP => [C] Platform------: Reset info: 0x3 (EXT)
73d.00:38:34.066 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:0, cmd:PROP_VALUE_IS, key:STREAM_LOG, level:2, log:[C] Platform------: Extended Reset info: 0x301 (PIN)
73d.00:38:34.066 [C] P-RadioSpinel-: RCP => [C] Platform------: Extended Reset info: 0x301 (PIN)
73d.00:38:34.066 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:3, cmd:PROP_VALUE_GET, key:RCP_API_VERSION
73d.00:38:34.066 [D] P-RadioSpinel-: Wait response: tid=3 key=176
73d.00:38:34.077 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:3, cmd:PROP_VALUE_IS, key:RCP_API_VERSION, version:10
73d.00:38:34.077 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:4, cmd:PROP_VALUE_GET, key:RCP_MIN_HOST_API_VERSION
73d.00:38:34.077 [D] P-RadioSpinel-: Wait response: tid=4 key=177
73d.00:38:34.088 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:4, cmd:PROP_VALUE_IS, key:RCP_MIN_HOST_API_VERSION, min-host-version:4
73d.00:38:34.088 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:5, cmd:PROP_VALUE_GET, key:RADIO_CAPS
73d.00:38:34.088 [D] P-RadioSpinel-: Wait response: tid=5 key=4619
73d.00:38:34.099 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:5, cmd:PROP_VALUE_IS, key:RADIO_CAPS, caps:255
73d.00:38:34.099 [D] P-Trel--------: platformTrelInit(aTrelUrl:"trel://enp0s18")
73d.00:38:34.099 [D] P-Trel--------: otSysTrelInit(aInterfaceName:"enp0s18")
[DEBG]-TrelDns-: Initialized on netif "enp0s18"
[DEBG]-TrelDns-: Netif enp0s18 is ready: index = 2
73d.00:38:34.099 [I] P-Netif-------: Sent request#1 to set addr_gen_mode to 1
73d.00:38:34.099 [I] P-Resolver----: Got nameserver #0: 172.30.32.3
00:00:00.001 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:6, cmd:PROP_VALUE_GET, key:PHY_CHAN_SUPPORTED
00:00:00.001 [D] P-RadioSpinel-: Wait response: tid=6 key=34
00:00:00.011 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:6, cmd:PROP_VALUE_IS, key:PHY_CHAN_SUPPORTED, channelMask:0x07fff800
00:00:00.011 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:7, cmd:PROP_VALUE_SET, key:PHY_ENABLED, enabled:1
00:00:00.011 [D] P-RadioSpinel-: Wait response: tid=7 key=32
00:00:00.022 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:7, cmd:PROP_VALUE_IS, key:PHY_ENABLED, enabled:1
00:00:00.022 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:8, cmd:PROP_VALUE_SET, key:MAC_15_4_PANID, panid:0xffff
00:00:00.022 [D] P-RadioSpinel-: Wait response: tid=8 key=54
00:00:00.033 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:8, cmd:PROP_VALUE_IS, key:MAC_15_4_PANID, panid:0xffff
00:00:00.033 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:9, cmd:PROP_VALUE_SET, key:MAC_15_4_SADDR, saddr:0x0000
00:00:00.033 [D] P-RadioSpinel-: Wait response: tid=9 key=53
00:00:00.044 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:9, cmd:PROP_VALUE_IS, key:MAC_15_4_SADDR, saddr:0x0000
00:00:00.044 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:10, cmd:PROP_VALUE_GET, key:PHY_RX_SENSITIVITY
00:00:00.044 [D] P-RadioSpinel-: Wait response: tid=10 key=39
00:00:00.055 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:10, cmd:PROP_VALUE_IS, key:PHY_RX_SENSITIVITY, sensitivity:-100
00:00:00.055 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:11, cmd:PROP_VALUE_SET, key:RCP_MAC_KEY, keyIdMode:8, keyId:1, prevKey:***, currKey:***, nextKey:***
00:00:00.055 [D] P-RadioSpinel-: Wait response: tid=11 key=2048
00:00:00.066 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:11, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:OK
00:00:00.066 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:12, cmd:PROP_VALUE_SET, key:MAC_15_4_LADDR, laddr:b2f7b20b2c68118c
00:00:00.066 [D] P-RadioSpinel-: Wait response: tid=12 key=52
00:00:00.077 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:12, cmd:PROP_VALUE_IS, key:MAC_15_4_LADDR, laddr:b2f7b20b2c68118c
00:00:00.077 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:13, cmd:PROP_VALUE_SET, key:MAC_15_4_SADDR, saddr:0xfffe
00:00:00.077 [D] P-RadioSpinel-: Wait response: tid=13 key=53
00:00:00.088 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:13, cmd:PROP_VALUE_IS, key:MAC_15_4_SADDR, saddr:0xfffe
00:00:00.088 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:14, cmd:PROP_VALUE_SET, key:MAC_SRC_MATCH_SHORT_ADDRESSES, saddr:none
00:00:00.088 [D] P-RadioSpinel-: Wait response: tid=14 key=4868
00:00:00.099 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:14, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:OK
00:00:00.099 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:15, cmd:PROP_VALUE_SET, key:MAC_SRC_MATCH_EXTENDED_ADDRESSES, extaddr:none
00:00:00.099 [D] P-RadioSpinel-: Wait response: tid=15 key=4869
00:00:00.110 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:15, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:OK
00:00:00.110 [I] CslTxScheduler: Set frame request ahead: 7605 usec
00:00:00.110 [I] ChildSupervsn-: Timeout: 0 -> 190
00:00:00.110 [D] P-Trel--------: PrepareSocket()
[DEBG]-TrelDns-: Start browsing _trel._udp services ...
00:00:00.110 [I] TrelInterface-: Enabled interface, local port:48117
00:00:00.110 [I] RoutingManager: Initializing - InfraIfIndex:2
00:00:00.110 [I] InfraIf-------: Init infra netif 2
00:00:00.110 [I] Settings------: Read BrUlaPrefix fdd8:1204:d2c1::/48
00:00:00.110 [N] RoutingManager: BR ULA prefix: fdd8:1204:d2c1::/48 (loaded)
00:00:00.110 [I] RoutingManager: Generated local OMR prefix: fdd8:1204:d2c1:1::/64
00:00:00.110 [I] RoutingManager: Generated local NAT64 prefix: fdd8:1204:d2c1:2:0:0::/96
00:00:00.110 [N] RoutingManager: Local on-link prefix: fdde:ad00:beef:cafe::/64
00:00:00.110 [I] InfraIf-------: State changed: NOT RUNNING -> RUNNING
00:00:00.110 [I] RoutingManager: Enabling
00:00:00.110 [I] Nat64---------: IPv4 CIDR for NAT64: 192.168.255.0/24 (actual address pool: 192.168.255.1 - 192.168.255.254, 254 addresses)
[INFO]-UTILS---: Set state callback: OK
[DEBG]-TrelDns-: Stop browsing _trel._udp service.
[DEBG]-TrelDns-: mDNS Publisher is Ready
[INFO]-TrelDns-: TREL DNS-SD Is Now Ready: Netif=enp0s18(2), SubscriberId=0, Register=!
[INFO]-BA------: Start Thread Border Agent
[INFO]-BA------: Publish meshcop service Home Assistant OpenThread Border Router #118C._meshcop._udp.local.
00:00:00.110 [I] Settings------: Read BorderAgentId {id:f6815df411f02ab1061973e844c15b97}
[INFO]-MDNS----: Registering service Home Assistant OpenThread Border Router #118C._meshcop._udp
00:00:00.111 [I] BbrLocal------: Add Domain Prefix: ::/0, NotFound
00:00:00.111 [I] BbrLocal------: Add BBR Service: seqno (65), delay (5s), timeout (3600s), InvalidState
[INFO]-ADPROXY-: Started
[INFO]-DPROXY--: Started
[INFO]-APP-----: Co-processor version: SL-OPENTHREAD/2.5.2.0_GitHub-1fceb225b; EFR32; Feb 12 2025 08:21:10
00:00:00.111 [I] Notifier------: StateChanged (0x42038210) [MLAddr NetData PanId NetName ExtPanId BbrState Nat64]
00:00:00.111 [I] Bbr-----------: Start listening on port 61631
00:00:00.111 [I] Bbr-----------: Backbone TMF subscribes ff32:40:fdde:ad00:beef:0:0:3: OK
00:00:00.111 [I] BbrManager----: Start Backbone TMF agent: OK
00:00:00.114 [I] Platform------: Execute command `ipset flush otbr-ingress-allow-dst-swap` = 0
00:00:00.115 [I] Platform------: Execute command `ipset flush otbr-ingress-deny-src-swap` = 0
00:00:00.117 [I] Platform------: Execute command `ipset add otbr-ingress-deny-src-swap fdde:ad00:beef:0::/64 -exist` = 0
00:00:00.118 [I] Platform------: Execute command `ipset swap otbr-ingress-deny-src-swap otbr-ingress-deny-src` = 0
00:00:00.119 [I] Platform------: Execute command `ipset swap otbr-ingress-allow-dst-swap otbr-ingress-allow-dst` = 0
00:00:00.119 [I] P-Netif-------: NAT64 CIDR updated to 192.168.255.0/24.
00:00:00.119 [I] P-Netif-------: Sent request#2 to delete route 192.168.255.0/24
00:00:00.119 [I] P-Netif-------: Deleting route for NAT64
00:00:00.119 [I] P-McastRtMgr--: Disable: OK
[INFO]-BA------: Publish meshcop service Home Assistant OpenThread Border Router #118C._meshcop._udp.local.
[DEBG]-BBA-----: BackboneAgent: HandleBackboneRouterState: state=1, mBackboneRouterState=0
00:00:00.119 [I] RouterTable---: Route table
00:00:00.119 [I] P-Netif-------: Host netif is down
00:00:00.120 [I] P-Netif-------: Succeeded to process request#1
00:00:00.120 [W] P-Netif-------: Failed to process request#2: No such process
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-configure: starting
s6-rc: info: service otbr-web: starting
s6-rc: info: service otbr-web successfully started
[19:53:55] INFO: Starting otbr-web...
[INFO]-WEB-----: Running 0.3.0-b067e5ac-dirty
listenAddr not specified, using default ::
[INFO]-WEB-----: Border router web started on wpan0
00:00:00.221 [I] P-Daemon------: Session socket is ready
00:00:00.221 [D] Cli-----------: Input: state
00:00:00.221 [D] Cli-----------: Output: disabled
00:00:00.221 [D] Cli-----------: Output: Done
00:00:00.241 [I] P-Daemon------: Session socket is ready
00:00:00.241 [D] Cli-----------: Input: txpower 6
00:00:00.241 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_SET, key:PHY_TX_POWER, power:6
00:00:00.241 [D] P-RadioSpinel-: Wait response: tid=1 key=37
00:00:00.251 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:1, cmd:PROP_VALUE_IS, key:PHY_TX_POWER, power:5
00:00:00.251 [D] Cli-----------: Output: Done
Done
s6-rc: info: service otbr-agent-configure successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
00:00:00.306 [I] P-Daemon------: Session socket is ready
00:00:00.306 [D] Cli-----------: Input: rcp version
00:00:00.306 [D] Cli-----------: Output: SL-OPENTHREAD/2.5.2.0_GitHub-1fceb225b; EFR32; Feb 12 2025 08:21:10
00:00:00.306 [D] Cli-----------: Output: Done
00:00:00.306 [W] P-Daemon------: Failed to write CLI output: Broken pipe
[19:53:55] INFO: Successfully sent discovery information to Home Assistant.
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
[INFO]-MDNS----: Successfully registered service Home Assistant OpenThread Border Router #118C._meshcop._udp
[INFO]-BA------: Result of publish meshcop service Home Assistant OpenThread Border Router #118C._meshcop._udp.local: OK
[INFO]-BA------: Result of publish meshcop service Home Assistant OpenThread Border Router #118C._meshcop._udp.local: OK

It looks like the communication with the SLZB is working. Where you see spinel that is the connection to the Thread radio module (which in this case is the SLZB) that the OTBR uses.
It looks like things are successfully being set across the spinel, like MAC address (at least parts of it), power levels, etc.

There is also a line showing the firmware version: SL-OPENTHREAD/2.5.2.0_GitHub-1fceb225b. This version is newer than the version I have on my ZBT-1, but I really don’t know if a newer version would be a problem, I tend to think not (but if they changed the data scheme across the spinel for the newer firmware, then I could see where things might not work).

As I don’t have this device, I’m not sure what else to tell you.

For what it is worth, here is a link to where the NabuCasa devices’ firmware is located. If the SLZB uses the same device as the ZBT-1 (I myself don’t know), you may try the SkyConnect one skyconnect_openthread_rcp_2.4.4.0_GitHub-7074a43e4_gsdk_4.4.4.gbl

There is also one thing to note: The devs have cautioned people not to use tcp/ip to connect to the radio, as the delay/delay variability can cause problems. From what I have gathered, most people have not had much of an issue.

Thank you! I believe the caveat is on the firmware somewhere. My chip is a EFR32MG24 on a SLZB-MR3. Reading up on it I find that some recommends the MR1, this uses the EFR32MG21 chip instead.

Thanks again, I will keep fiddling with this to see if I can fix it, or if I need to replace the stick with a MR1.

Just got word from SMLIGHT support:

There are currently no guides on migrating Thread networks between different devices so i would recommend creating a new network in this case

Could be I will follow this recommendation.

The OTBR web interface is notoriously sub-useful. Do you see anything in the Join tab? If the PAN ID looks right, see if it the JOIN button works.

My guess is OTBR will not automatically add new hardware device (interface) to an existing “formed” network — it’s a router, after all, it won’t make assumptions about interfaces. It may’ve been easier to stand up a separate new instance of OTBR, but if you can’t “Join” there are still a couple ways to proceed to avoid having to re-pair all your Thread devices. In either case you need to have the previous Thread credentials saved somewhere — either as a preferred network in HA or as a TLV string.

If the credentials are still saved in HA as the preferred network, then you could just form a new network with any new credentials, and when it appears in HA Thread configuration, use the three-dot menu to join it to the previously-saved preferred network.

If that doesn’t work, you’ll need enter the TLV manually in OTBR. That’s a little more complex, so let us know how far you get with these suggestions.