Kajplats Thread pairing fails

I’m having an absolute nightmare with Matter over thread. Using an ZBT-2 as the only border gateway. I have managed to add a few devices, but I have a big pile of bulbs that just won’t connect (all Ikea Kajplats).

I have had some success by pairing using a Bluetooth Dongle and the Matter WebUI, pairing with phone has worked once, never again.

I have errors in the matter addon logs:

2026-02-11 21:10:14.394 ERROR  WebSocketC~erHandler [3] Failed to handle websocket request Commission failed: No device discovered using identifier {"shortDiscriminator":2}! Please check that the relevant device is online.
    at Function.nodeCommissionFailed (/opt/matterjs/node_modules/@matter-server/ws-controller/src/types/WebSocketMessageTypes.ts:517:16)
    at ControllerCommandHandler.commissionNode (/opt/matterjs/node_modules/@matter-server/ws-controller/src/controller/ControllerCommandHandler.ts:905:31)
    at async WebSocketControllerHandler.#handleCommissionWithCode (/opt/matterjs/node_modules/@matter-server/ws-controller/src/server/WebSocketControllerHandler.ts:587:28)
    at async WebSocketControllerHandler.#handleWebSocketRequest (/opt/matterjs/node_modules/@matter-server/ws-controller/src/server/WebSocketControllerHandler.ts:382:30)
  Caused by: [commissionable-device-discovery-failed] No device discovered using identifier {"shortDiscriminator":2}! Please check that the relevant device is online.
    at <anonymous> (/opt/matterjs/node_modules/@matter/protocol/src/peer/ControllerDiscovery.ts:65:23)
2026-02-11 21:10:48.758 INFO   WebSocketC~erHandler [3] WebSocket connection closed
2026-02-11 21:10:49.791 INFO   WebSocketC~erHandler [4] WebSocket connection established
2026-02-11 21:11:03.374 INFO   ConfigStorage        Set config key nextNodeId to 34
2026-02-11 21:11:03.377 INFO   PeerCommissioner     Connecting to device with identifier {"shortDiscriminator":2} and 1 scanners and knownAddress "undefined"
2026-02-11 21:11:03.377 INFO   ControllerDiscovery  Start Discovering devices using identifier {"shortDiscriminator":2} ...
2026-02-11 21:11:03.377 INFO   MdnsClient           Registered waiter for query _S2._sub._matterc._udp.local (14) with timeout 30000
2026-02-11 21:11:05.692 INFO   ClientInteraction    Invoke » @1:12•fdac⇵f854 0x1.LevelControl:0x8.moveToLevelWithOnOff:0x4 with level: 254 transitionTime: 0 optionsMask: { executeIfOff: false, coupleColorTempToLevel: false } optionsOverride: { executeIfOff: false, coupleColorTempToLevel: false }
2026-02-11 21:11:05.694 INFO   ClientInteraction    Invoke » @1:15•fdb3⇵f855 0x1.LevelControl:0x8.moveToLevelWithOnOff:0x4 with level: 254 transitionTime: 0 optionsMask: { executeIfOff: false, coupleColorTempToLevel: false } optionsOverride: { executeIfOff: false, coupleColorTempToLevel: false }
2026-02-11 21:11:05.695 INFO   ClientInteraction    Invoke » @1:16•fdaf⇵f856 0x1.LevelControl:0x8.moveToLevelWithOnOff:0x4 with level: 254 transitionTime: 0 optionsMask: { executeIfOff: false, coupleColorTempToLevel: false } optionsOverride: { executeIfOff: false, coupleColorTempToLevel: false }
2026-02-11 21:11:05.695 INFO   ClientInteraction    Invoke » @1:18•fdae⇵f857 0x1.LevelControl:0x8.moveToLevelWithOnOff:0x4 with level: 254 transitionTime: 0 optionsMask: { executeIfOff: false, coupleColorTempToLevel: false } optionsOverride: { executeIfOff: false, coupleColorTempToLevel: false }
2026-02-11 21:11:05.695 INFO   ClientInteraction    Invoke » @1:4•fdad⇵f858 0x1.LevelControl:0x8.moveToLevelWithOnOff:0x4 with level: 254 transitionTime: 0 optionsMask: { executeIfOff: false, coupleColorTempToLevel: false } optionsOverride: { executeIfOff: false, coupleColorTempToLevel: false }
2026-02-11 21:11:33.378 INFO   MdnsClient           Finishing waiter for query _S2._sub._matterc._udp.local (14), resolving: true
2026-02-11 21:11:33.379 INFO   ControllerDiscovery  Found 0 devices using identifier {"shortDiscriminator":2}
2026-02-11 21:11:33.379 ERROR  WebSocketC~erHandler [4] Failed to handle websocket request Commission failed: No device discovered using identifier {"shortDiscriminator":2}! Please check that the relevant device is online.
    at Function.nodeCommissionFailed (/opt/matterjs/node_modules/@matter-server/ws-controller/src/types/WebSocketMessageTypes.ts:517:16)
    at ControllerCommandHandler.commissionNode (/opt/matterjs/node_modules/@matter-server/ws-controller/src/controller/ControllerCommandHandler.ts:905:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async WebSocketControllerHandler.#handleCommissionWithCode (/opt/matterjs/node_modules/@matter-server/ws-controller/src/server/WebSocketControllerHandler.ts:587:28)
    at async WebSocketControllerHandler.#handleWebSocketRequest (/opt/matterjs/node_modules/@matter-server/ws-controller/src/server/WebSocketControllerHandler.ts:382:30)
  Caused by: [commissionable-device-discovery-failed] No device discovered using identifier {"shortDiscriminator":2}! Please check that the relevant device is online.
    at <anonymous> (/opt/matterjs/node_modules/@matter/protocol/src/peer/ControllerDiscovery.ts:65:23)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
2026-02-11 21:15:33.383 INFO   WebSocketC~erHandler [4] WebSocket connection closed
2026-02-11 21:16:25.556 INFO   ClientSubs~onHandler @1:16•fdaf⇵26a0 Ignoring data report for unknown subscription ID 40e4215b
2026-02-11 21:16:25.662 INFO   ClientSubs~onHandler @1:16•fdaf⇵26a1 Ignoring data report for unknown subscription ID 351115ba
2026-02-11 21:16:25.773 INFO   ClientSubs~onHandler @1:16•fdaf⇵26a2 Ignoring data report for unknown subscription ID c4683d45
2026-02-11 21:17:45.485 INFO   ClientSubscription   Subscription 8fb38bde timed out after 16m 25s
2026-02-11 21:17:45.485 INFO   PairedNode           @1:3 Subscription timed out ... trying to re-establish ...
2026-02-11 21:17:45.485 INFO   PairedNode           @1:3 Reconnecting now ...
2026-02-11 21:17:45.487 INFO   PhysicalDe~roperties server-2-134b.@1:3: Overwriting minIntervalFloorSeconds for intermittently connected device to 0
2026-02-11 21:17:45.488 INFO   ClientInteraction    Subscribe » @1:3•fdb0⇵f859 min: 0 max: 9m 56s attributes:  events:  eventFilters: undefined=655363
2026-02-11 21:17:50.302 INFO   MdnsClient           Registered waiter for query AAFCACEEF7EA61A2-0000000000000003._matter._tcp.local (15) with timeout 5000
2026-02-11 21:17:50.406 INFO   MdnsClient           Finishing waiter for query AAFCACEEF7EA61A2-0000000000000003._matter._tcp.local (15), resolving: true
2026-02-11 21:18:42.701 INFO   WebSocketC~erHandler [0] WebSocket connection closed
2026-02-11 21:18:47.460 INFO   Session              @1:3•fdb0 Session ended
2026-02-11 21:18:47.461 INFO   ClientNode           server-2-134b.@1:3 is offline
2026-02-11 21:18:47.461 INFO   Commission~ontroller Session for peer node @1:3 disconnected ...
2026-02-11 21:18:47.461 INFO   PairedNode           @1:3 Session disconnected while Node is Reconnecting
2026-02-11 21:19:31.889 INFO   WebSocketC~erHandler [5] WebSocket connection established
2026-02-11 21:19:32.051 INFO   ConfigStorage        Set config key fabricLabel to Home
2026-02-11 21:19:49.430 INFO   Session              •unsecured#59ab34ddac35fedb Session ended
2026-02-11 21:19:49.430 INFO   PairedNode           @1:3 Simple re-establishing session did not work. Reconnect ... [retransmission-limit-reached] @1:3 is not reachable
  at ReconnectableExchangeProvider.<anonymous> (/opt/matterjs/node_modules/@matter/protocol/src/peer/PeerSet.ts:403:23)
  at async ReconnectableExchangeProvider.reconnectChannel (/opt/matterjs/node_modules/@matter/protocol/src/protocol/ExchangeProvider.ts:125:9)
  at async InteractionClientMessenger.send (/opt/matterjs/node_modules/@matter/protocol/src/interaction/InteractionMessenger.ts:961:21)
  at async InteractionClientMessenger.sendSubscribeRequest (/opt/matterjs/node_modules/@matter/protocol/src/interaction/InteractionMessenger.ts:1031:9)
  at async subscribe (/opt/matterjs/node_modules/@matter/protocol/src/action/client/ClientInteraction.ts:478:13)
  at async QueuedClientInteraction.subscribe (/opt/matterjs/node_modules/@matter/protocol/src/action/client/ClientInteraction.ts:529:28)
  at async PairedNode.subscribeAllAttributesAndEvents (/opt/matterjs/node_modules/@project-chip/matter.js/src/device/PairedNode.ts:1072:30)
  at async PairedNode.#initialize (/opt/matterjs/node_modules/@project-chip/matter.js/src/device/PairedNode.ts:867:37)
  at async PairedNode.reconnect (/opt/matterjs/node_modules/@project-chip/matter.js/src/device/PairedNode.ts:653:17)
  at async StandardTimer.callback (/opt/matterjs/node_modules/@project-chip/matter.js/src/device/PairedNode.ts:1181:89)
2026-02-11 21:19:49.434 INFO   Controller~ndHandler Node @1:3 availability changed: true -> false (state: Reconnecting -> WaitingForDeviceDiscovery)
2026-02-11 21:19:49.434 INFO   WebSocketC~erHandler [5] Node @?:3 availability changed to false
2026-02-11 21:19:49.435 INFO   MdnsClient           Registered waiter for query AAFCACEEF7EA61A2-0000000000000003._matter._tcp.local (16) with no timeout
2026-02-11 21:19:49.438 INFO   MdnsClient           Finishing waiter for query AAFCACEEF7EA61A2-0000000000000003._matter._tcp.local (16), resolving: true
2026-02-11 21:20:58.061 INFO   ConfigStorage        Set config key threadDataset to 0e080000000000010000000300000f4a0300000b35060004001fffe00208d0c89b7aa4b039950708fdb747755700ec0d051074053b0cc738fec2381ff9fcd19379a7030e68612d7468726561642d643932380102d9280410ac7a1181fef007b270c5158d70a1fd2f0c0402a0f7f8
2026-02-11 21:20:58.064 INFO   WebSocketC~erHandler Broadcasting server_info_updated event { fabric_id: 2, compressed_fabric_id: 12320912822940361122, fabric_index: 1, schema_version: 11, min_supported_schema_version: 11, sdk_version: "matter-server/0.3.6 (matter.js/0.16.9-alpha.0-20260211-5dcebea26)", wifi_credentials_set: false, thread_credentials_set: true, bluetooth_enabled: true }
2026-02-11 21:21:19.408 INFO   Session              •unsecured#753209ca3c97b6c8 Session ended
2026-02-11 21:21:21.412 INFO   ClientNode           server-2-134b.@1:3 is online
2026-02-11 21:21:21.413 INFO   Transaction          Tx ◦offline#17c waiting on ◦offline#17d
2026-02-11 21:21:21.413 INFO   CaseClient           @1:3•fdb7 New session with @1:3 4↔2 address: udp://[fd65:9bfc:ac0:1:2410:a012:5cc9:2939]:5540 fabric: aafcaceef7ea61a2 (#1) SII: 3.5s SAI: 2.06s SAT: 1.5s DMRev: 18 IMRev: 12 spec: 0x1040100 maxPaths: 1 CATs:
2026-02-11 21:21:21.414 INFO   ClientInteraction    Read » @1:3•fdb7⇵f85d attributes:
2026-02-11 21:21:21.419 INFO   Session              •unsecured#195c408b8a834bbe Session ended
2026-02-11 21:21:21.419 INFO   Transaction          Tx ◦offline#17f waiting on ◦offline#17c
2026-02-11 21:21:21.420 INFO   CommissioningClient  Operational address changed for @1:3 from udp://[fd31:1427:d798:1:a9f9:7616:1471:9a75]:5540 to udp://[fd65:9bfc:ac0:1:2410:a012:5cc9:2939]:5540
2026-02-11 21:21:21.707 INFO   ClientInteraction    Read « @1:3•fdb7⇵f85d undefined (empty)
2026-02-11 21:21:21.708 INFO   PhysicalDe~roperties server-2-134b.@1:3: Overwriting minIntervalFloorSeconds for intermittently connected device to 0
2026-02-11 21:21:21.708 INFO   ClientInteraction    Subscribe » @1:3•fdb7⇵f85e min: 0 max: 10m 8s attributes:  events:  eventFilters: undefined=655363
2026-02-11 21:21:22.048 INFO   ClientInteraction    Subscription successful « @1:3•fdb7⇵f85e 2↔2 id: b4884679 interval: 15m timeout: 16m 25s
2026-02-11 21:21:22.158 INFO   Controller~ndHandler Node @1:3 availability changed: false -> true (state: WaitingForDeviceDiscovery -> Connected)
2026-02-11 21:21:22.158 INFO   WebSocketC~erHandler [5] Node @?:3 availability changed to true
2026-02-11 21:21:26.964 INFO   ConfigStorage        Set config key nextNodeId to 35
2026-02-11 21:21:26.967 INFO   PeerCommissioner     Connecting to device with identifier {"shortDiscriminator":2} and 1 scanners and knownAddress "undefined"
2026-02-11 21:21:26.968 INFO   ControllerDiscovery  Start Discovering devices using identifier {"shortDiscriminator":2} ...
2026-02-11 21:21:26.968 INFO   MdnsClient           Registered waiter for query _S2._sub._matterc._udp.local (17) with timeout 30000
2026-02-11 21:21:56.968 INFO   MdnsClient           Finishing waiter for query _S2._sub._matterc._udp.local (17), resolving: true
2026-02-11 21:21:56.968 INFO   ControllerDiscovery  Found 0 devices using identifier {"shortDiscriminator":2}
2026-02-11 21:21:56.969 ERROR  WebSocketC~erHandler [5] Failed to handle websocket request Commission failed: No device discovered using identifier {"shortDiscriminator":2}! Please check that the relevant device is online.
    at Function.nodeCommissionFailed (/opt/matterjs/node_modules/@matter-server/ws-controller/src/types/WebSocketMessageTypes.ts:517:16)
    at ControllerCommandHandler.commissionNode (/opt/matterjs/node_modules/@matter-server/ws-controller/src/controller/ControllerCommandHandler.ts:905:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async WebSocketControllerHandler.#handleCommissionWithCode (/opt/matterjs/node_modules/@matter-server/ws-controller/src/server/WebSocketControllerHandler.ts:587:28)
    at async WebSocketControllerHandler.#handleWebSocketRequest (/opt/matterjs/node_modules/@matter-server/ws-controller/src/server/WebSocketControllerHandler.ts:382:30)
  Caused by: [commissionable-device-discovery-failed] No device discovered using identifier {"shortDiscriminator":2}! Please check that the relevant device is online.
    at <anonymous> (/opt/matterjs/node_modules/@matter/protocol/src/peer/ControllerDiscovery.ts:65:23)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
2026-02-11 21:23:05.115 INFO   ClientSubs~onHandler @1:1f•fdb4⇵5997 Ignoring data report for unknown subscription ID fee067cd
2026-02-11 21:23:05.456 INFO   ClientSubs~onHandler @1:1f•fdb4⇵5998 Ignoring data report for unknown subscription ID e2078186
2026-02-11 21:23:05.873 INFO   ClientSubs~onHandler @1:1f•fdb4⇵5999 Ignoring data report for unknown subscription ID a69066a7
2026-02-11 21:27:14.620 INFO   ClientSubs~onHandler @1:3•fdb7⇵90fb Ignoring data report for unknown subscription ID 8fb38bde
2026-02-11 21:32:30.005 INFO   ClientSubscription   Subscription 13a10af1 timed out after 32m 13s
2026-02-11 21:32:30.005 INFO   PairedNode           @1:5 Subscription timed out ... trying to re-establish ...
2026-02-11 21:32:30.005 INFO   PairedNode           @1:5 Reconnecting now ...
2026-02-11 21:32:30.007 INFO   PhysicalDe~roperties server-2-134b.@1:5: Overwriting minIntervalFloorSeconds for intermittently connected device to 0
2026-02-11 21:32:30.008 INFO   ClientInteraction    Subscribe » @1:5•fdb2⇵f85f min: 0 max: 10m 10s attributes:  events:  eventFilters: undefined=262154
2026-02-11 21:32:53.384 INFO   MdnsClient           Registered waiter for query AAFCACEEF7EA61A2-0000000000000005._matter._tcp.local (18) with timeout 5000
2026-02-11 21:32:53.488 INFO   MdnsClient           Finishing waiter for query AAFCACEEF7EA61A2-0000000000000005._matter._tcp.local (18), resolving: true

I think I can see mdns requests on my local network.

Phone is a Fold 7, and the HA app says it has the correct credentials.

This is so much more difficult than Zigbee or Zwave :frowning: