Skip to content

Connect ZBT-2 Matter-over-Thread commissioning fails after device joins Thread — repeated NoAck #4788

Description

@colbyjjackson

Describe the issue you are experiencing

Title: ZBT-2 Matter-over-Thread commissioning fails after device joins Thread — repeated 802.15.4 NoAck

I am unable to commission an IKEA GRILLPLATS Matter-over-Thread outlet using a Home Assistant Connect ZBT-2 and the OpenThread Border Router app.

Environment

  • Home Assistant OS 18.2 (amd64 / qemux86-64)
  • HAOS is running as a VM on TrueNAS
  • Home Assistant Core 2026.8.2
  • Supervisor 2026.07.5
  • OpenThread Border Router 3.1.1
  • Matter Server 9.2.0
  • Home Assistant Connect ZBT-2 passed through directly to the HAOS VM
  • Android Home Assistant Companion app used for commissioning
  • Device: IKEA GRILLPLATS Matter-over-Thread outlet

Problem

Commissioning proceeds normally through discovery and Thread credential provisioning. The Android commissioning flow then reaches:

"Checking connectivity to Thread network"

After waiting, it fails with:

"Can't reach device"

OTBR itself appears healthy. It successfully attaches to the Thread network and becomes leader/primary backbone router:

Mle-----------: Role detached -> leader
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!

During a failed commissioning attempt, the IKEA device appears to successfully join the Thread mesh because OTBR allocates another router ID:

RouterTable---: Allocate router id 51

Approximately 2.5 minutes later, OTBR begins reporting repeated failures communicating with that node over 802.15.4:

MeshForwarder-: Failed to send IPv6 UDP msg ... error:NoAck ... radio:15.4

For example:

00:50:57.263 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:96, chksum:b4e3, ecn:no, to:8ee2208b877047f5, sec:no, error:NoAck, prio:net, radio:15.4
00:50:57.263 [N] MeshForwarder-: src:[fe80:0:0:0:88c4:49ea:7e96:da97]:19788
00:50:57.263 [N] MeshForwarder-: dst:[fe80:0:0:0:8ce2:208b:8770:47f5]:19788

I observed the same pattern on an earlier attempt:

RouterTable---: Allocate router id 59
MeshForwarder-: Failed to send IPv6 UDP msg ... error:NoAck ... radio:15.4
RouterTable---: Release router id 59

Matter Server does not appear to receive the commissioning transaction. It continues to report zero nodes, with no new Matter node appearing during these attempts.

Troubleshooting performed

  • Confirmed HAOS VM has a global IPv6 address, IPv6 gateway, and IPv6 is ready
  • Confirmed ha docker info reports enable_ipv6: true
  • OTBR consistently becomes Thread leader
  • Successfully synced HA Thread credentials to Android
  • Factory-reset GRILLPLATS before commissioning attempts
  • Tested with the GRILLPLATS and Android tablet approximately 6 feet from the ZBT-2
  • Initially tested Thread channel 15
  • Changed Thread network to channel 25 and confirmed OTBR itself was actually operating on channel 25
  • Cleared/rebuilt the stale HA Thread dataset after the channel change and resynced credentials to Android
  • Same commissioning failure on channels 15 and 25
  • Restarted HA/OTBR/Matter Server during troubleshooting
  • Confirmed TREL was enabled with ot-ctl trel
  • Temporarily disabled TREL using ot-ctl trel disable and repeated commissioning without restarting OTBR
  • Disabling TREL did not change the behavior

The repeated sequence of:

Allocate router id
-> device remains unreachable during Android's Thread connectivity check
-> repeated radio:15.4 error:NoAck
-> commissioning fails

seems potentially significant.

Is this a known ZBT-2/OTBR issue, or is there another diagnostic I can run to determine why the newly joined Thread node becomes unreachable?

What type of installation are you running?

Home Assistant OS

Which operating system are you running on?

Home Assistant Operating System

Which app are you reporting an issue with?

OpenThread Border Router

What is the version of the app?

3.1.1

Steps to reproduce the issue

  1. Configure Home Assistant Connect ZBT-2 as the OpenThread Border Router.
  2. Confirm OTBR is running and the Thread network is active.
  3. Sync the Home Assistant Thread credentials to an Android device.
  4. Factory-reset the IKEA GRILLPLATS Matter-over-Thread outlet.
  5. In the Home Assistant Android app, select Add Device → Matter and scan the device's Matter QR code.
  6. Commissioning begins and reaches "Checking connectivity to Thread network."
  7. After waiting, commissioning fails with "Can't reach device."
  8. OTBR logs show the device joining/receiving a router ID, followed by repeated MeshForwarder ... error:NoAck ... radio:15.4 messages.

Reproduces consistently, including with the device approximately 6 feet from the ZBT-2 and on Thread channels 15 and 25.

System Health information

System Information

version core-2026.8.3
installation_type Home Assistant OS
dev false
hassio true
docker true
container_arch amd64
user root
virtualenv false
python_version 3.14.6
os_name Linux
os_version 6.18.39-haos
arch x86_64
timezone America/New_York
config_dir /config
Home Assistant Cloud
logged_in true
subscription_expiration December 28, 2026 at 7:00 PM
relayer_connected true
relayer_region us-east-1
remote_enabled true
remote_connected true
remote_server us-east-1-19.ui.nabu.casa
alexa_enabled false
google_enabled false
cloud_ice_servers_enabled true
certificate_status ready
instance_id da4bca4920ae40919b8f87df4dd99f90
iot_state connected
iot_tries 0
certificate_expire_date November 14, 2026 at 10:08 PM
certificate_fingerprint f4801ca28f90b9765285e42316cf6e02f28ccf0d
certificate_alternative_names undefined
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 18.2
update_channel stable
supervisor_version supervisor-2026.07.5
agent_version 1.10.0
docker_version 29.6.2
disk_total 33.7 GB
disk_used 8.8 GB
nameservers 192.168.1.1, 2600:4040:5416:3f00::1
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Mosquitto broker (7.1.0), Zigbee2MQTT (2.13.0-1), Z-Wave JS (1.7.1), OpenThread Border Router (3.1.1), Matter Server (9.2.0), Terminal & SSH (10.4.0)
Dashboards
dashboards 4
resources 0
views 0
mode storage
Network Configuration
adapters lo (disabled), enp0s3 (enabled, default, auto), docker0 (disabled), hassio (disabled), vethe013554 (disabled), veth8509371 (disabled), vethbd29f00 (disabled), veth51fa891 (disabled), veth60077e1 (disabled), veth3908378 (disabled), vethe780392 (disabled), vethcb693f8 (disabled), veth0d771e6 (disabled), veth9c88b40 (disabled), wpan0 (disabled)
ipv4_addresses lo (127.0.0.1/8), enp0s3 (192.168.1.174/24), docker0 (172.30.232.1/23), hassio (172.30.32.1/23), vethe013554 (), veth8509371 (), vethbd29f00 (), veth51fa891 (), veth60077e1 (), veth3908378 (), vethe780392 (), vethcb693f8 (), veth0d771e6 (), veth9c88b40 (), wpan0 ()
ipv6_addresses lo (::1/128), enp0s3 (2600:4040:5416:3f00:15c9:64b9:98da:2893/64, fe80::93f0:3a91:8eaa:fed3/64), docker0 (fd4d:1580:d6e7::1/64, fe80::ec67:21ff:fe14:a2e6/64), hassio (fd0c:ac1e:2100::1/48, fe80::3cf1:9fff:feed:8fdf/64), vethe013554 (fe80::6cd9:b8ff:fe63:9086/64), veth8509371 (fe80::b0f6:29ff:fec9:5d83/64), vethbd29f00 (fe80::54dd:53ff:fee1:a4b6/64), veth51fa891 (fe80::c87b:1bff:fe77:10ba/64), veth60077e1 (fe80::802c:28ff:fe32:e04b/64), veth3908378 (fe80::40b3:d4ff:fe6b:4147/64), vethe780392 (fe80::48ca:e2ff:fe10:c29/64), vethcb693f8 (fe80::a8c5:bfff:fee6:3012/64), veth0d771e6 (fe80::dc36:e0ff:fe67:1424/64), veth9c88b40 (fe80::80f5:48ff:fe09:48a4/64), wpan0 (fd02:33a9:d0eb:ac66:0:ff:fe00:fc11/64, fd0a:1a71:3d07:1:3d98:81ec:9e96:a692/64, fd02:33a9:d0eb:ac66:0:ff:fe00:fc38/64, fd02:33a9:d0eb:ac66:0:ff:fe00:fc10/64, fd02:33a9:d0eb:ac66:0:ff:fe00:fc00/64, fd02:33a9:d0eb:ac66:0:ff:fe00:5000/64, fd02:33a9:d0eb:ac66:8333:603e:fa4e:c565/64, fe80::88c4:49ea:7e96:da97/64)
announce_addresses 192.168.1.174, 2600:4040:5416:3f00:15c9:64b9:98da:2893, fe80::93f0:3a91:8eaa:fed3
Recorder
oldest_recorder_run August 1, 2026 at 12:38 PM
current_recorder_run August 22, 2026 at 9:43 AM
estimated_db_size 12.99 MiB
database_engine sqlite
database_version 3.53.2

Anything in the Supervisor logs that might be useful for us?

2026-08-16 12:07:49.899 WARNING (MainThread) [homeassistant.components.otbr.config_flow] Failed to communicate with OTBR@http://core-openthread-border-router:8081: Cannot connect to host core-openthread-border-router:8081 ssl:default [Timeout while contacting DNS servers]
2026-08-16 12:12:09.795 WARNING (MainThread) [homeassistant.components.onkyo.media_player] Input source "TV" for entity: media_player.tx_rz50 is not in the list. Check integration options
2026-08-16 12:12:09.832 WARNING (MainThread) [homeassistant.components.onkyo.media_player] Listening mode "DOLBY SURROUND THX CINEMA ··· PLII/PLIIx THX CINEMA" for entity: media_player.tx_rz50 is not in the list. Check integration options
2026-08-16 12:12:10.074 WARNING (MainThread) [homeassistant.components.onkyo.media_player] Input source "MAIN SOURCE" for entity: media_player.tx_rz50_zone_2 is not in the list. Check integration options
2026-08-16 12:12:10.197 WARNING (MainThread) [homeassistant.components.onkyo.media_player] Input source "MAIN SOURCE" for entity: media_player.tx_rz50_zone_3 is not in the list. Check integration options
2026-08-16 12:12:13.959 WARNING (MainThread) [homeassistant.components.onkyo.media_player] Input source "TV" for entity: media_player.tx_rz50 is not in the list. Check integration options
2026-08-16 12:12:13.999 WARNING (MainThread) [homeassistant.components.onkyo.media_player] Listening mode "DOLBY SURROUND THX CINEMA ··· PLII/PLIIx THX CINEMA" for entity: media_player.tx_rz50 is not in the list. Check integration options

Anything in the app logs that might be useful for us?

[08:04:11] INFO: Starting otbr-agent...
[NOTE]-AGENT---: Running 0.3.0-ec16e396
[NOTE]-AGENT---: Thread version: 1.4.0
[NOTE]-AGENT---: Thread interface: wpan0
[NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/serial/by-id/usb-Nabu_Casa_ZBT-2_E072A1D8B134-if00?uart-baudrate=460800&uart-flow-control
[NOTE]-AGENT---: Radio URL: trel://enp0s3
[NOTE]-ILS-----: Infra link selected: enp0s3

00:00:08.276 [N] Mle-----------: RLOC16 5000 -> fffe
00:00:08.986 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
00:00:15.537 [N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Pending Dataset
00:00:22.040 [N] RouterTable---: Allocate router id 20
00:00:22.040 [N] Mle-----------: RLOC16 fffe -> 5000
00:00:22.042 [N] Mle-----------: Role detached -> leader
00:00:22.043 [N] Mle-----------: Partition ID 0x746b4fd
[NOTE]-BBA-----: BackboneAgent: Backbone Router becomes Primary!

00:48:15.413 [N] RouterTable---: Allocate router id 51

00:50:57.263 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:96, chksum:b4e3, ecn:no, to:8ee2208b877047f5, sec:no, error:NoAck, prio:net, radio:15.4
00:50:57.263 [N] MeshForwarder-:     src:[fe80:0:0:0:88c4:49ea:7e96:da97]:19788
00:50:57.263 [N] MeshForwarder-:     dst:[fe80:0:0:0:8ce2:208b:8770:47f5]:19788

00:50:58.326 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:96, chksum:f4bb, ecn:no, to:8ee2208b877047f5, sec:no, error:NoAck, prio:net, radio:15.4
00:50:58.326 [N] MeshForwarder-:     src:[fe80:0:0:0:88c4:49ea:7e96:da97]:19788
00:50:58.326 [N] MeshForwarder-:     dst:[fe80:0:0:0:8ce2:208b:8770:47f5]:19788

00:50:58.895 [N] MeshForwarder-: Failed to send IPv6 UDP msg, len:96, chksum:f961, ecn:no, to:8ee2208b877047f5, sec:no, error:NoAck, prio:net, radio:15.4
00:50:58.895 [N] MeshForwarder-:     src:[fe80:0:0:0:88c4:49ea:7e96:da97]:19788
00:50:58.895 [N] MeshForwarder-:     dst:[fe80:0:0:0:8ce2:208b:8770:47f5]:19788

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions