What I’m trying to do
I have a Home Assistant Green device, with a ZBT-2 radio. I’m trying to commission my first Matter over Thread device, which is a Nanoleaf NL67 smart bulb, using the Home Assistant companion app for iOS.
Software/hardware versions
Home Assistant Green
- Installation method: Home Assistant OS
- Core: 2026.1.0
- Supervisor: 2026.01.0
- Operating System: 16.3
Home Assistant Connect ZBT-2
- Configured as a Thread adaptor
Add-ons
- Matter Server add-on: 8.1.2
- OpenThread Border Router add-on: 2.15.3
Smart device
- Nanoleaf firmware: 4.1.3 (latest)
Home Assistant Companion iOS app
- App version: 2025.12.1
Issue Background
I have had the bulb connected, via Thread, to Apple Home for several months (this was a direct connection from the phone to the bulb – I have no Apple border router). I recently bought a HA Green and ZBT-2 and wanted to add the bulb to a Home Assistant controlled Thread network. This is the first thing I’m trying to do with Home Assistant so everything is in its default state except increasing the logging levels.
This is the only Matter over Thread device I have, so I’m unable to verify if this issue is confined to this device, or if it’s a wider problem with my Home Assistant/ZBT-2 setup.
Sharing the device between Apple Home and Home Assistant
I followed the recommended procedure for adding a Matter device already registered with Apple Home to Home Assistant, by turning on “Pairing Mode” in the Apple Home app and using the subsequent “setup code” in Home Assistant to complete the commissioning. This does not work, with the process in the companion iOS app timing out after ~5 minutes.
The relevant logs from the Matter server during this process are:
2026-01-10 22:06:36.875 (MainThread) VERBOSE [matter_server.server.client_handler] [281472779537056] Received: {
"message_id": "8d7962facdb3406caa64035d1b7ff07b",
"command": "commission_with_code",
"args": {
"code": "31801336662",
"network_only": true
}
}
2026-01-10 22:06:36.876 (MainThread) VERBOSE [matter_server.server.client_handler] [281472779537056] Received CommandMessage(message_id='8d7962facdb3406caa64035d1b7ff07b', command='commission_with_code', args={'code': '31801336662', 'network_only': True})
2026-01-10 22:06:36.877 (MainThread) VERBOSE [matter_server.server.client_handler] [281472779537056] Handling command commission_with_code
2026-01-10 22:06:36.878 (MainThread) INFO [matter_server.server.device_controller] Starting Matter commissioning with code using Node ID 4.
2026-01-10 22:06:36.880 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Setting attestation nonce to random value
2026-01-10 22:06:36.881 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Setting CSR nonce to random value
2026-01-10 22:06:36.882 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Stopping commissionable node discovery over DNS-SD
2026-01-10 22:06:36.883 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Starting commissionable node discovery over DNS-SD
2026-01-10 22:06:36.889 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 22:06:36.891 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 22:06:36.898 (ThreadPoolExecutor-0_0) DEBUG [matter_server.server.storage] Saved data to persistent storage
2026-01-10 22:06:37.889 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 22:06:37.889 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 22:06:39.891 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 22:06:39.892 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 22:06:43.892 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 22:06:43.893 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 22:06:51.900 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 22:06:51.901 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 22:07:06.905 (Dummy-2) CHIP_ERROR [chip.native.CTL] Discovery timed out
2026-01-10 22:07:06.906 (Dummy-2) CHIP_PROGRESS [chip.native.CTL] Stopping commissionable node discovery over DNS-SD
2026-01-10 22:07:06.906 (Dummy-2) CHIP_ERROR [chip.native.ZCL] Secure Pairing Failed
2026-01-10 22:07:06.908 (Dummy-2) WARNING [chip.ChipDeviceCtrl] Failed to establish secure session to device: src/controller/python/ChipDeviceController-ScriptDevicePairingDelegate.cpp:96: CHIP Error 0x00000003: Incorrect state
2026-01-10 22:07:06.910 (MainThread) ERROR [matter_server.server.client_handler] [281472779537056] Error while handling: commission_with_code: Commission with code failed for node 4.
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/matter_server/server/device_controller.py", line 330, in commission_with_code
await self._chip_device_controller.commission_with_code(
File "/usr/local/lib/python3.12/site-packages/matter_server/server/sdk.py", line 133, in commission_with_code
await self._chip_controller.CommissionWithCode(
File "/usr/local/lib/python3.12/site-packages/chip/ChipDeviceCtrl.py", line 2835, in CommissionWithCode
return await asyncio.futures.wrap_future(ctx.future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
chip.exceptions.ChipStackError: src/controller/python/ChipDeviceController-ScriptDevicePairingDelegate.cpp:96: CHIP Error 0x00000003: Incorrect state
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/matter_server/server/client_handler.py", line 196, in _run_handler
result = await result
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/matter_server/server/device_controller.py", line 344, in commission_with_code
raise NodeCommissionFailed(
matter_server.common.errors.NodeCommissionFailed: Commission with code failed for node 4.
I’m having a tough time deciphering the OpenThread Border Router logs. It’s not clear to me that any packets are being routed through the OTBR during this process. FWIW, here are some logs from during the attempted commissioning process:
00:58:31.855 [D] P-SpinelDrive-: ... csmaCaEnabled:1, isHeaderUpdated:0, isARetx:0, skipAes:0, txDelay:0, txDelayBase:0
00:58:31.864 [D] P-SpinelDrive-: Received spinel frame, flg:0x2, iid:0, tid:2, cmd:PROP_VALUE_IS, key:LAST_STATUS, status:OK
00:58:31.864 [I] MeshForwarder-: Sent IPv6 UDP msg, len:90, chksum:bbb9, ecn:no, to:0xffff, sec:no, prio:net, radio:all
00:58:31.864 [I] MeshForwarder-: src:[fe80:0:0:0:8cc3:e731:ffe0:d53c]:19788
00:58:31.864 [I] MeshForwarder-: dst:[ff02:0:0:0:0:0:0:1]:19788
00:58:38.452 [I] RoutingManager: Sent Neighbor Solicitation to fe80:0:0:0:d61a:d1ff:fedb:b050 - attempt:1/5
00:58:38.453 [I] RoutingManager: Received NA from router fe80:0:0:0:d61a:d1ff:fedb:b050
00:58:45.150 [I] RoutingManager: Evaluating routing policy
00:58:45.150 [I] RoutingManager: Evaluating NAT64 prefix
00:58:45.150 [I] RoutingManager: Preparing RA
00:58:45.150 [I] RoutingManager: - RA Header - flags - M:0 O:1 S:1
00:58:45.150 [I] RoutingManager: - RA Header - default route - lifetime:0
00:58:45.150 [I] RoutingManager: - RIO fd6e:2bdb:1238:1::/64 (lifetime:1800, prf:medium)
00:58:45.150 [I] RoutingManager: Sent RA on infra netif 2
00:58:45.150 [I] RoutingManager: Will evaluate routing policy in 02:55.221 (175221 msec)
00:58:45.151 [I] RoutingManager: Received RA from fe80:0:0:0:5140:2e15:a4bf:4c99 on infra netif 2 (this BR routing-manager)
00:58:49.282 [I] Mle-----------: Send Advertisement (ff02:0:0:0:0:0:0:1)
00:58:49.283 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:3, cmd:PROP_VALUE_SET, key:STREAM_RAW, len:69, channel:15, maxbackoffs:4, maxretries:15 ...
Resetting the device and commissioning from scratch
Given the previous failure, I decided to reset the bulb, remove it from Apple Home and try to commission it to only Home Assistant. This also fails.
The Matter server logs:
2026-01-10 23:15:40.242 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:40.590 (MainThread) DEBUG [matter_server.server.device_controller.mdns] Discovered commissionable Matter node: AsyncServiceInfo(type='_matterc._udp.local.', name='751EAF7055DF1A4C._matterc._udp.local.', addresses=[], port=5540, weight=0, priority=0, server='82A0CA28F92C79A5.local.', properties={b'VP': b'4442+67', b'SII': b'800', b'SAI': b'800', b'SAT': b'4000', b'T': b'0', b'D': b'1691', b'CM': b'0', b'RI': b'B1016AC923D01D2C595658AFB6906EED1550', b'PH': b'36', b'PI': None}, interface_index=None)
2026-01-10 23:15:41.089 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.092 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.096 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.099 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.100 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.102 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.103 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.104 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.105 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.106 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.107 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.109 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.110 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.111 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.112 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.114 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.115 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.120 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.121 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.122 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.131 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.132 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.133 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.141 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.142 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.143 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.151 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.152 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.153 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.161 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.162 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.163 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.172 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.172 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.174 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.182 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.183 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.184 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.192 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.193 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:15:41.194 (Dummy-2) CHIP_DETAIL [chip.native.DIS] SRV record already actively processed.
2026-01-10 23:15:41.202 (Dummy-2) CHIP_DETAIL [chip.native.DIS] Warning: Attempt to mDNS broadcast failed on ???: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000013: No such device
2026-01-10 23:15:41.203 (Dummy-2) CHIP_DETAIL [chip.native.DIS] mDNS broadcast had only partial success: 12 successes and 1 failures.
2026-01-10 23:18:30.425 (MainThread) DEBUG [matter_server.server.device_controller.mdns] Commissionable Matter node disappeared: AsyncServiceInfo(type='_matterc._udp.local.', name='751EAF7055DF1A4C._matterc._udp.local.', addresses=[], port=None, weight=0, priority=0, server=None, properties={}, interface_index=None)
The OTBR logs for this same time:
01:10:31.236 [I] SrpServer-----: Adding service 'Nanoleaf A19 69B-20BC._ltpdu._udp.default.service.arpa.'
01:10:31.236 [I] SrpServer-----: Adding service '751EAF7055DF1A4C._matterc._udp.default.service.arpa.'
01:10:31.236 [I] SrpServer-----: sub-type: _V4442
01:10:31.236 [I] SrpServer-----: sub-type: _S6
01:10:31.236 [I] SrpServer-----: sub-type: _L1691
01:10:31.236 [I] SrpServer-----: SRP update handler is notified (updatedId = 1507616627)
[INFO]-ADPROXY-: Advertise SRP service updates: host=82A0CA28F92C79A5.default.service.arpa.
[DEBG]-ADPROXY-: Publish SRP service '6FD68F9ADEC9EBDE-00000000DA734DA5._matter._tcp.default.service.arpa.'
[INFO]-MDNS----: Registering service 6FD68F9ADEC9EBDE-00000000DA734DA5._matter._tcp,_I6FD68F9ADEC9EBDE
[DEBG]-ADPROXY-: Publish SRP service 'Nanoleaf A19 69B-20BC._ltpdu._udp.default.service.arpa.'
[INFO]-MDNS----: Registering service Nanoleaf A19 69B-20BC._ltpdu._udp
[DEBG]-ADPROXY-: Publish SRP service '751EAF7055DF1A4C._matterc._udp.default.service.arpa.'
[INFO]-MDNS----: Registering service 751EAF7055DF1A4C._matterc._udp,_L1691,_S6,_V4442
[DEBG]-ADPROXY-: Publish SRP host '82A0CA28F92C79A5.default.service.arpa.'
[INFO]-MDNS----: Registering new host 82A0CA28F92C79A5
[DEBG]-MDNS----: Created new shared DNSServiceRef: 0xaaaaf2a3b760
[INFO]-MDNS----: Successfully registered host 82A0CA28F92C79A5 address fd6e:2bdb:1238:1:27c0:b4e5:285c:6cd0
[INFO]-MDNS----: Successfully registered all host 82A0CA28F92C79A5 addresses
[INFO]-ADPROXY-: Handle publish SRP host '82A0CA28F92C79A5.default.service.arpa.': OK
[INFO]-ADPROXY-: Waiting for more publishing callbacks 3
[INFO]-MDNS----: Successfully registered service 6FD68F9ADEC9EBDE-00000000DA734DA5._matter._tcp
[INFO]-ADPROXY-: Handle publish SRP service '6FD68F9ADEC9EBDE-00000000DA734DA5._matter._tcp.default.service.arpa.': OK
[INFO]-ADPROXY-: Waiting for more publishing callbacks 2
[INFO]-MDNS----: Successfully registered service 751EAF7055DF1A4C._matterc._udp
[INFO]-ADPROXY-: Handle publish SRP service '751EAF7055DF1A4C._matterc._udp.default.service.arpa.': OK
[INFO]-ADPROXY-: Waiting for more publishing callbacks 1
[INFO]-MDNS----: Successfully registered service Nanoleaf A19 69B-20BC._ltpdu._udp
[INFO]-ADPROXY-: Handle publish SRP service 'Nanoleaf A19 69B-20BC._ltpdu._udp.default.service.arpa.': OK
01:10:31.917 [I] SrpServer-----: Handler result of SRP update (id = 1507616627) is received: OK
01:10:31.917 [I] SrpServer-----: Committing update for existing host 82A0CA28F92C79A5.default.service.arpa.
01:10:31.917 [I] SrpServer-----: Granted lease:7200, key-lease:680400, ttl:7200
01:10:31.917 [I] SrpServer-----: Add new service '6FD68F9ADEC9EBDE-00000000DA734DA5._matter._tcp.default.service.arpa.'
01:10:31.917 [I] SrpServer-----: sub-type: _I6FD68F9ADEC9EBDE._sub._matter._tcp.default.service.arpa.
01:10:31.917 [I] SrpServer-----: Add new service 'Nanoleaf A19 69B-20BC._ltpdu._udp.default.service.arpa.'
01:10:31.917 [I] SrpServer-----: Add new service '751EAF7055DF1A4C._matterc._udp.default.service.arpa.'
01:10:31.917 [I] SrpServer-----: sub-type: _V4442._sub._matterc._udp.default.service.arpa.
01:10:31.917 [I] SrpServer-----: sub-type: _S6._sub._matterc._udp.default.service.arpa.
01:10:31.917 [I] SrpServer-----: sub-type: _L1691._sub._matterc._udp.default.service.arpa.
01:10:31.917 [I] SrpServer-----: Send success response with granted lease: 7200 and key lease: 680400
01:10:31.918 [D] RadioSelector-: RadioSelector: SelectRadio 15.4 - neighbor:[82a0ca28f92c79a5 rloc16:0xe801 radio-pref:{15.4:255} state:Valid]
01:10:31.918 [D] P-SpinelDrive-: Sent spinel frame, flg:0x2, iid:0, tid:3, cmd:PROP_VALUE_SET, key:STREAM_RAW, len:85, channel:15, maxbackoffs:4, maxretries:15 ...
Any advice on what I can try next would be greatly appreciated.
