OpenThread Border Router - cannot get network key to add Matter device

Hit a bit of a wall and everything Google brings up, I’ve done.

I am running Home Assistant OS on ProxMox. I added a Sonoff Dongle Plus M624. I flashed it to Open Thread using the Dongle Flasher add on. Then, I added OTBR and Matter and Thread in the add-ons and integrations. In Thread, it shows my OTBR as the primary network. The option to send info to android is grayed out.

I went into Home Assistant Companion App (Android) and in Settings - Troubleshooting - synced Thread

It said it was on the same network. I even tried clearing cache, deleting data, reinstalling 2x.

I get to the point in Alexa, where it wants the network key and I’ve tried every 12+ string I can find in OTBR and nothing works. I tried on my main SSID and on my IOT 2.4 enabled SSID. Thread network matches what it shows in HA Thread.

In HACA, it stops with setting up the device (after it is trying to connect to the Thread network it shows in HA Thread.

I pulled up the OTBR webui and there are 3 networks in Join, but I have no idea what they are and in Commission, it wants a PSKd. I found instructions for CLI adding the commision and join, but how do I get to the CLI in HA via Proxmox? The console in PM does not accept any commands I try.

Where are your devices located on those networks?
Matter devices, Matter servers, HA and HACS device?do you have IPv6 enabled on the networks that handle Matter parts?
Are Matter devices on multiple networks and do you have mDNS routing handled along with standard IPv6 routing?

I’m running PFSense and it wouldn’t let me set up an IPv6 DHCP server without having an IPv6 address on a network. So I didn’t do that.

PFSense is @ 10.69.0.1 and Proxmox is 10.69.0.2, HA is .23. I don’t have any other Matter devices. My cell I tried on 10.69.69.x and 10.69.107.x networks.

I do not have mDNS routing set up. I was reading briefly about it, but went to sleep soon after.

I was thinking about using my iPhone and Home Apple tonight to try that.

Matter requires IPv6.
If you do not define a way fornit to get an IPv6 address you control, then devices will make up their and those are likely IPv6 addresses that are not routable at all.

All the addresses you mention are IPv4 addresses and we need the address/networks of HA, Matter server, mobil device used to commissioning and the network the joining Matter device will attach to.
These should all be the same network or you will have to handle routing and mDNS forwarding between them.

Thank you, I was seeing things in that direction today finally.

I set up IPV6 DHCP servers, reflected meshcop, meshcop-e and some other services.

Running Stateless DHCP. Do I need high priority for the Router Advertisement Daemon?

Default: mDNSResponder (Engineering Build) (Nov 12 2025 08:15:39) 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
[17:39:53] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
[17:39:57] INFO: Web UI and REST API port are exposed, starting otbr-web.
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
[17:39:58] INFO: Starting mDNS Responder...
Default: mDNSResponder (Engineering Build) (Nov 12 2025 08:15:39) starting
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.15.1
 You are running the latest version of this add-on.
 System: Home Assistant OS 16.3  (amd64 / qemux86-64)
 Home Assistant Core: 2025.11.2
 Home Assistant Supervisor: 2025.11.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 otbr-agent: starting
[17:39:59] INFO: Setup OTBR firewall...
[17:39:59] INFO: Migrating OTBR settings if needed...
2025-11-17 17:40:00 homeassistant asyncio[221] DEBUG Using selector: EpollSelector
2025-11-17 17:40:00 homeassistant zigpy.serial[221] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_a237eec36f8bef119f671fccef8776e9-if00-port0' (baudrate=460800, xonxoff=False, rtscts=False)
2025-11-17 17:40:00 homeassistant zigpy.serial[221] DEBUG Connection made: SerialTransport(<_UnixSelectorEventLoop running=True closed=False debug=False>, <universal_silabs_flasher.spinel.SpinelProtocol object at 0x7f8a7af302d0>, Serial<id=0x7f8a7ad74ac0, open=True>(port='/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_a237eec36f8bef119f671fccef8776e9-if00-port0', baudrate=460800, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False))
2025-11-17 17:40:00 homeassistant universal_silabs_flasher.spinel[221] 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-11-17 17:40:00 homeassistant universal_silabs_flasher.spinel[221] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2025-11-17 17:40:00 homeassistant universal_silabs_flasher.spinel[221] DEBUG Decoded HDLC frame: HDLCLiteFrame(data=b'\x83\x06\x08T\xdc\xe9\xff\xfe\ty.')
2025-11-17 17:40:00 homeassistant universal_silabs_flasher.spinel[221] DEBUG Parsed frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_IS: 6>, data=b'\x08T\xdc\xe9\xff\xfe\ty.')
2025-11-17 17:40:00 homeassistant zigpy.serial[221] DEBUG Waiting for serial port to close
2025-11-17 17:40:00 homeassistant zigpy.serial[221] DEBUG Connection lost: None
Adapter settings file /data/thread/0_54dce9fffe09792e.data is the most recently used, skipping
[17:40:00] 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:///dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_a237eec36f8bef119f671fccef8776e9-if00-port0?uart-baudrate=460800&uart-init-deassert
[NOTE]-AGENT---: Radio URL: trel://enp0s18
[NOTE]-ILS-----: Infra link selected: enp0s18
55d.23:45:05.638 [C] P-SpinelDrive-: Software reset co-processor successfully
00:00:00.057 [N] RoutingManager: BR ULA prefix: fdff:e6ab:f8d4::/48 (loaded)
00:00:00.057 [N] RoutingManager: Local on-link prefix: fdac:d678:fb4f:5a72::/64
00:00:00.091 [N] Mle-----------: Role disabled -> detached
00:00:00.110 [N] P-Netif-------: Changing interface state to up.
00:00:00.128 [W] P-Netif-------: Failed to process request#2: No such process
00:00:00.129 [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
[17:40:00] 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
00:00:00.624 [W] P-Daemon------: Failed to write CLI output: Broken pipe
[17:40:01] 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
00:00:27.004 [N] Mle-----------: RLOC16 6800 -> fffe
00:00:27.691 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
00:00:34.192 [N] RouterTable---: Allocate router id 26
00:00:34.192 [N] Mle-----------: RLOC16 fffe -> 6800
00:00:34.195 [N] Mle-----------: Role detached -> leader
00:00:34.197 [N] Mle-----------: Partition ID 0x338a3b44
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!
00:00:39.134 [W] DuaManager----: Failed to perform next registration: NotFound

I added a pass rule for the 224 network.

Nov 17 19:10:53 dhcp6c 9317 Sending Solicit
Nov 17 19:10:50 dhcp6c 39002 transmit failed: Network is down
Nov 17 19:10:50 dhcp6c 39002 Sending Solicit
Nov 17 19:10:40 dhcp6c 39002 Sending Solicit
Nov 17 19:10:29 dhcp6c 9317 Sending Solicit
Nov 17 19:10:26 dhcp6c 9317 Sending Solicit
Nov 17 19:10:23 dhcp6c 97319 transmit failed: Network is down
Nov 17 19:10:23 dhcp6c 97319 Sending Solicit

224 network???

224.x.x.x - https://networkengineering.stackexchange.com/questions/51956/why-we-use-224-as-multicast-address-in-many-protocols

That is an IPv4 address.

Right. What about my other settings?

Probably fine, but you still need to define IPv6 routes and firewall rules and set up proxies/reflectors.

ipv6fw

So I need to set up the proxy between them - Thread Border Router - Bidirectional IPv6 Connectivity and DNS-Based Service Discovery  |  OpenThread ?

You should not look at the OTBR yet.
The reflector/proxy needs to be set up between your IPv6 networks.

I have this mostly fixed now. There does not seem to be any good documentation. This is what I did:

  1. Install Avahi on PFSense. Set them to reflect the services OTBR needed in the pic above. Set it to repeat the mDNS.

  2. Found the ipv6 addresses in HA’s open thread border router. In PFSense’s system - routing, added the border router IP address as a gateway. Then, in Static Routes, added the IP address and network as well as the link-level IP address and network, using that gateway.

  3. In Interfaces, assigned an IPv6 address to the LAN and VLAN interfaces being used.

  4. In Services, DHCP IPv6 Server, turned on IPv6 DHCP and set the ranges.

In Firewall - rules, allow access to and from the VLANs and the IPv6 network that the Border Router is on.

The problem I have now is, the Lafaer Presence Sensor is not sending back an ACK and cannot join the network. I added the HA ZBT-2 and am using the official raspberry pi power supply, to boost the signal and make sure the power is getting consistently sent to the USB port. I tried different ports. I am going to try connecting to my server and seeing if it is a USB issue on the Pi. Otherwise, it makes me wonder if the Lafaers are just having issues still. I cannot connect to their app to adjust any settings there.