Thread OTBR fails on startup

Testing using a Sonoff Zigbee Dongle Plus E as a OTBR on HA.

The setup so far.

  • Home network has IOT vlan 20 and main vlan 50. Apple TV on vlan 50.
  • New Raspberry Pi 3B+ HA installed on vlan 20
  • Use ha command to add a vlan to the network adapter

ha network vlan enu1u1u1 50 --ipv4-method auto --ipv6-method auto

Log shows it is starting, checking the firmware and then terminates.

Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.9.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.4  (aarch64 / raspberrypi3-64)
 Home Assistant Core: 2024.7.1
 Home Assistant Supervisor: 2024.06.2
-----------------------------------------------------------
 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
[12:49:47] INFO: Checking /dev/ttyACM0 identifying SONOFF Zigbee 3.0 USB Dongle Plus V2 from ITEAD.
[12:49:47] INFO: Starting universal-silabs-flasher with /dev/ttyACM0
2024-07-08 12:49:59.708 hatest universal_silabs_flasher.flash INFO Extracted GBL metadata: NabuCasaMetadata(metadata_version=1, sdk_version='4.4.2', ezsp_version=None, ot_rcp_version='SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4' (2.4.2.0), cpc_version=None, fw_type=<FirmwareImageType.OT_RCP: 'ot-rcp'>, baudrate=460800)
2024-07-08 12:49:59.710 hatest universal_silabs_flasher.flasher INFO Triggering sonoff bootloader
2024-07-08 12:50:00.338 hatest universal_silabs_flasher.flasher INFO Probing ApplicationType.GECKO_BOOTLOADER at 115200 baud
2024-07-08 12:50:00.460 hatest universal_silabs_flasher.flasher INFO Launched application from bootloader
2024-07-08 12:50:01.474 hatest universal_silabs_flasher.flasher INFO Detected bootloader version '1.12.0'
2024-07-08 12:50:01.475 hatest universal_silabs_flasher.flasher INFO Probing ApplicationType.SPINEL at 460800 baud
2024-07-08 12:50:01.505 hatest universal_silabs_flasher.flasher INFO Detected ApplicationType.SPINEL, version 'SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4' (2.4.2.0) at 460800 baudrate (bootloader baudrate 115200)
2024-07-08 12:50:01.506 hatest universal_silabs_flasher.flash INFO Firmware version 'SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4' (2.4.2.0) is flashed, not re-installing
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service otbr-agent: starting
[12:50:08] INFO: Setup OTBR firewall...
[12:50:10] INFO: Starting otbr-agent...
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
s6-rc: info: service otbr-agent-configure: starting
Done
s6-rc: info: service otbr-agent-configure successfully started
[12:50:17] 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
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::bd54:4bbb:e380:e303/enu1u1u1.20/141
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::bd54:4bbb:e380:e303/enu1u1u1.20/141
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::bd54:4bbb:e380:e303/enu1u1u1.20/141
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::bd54:4bbb:e380:e303/enu1u1u1.20/141
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::bd54:4bbb:e380:e303/enu1u1u1.20/141
[NOTE]-AGENT---: Running 0.3.0-41474ce-dirty
[NOTE]-AGENT---: Thread version: 1.3.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800&uart-flow-control
[NOTE]-AGENT---: Radio URL: trel://enu1u1u1
[NOTE]-ILS-----: Infra link selected: enu1u1u1
49d.18:32:27.839 [C] P-SpinelDrive-: Software reset co-processor successfully
00:00:00.154 [N] RoutingManager: BR ULA prefix: fd5f:126:86bb::/48 (loaded)
00:00:00.154 [N] RoutingManager: Local on-link prefix: fd5d:77dd:aaff:76be::/64
00:00:00.299 [N] Mle-----------: Role disabled -> detached
00:00:00.393 [N] P-Netif-------: Changing interface state to up.
00:00:00.472 [W] P-Netif-------: Failed to process request#2: No such process
00:00:00.477 [W] P-Netif-------: Failed to process request#6: No such process
00:00:15.751 [W] P-RadioSpinel-: radio tx timeout
00:00:15.751 [C] P-RadioSpinel-: Failed to communicate with RCP - no response from RCP during initialization
00:00:15.751 [C] P-RadioSpinel-: This is not a bug and typically due a config error (wrong URL parameters) or bad RCP image:
00:00:15.751 [C] P-RadioSpinel-: - Make sure RCP is running the correct firmware
00:00:15.751 [C] P-RadioSpinel-: - Double check the config parameters passed as `RadioURL` input
00:00:15.751 [C] Platform------: HandleRcpTimeout() at radio_spinel.cpp:1931: RadioSpinelNoResponse
[12:50:27] WARNING: otbr-agent exited with code 6 (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            
[12:50:27] INFO: OTBR firewall teardown completed.
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-agent-configure: stopping
s6-rc: info: service otbr-agent-rest-discovery successfully stopped
s6-rc: info: service otbr-agent-configure successfully stopped
s6-rc: info: service otbr-agent: stopping
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
s6-rc: info: service universal-silabs-flasher successfully stopped
s6-rc: info: service banner: stopping
Default: mDNSResponder (Engineering Build) (Jul  2 2024 09:08:57) stopping
s6-rc: info: service banner successfully stopped
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
[12:50:27] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
00:00:15.751 [C] P-RadioSpinel-: Failed to communicate with RCP - no response from RCP during initialization
00:00:15.751 [C] P-RadioSpinel-: This is not a bug and typically due a config error (wrong URL parameters) or bad RCP image:

I remember seeing an option requesting a URL that did not explain how to fill it. Now I can’t find where that was and still don’t know what the value should be.

best
Steve

Failed to communicate with RCP

Did you flash multiprotocol or RCP?

RCP 2.3.1.0

I don’t want to set up Zigbee on this setup.

I made a note that I saw somewhere which says that starting in OTBR AddOn v2.7.2 that the ZBDongle-E is now auto-updated. I’m wondering if that is what happened here as the Log indicates the firmware SL-OPENTHREAD version is 2.4.2. I would think that this would work, but guess not. I noticed that you are on Discord, maybe worth asking there.

Still no luck.

Current status.
HA on Raspberry Pi 3B+

  • Core2024.7.2
  • Supervisor2024.06.2
  • Operating System12.4
  • Frontend20240710.0
  • Add-ons Matter and Thread on latest.

SONOFF ZBDONGLE E Plus

  • re-flashed with SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4’ (2.4.2.0) at 460800 baudrate

iPhone and RPi are both on the IOT WiFi.
Brand new Onvis Thread based S4UK smart socket as first device to connect.

Using the HA App on the iPhone, settings > device > add matter device > its new.
Scan the QR code - process starts, then fails with Thread Border Router Required.
Learn more - takes me to apple.com !

I am trying to setup a new thread network using just Homeassistant, I want to use the Apple TV later as a secondary router.

OpenThread logs

[20:46:53] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Jul  2 2024 09:08:57) starting

-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.9.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.4  (aarch64 / raspberrypi3-64)
 Home Assistant Core: 2024.7.2
 Home Assistant Supervisor: 2024.06.2
-----------------------------------------------------------
 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
[20:47:00] INFO: Checking /dev/ttyACM0 identifying SONOFF Zigbee 3.0 USB Dongle Plus V2 from ITEAD.
[20:47:00] INFO: Starting universal-silabs-flasher with /dev/ttyACM0
2024-07-18 20:47:06.375 homeassistant universal_silabs_flasher.flash INFO Extracted GBL metadata: NabuCasaMetadata(metadata_version=1, sdk_version='4.4.2', ezsp_version=None, ot_rcp_version='SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4' (2.4.2.0), cpc_version=None, fw_type=<FirmwareImageType.OT_RCP: 'ot-rcp'>, baudrate=460800)
2024-07-18 20:47:06.377 homeassistant universal_silabs_flasher.flasher INFO Triggering sonoff bootloader
2024-07-18 20:47:06.991 homeassistant universal_silabs_flasher.flasher INFO Probing ApplicationType.GECKO_BOOTLOADER at 115200 baud
2024-07-18 20:47:07.110 homeassistant universal_silabs_flasher.flasher INFO Launched application from bootloader
2024-07-18 20:47:08.113 homeassistant universal_silabs_flasher.flasher INFO Detected bootloader version '1.12.0'
2024-07-18 20:47:08.115 homeassistant universal_silabs_flasher.flasher INFO Probing ApplicationType.SPINEL at 460800 baud
2024-07-18 20:47:08.135 homeassistant universal_silabs_flasher.flasher INFO Detected ApplicationType.SPINEL, version 'SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4' (2.4.2.0) at 460800 baudrate (bootloader baudrate 115200)
2024-07-18 20:47:08.136 homeassistant universal_silabs_flasher.flash INFO Firmware version 'SL-OPENTHREAD/2.4.2.0_GitHub-7074a43e4' (2.4.2.0) is flashed, not re-installing
s6-rc: info: service universal-silabs-flasher successfully started
s6-rc: info: service otbr-agent: starting
[20:47:13] INFO: Setup OTBR firewall...
[20:47:15] INFO: Starting otbr-agent...
Default: mDNSCoreReceiveResponse: Received from fe80::93f4:7ccd:9e:ca9:5353   16 homeassistant.local. AAAA fd00:20::7422:c662:a74d:c800
Default: mDNSCoreReceiveResponse: ProbeCount 2; restarting probing after 1024-tick pause due to possibly spurious multicast conflict (1/1) via interface -1904405536 for    4 homeassistant.local. Addr 192.168.20.9
Default: mDNSCoreReceiveResponse: Received from fe80::93f4:7ccd:9e:ca9:5353   16 homeassistant.local. AAAA fd00:20::7422:c662:a74d:c800
Default: mDNSCoreReceiveResponse: ProbeCount 2; restarting probing after 1024-tick pause due to possibly spurious multicast conflict (1/1) via interface -1904405536 for   16 homeassistant.local. AAAA fd00:20::8215:487:abba:eb7f
Default: mDNSCoreReceiveResponse: Received from fe80::93f4:7ccd:9e:ca9:5353   16 homeassistant.local. AAAA fd00:20::7422:c662:a74d:c800
Default: mDNSCoreReceiveResponse: ProbeCount 2; restarting probing after 1024-tick pause due to possibly spurious multicast conflict (1/1) via interface -1904405536 for   16 homeassistant.local. AAAA fd00:1::92c1:c9ee:bbcd:f405
Default: mDNSCoreReceiveResponse: Received from fe80::93f4:7ccd:9e:ca9:5353   16 homeassistant.local. AAAA fd00:20::7422:c662:a74d:c800
Default: mDNSCoreReceiveResponse: ProbeCount 2; restarting probing after 1024-tick pause due to possibly spurious multicast conflict (1/1) via interface -1904405536 for   16 homeassistant.local. AAAA fe80::11e0:80f7:de06:a955
Default: mDNSCoreReceiveResponse: Received from 172.30.32.1:5353    4 homeassistant.local. Addr 192.168.20.10
Default: mDNSCoreReceiveResponse: ProbeCount 2; restarting probing after 1024-tick pause due to possibly spurious multicast conflict (1/1) via interface -1904399216 for    4 homeassistant.local. Addr 172.30.32.1
Default: mDNSCoreReceiveResponse: Received from 172.30.32.1:5353    4 homeassistant.local. Addr 192.168.20.10
Default: mDNSCoreReceiveResponse: ProbeCount 2; restarting probing after 1024-tick pause due to possibly spurious multicast conflict (1/1) via interface -1904399216 for   16 homeassistant.local. AAAA fe80::42:1dff:fe9c:cdc3
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service otbr-agent-rest-discovery: starting
s6-rc: info: service otbr-agent-configure: starting
Default: mDNSCoreReceiveResponse: Received from 192.168.20.10:5353    4 homeassistant.local. Addr 192.168.20.10
Default: mDNSCoreReceiveResponse: ProbeCount 2; will deregister    4 homeassistant.local. Addr 192.168.20.9 due to multicast conflict via interface -1904405536
Default: Local Hostname homeassistant.local already in use; will try homeassistant-2.local instead
Done
s6-rc: info: service otbr-agent-configure successfully started
[20:47:20] 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

Network info

~ # ha network info
docker:
  address: 172.30.32.0/23
  dns: 172.30.32.3
  gateway: 172.30.32.1
  interface: hassio
host_internet: true
interfaces:
- connected: true
  enabled: true
  interface: enu1u1u1
  ipv4:
    address:
    - 192.168.20.9/24
    gateway: 192.168.20.1
    method: auto
    nameservers:
    - 192.168.20.1
    ready: true
  ipv6:
    address:
    - fd00:20::8215:487:abba:eb7f/64
    - fd00:1::92c1:c9ee:bbcd:f405/64
    - fe80::11e0:80f7:de06:a955/64
    gateway: fe80::6222:32ff:fe9f:521e
    method: auto
    nameservers: []
    ready: true
  mac: B8:27:EB:CD:1C:56
  primary: true
  type: ethernet
  vlan: null
  wifi: null
- connected: false
  enabled: false
  interface: wlan0
  ipv4:
    address: []
    gateway: null
    method: disabled
    nameservers: []
    ready: false
  ipv6:
    address: []
    gateway: null
    method: disabled
    nameservers: []
    ready: false
  mac: B8:27:EB:98:49:03
  primary: false
  type: wireless
  vlan: null
  wifi: null
supervisor_internet: true
~ # 

~ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enu1u1u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000
    link/ether b8:27:eb:cd:1c:56 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN qlen 1000
    link/ether b8:27:eb:98:49:03 brd ff:ff:ff:ff:ff:ff
4: hassio: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:1d:9c:cd:c3 brd ff:ff:ff:ff:ff:ff
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:54:d2:f2:02 brd ff:ff:ff:ff:ff:ff
7: veth29a2a7d@if6: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether de:97:cc:8c:af:0e brd ff:ff:ff:ff:ff:ff
9: veth4ef560b@if8: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 7e:4b:73:7f:f6:ca brd ff:ff:ff:ff:ff:ff
11: vethe2878e1@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether f6:79:17:50:da:61 brd ff:ff:ff:ff:ff:ff
13: vethce08ddd@if12: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether ca:96:83:e7:21:fb brd ff:ff:ff:ff:ff:ff
15: veth0357d4e@if14: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether e6:42:12:14:b0:4e brd ff:ff:ff:ff:ff:ff
17: veth79295fc@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether 16:c4:03:3e:89:0d brd ff:ff:ff:ff:ff:ff
26: wpan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN qlen 500
    link/[65534] 
~ # 

~ # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enu1u1u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000
    link/ether b8:27:eb:cd:1c:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.9/24 brd 192.168.20.255 scope global dynamic noprefixroute enu1u1u1
       valid_lft 82930sec preferred_lft 82930sec
    inet6 fd00:20::8215:487:abba:eb7f/64 scope global dynamic noprefixroute 
       valid_lft 85934sec preferred_lft 85934sec
    inet6 fd00:1::92c1:c9ee:bbcd:f405/64 scope global dynamic noprefixroute 
       valid_lft 85920sec preferred_lft 85920sec
    inet6 fe80::11e0:80f7:de06:a955/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN qlen 1000
    link/ether b8:27:eb:98:49:03 brd ff:ff:ff:ff:ff:ff
4: hassio: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:1d:9c:cd:c3 brd ff:ff:ff:ff:ff:ff
    inet 172.30.32.1/23 brd 172.30.33.255 scope global hassio
       valid_lft forever preferred_lft forever
    inet6 fe80::42:1dff:fe9c:cdc3/64 scope link 
       valid_lft forever preferred_lft forever
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:54:d2:f2:02 brd ff:ff:ff:ff:ff:ff
    inet 172.30.232.1/23 brd 172.30.233.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:54ff:fed2:f202/64 scope link 
       valid_lft forever preferred_lft forever
7: veth29a2a7d@if6: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether de:97:cc:8c:af:0e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::dc97:ccff:fe8c:af0e/64 scope link 
       valid_lft forever preferred_lft forever
9: veth4ef560b@if8: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 7e:4b:73:7f:f6:ca brd ff:ff:ff:ff:ff:ff
    inet6 fe80::7c4b:73ff:fe7f:f6ca/64 scope link 
       valid_lft forever preferred_lft forever
11: vethe2878e1@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether f6:79:17:50:da:61 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::f479:17ff:fe50:da61/64 scope link 
       valid_lft forever preferred_lft forever
13: vethce08ddd@if12: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether ca:96:83:e7:21:fb brd ff:ff:ff:ff:ff:ff
    inet6 fe80::c896:83ff:fee7:21fb/64 scope link 
       valid_lft forever preferred_lft forever
15: veth0357d4e@if14: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether e6:42:12:14:b0:4e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::e442:12ff:fe14:b04e/64 scope link 
       valid_lft forever preferred_lft forever
17: veth79295fc@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master hassio state UP 
    link/ether 16:c4:03:3e:89:0d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::14c4:3ff:fe3e:890d/64 scope link 
       valid_lft forever preferred_lft forever
26: wpan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN qlen 500
    link/[65534] 
    inet6 fd2b:604b:d248:e43e:0:ff:fe00:fc11/64 scope global deprecated flags 02 
       valid_lft forever preferred_lft 0sec
    inet6 fddc:149b:3e9d:1:27da:1d8:f719:3eab/64 scope global flags 02 
       valid_lft forever preferred_lft forever
    inet6 fd2b:604b:d248:e43e:0:ff:fe00:fc10/64 scope global deprecated flags 02 
       valid_lft forever preferred_lft 0sec
    inet6 fd2b:604b:d248:e43e:0:ff:fe00:fc38/64 scope global deprecated flags 02 
       valid_lft forever preferred_lft 0sec
    inet6 fd2b:604b:d248:e43e:0:ff:fe00:fc00/64 scope global deprecated flags 02 
       valid_lft forever preferred_lft 0sec
    inet6 fd2b:604b:d248:e43e:0:ff:fe00:cc00/64 scope global deprecated flags 02 
       valid_lft forever preferred_lft 0sec
    inet6 fd2b:604b:d248:e43e:63d2:ff8c:e36a:67e0/64 scope global deprecated flags 02 
       valid_lft forever preferred_lft 0sec
    inet6 fe80::5818:5528:9164:d37e/64 scope link flags 02 
       valid_lft forever preferred_lft forever
~ # 

Until the 2024.7 release, one could not use iOS HA Companion App to commission thread based Matter devices. Now one can use it, but must first get the credentials from HA into the iOS Comapnion App.

According to the docs:

  • To share the credentials with your iPhone, open the Home Assistant Companion app.
    • Go to Settings > Devices & Services, select the Thread integration.
    • At the bottom of the preferred network box, select Send credentials to phone.

Running the latest HA software, but still not working.

I wonder if the Apple TV is preventing the HA setup from working.

My intention was to build a test HomeAssistant device, add its own OTBR radio and then add some Thread devices directly.

I opened the companion app and could see two credentials buttons - tried both, but no real feedback in the UI.

When I start pairing a brand new Thread smart plug, the HA app scans the code, and starts the process. The process still fails with the message border router required.

There is an Apple TV that previously had a thread smart socket on the same Wifi.

Learn more takes me to Apple .

hi @stevegroom
Did you find a solution for this? I am experiencing the same error, but I am using Connect ZBT-1. See also here

Yes, but a drastic one.
Phase 1 - I expanded my network to 255.255.254.0 and moved all IoT devices to the main network. I kept two distinct wifi SSIDs so that I could keep the IoT devices on the 2.4Ghz. Matter communications were now working, but Apple Home was still not stable - for example blinds would stop responding after restarting HA.

Phase 2 was to remove the HomeKit bridge which was sharing 30 or more devices from HA to Apple Home. I then cleaned up every device from Apple home, deleting bridges that it seemed to hold on to.

Phase 3 I then removed all matter devices from both HA and Home, imported them all to Apple Home as primary and HA as secondary.

The result - apple home is almost empty, and only serving as a Matter server, but this is okay as I had already stopped using it for most things (there are a couple of alerts that I need to recreate). Now, matter devices are stable and responsive.

One problem I had with HomeKit bridge was it would share matter devices back to home as HomeKit devices. Selecting what to share over the HomeKit bridge really needs to have a filter so I can share specifically tagged devices.

Happy I cleaned up and stopped trying to use home, but it was a big job.

Umm… 255.255.254.0 falls within the Class E address range and “is reserved for future use”. I would not recommend using it.

If you want to expand your network, then perhaps use “10.0.0.0/8 - This block is set aside for use in private networks.” Otherwise use: “192.168.0.0/16 - This block is set aside for use in private networks.”
Reference RFC5735

Um - it was a bit late - that was my netmask - went from a /24 to /23