New to Matter/Thread and ZBT-2 - Can’t get IKEA Alpstuga to connect

Hi all,

I’ve been running Zigbee devices through ZHA for sometime off an older Conbee USB dongle. I recently upgraded the Conbee to a ZBT-2 and migrated the Zigbee devices onto the ZHA network successfully.

To my surprise, and I’m not sure if it’s a miscommunication from Home Assistant, or something I missed, I found out that you need a second ZBT-2 for Matter/Thread. So my homelab setup now looks quite phallic…

Anyway the intention behind connecting up Matter/Thread was to connect up my IKEA Alpstuga sensors, and I just can’t get it to connect.




To be honest, it’s quite frustrating - and probably the most difficult thing I’ve had to setup in Home Assistant.

  • Under Thread, I’ve “send credentials to phone” and “send credentials to home assistant”
  • The preferred network (as below screenshots) seem to be correct
  • I’ve used my phone to add the device and scan the QR code
  • I’ve ensured that the IKEA Alpstuga is in pairing mode (flashing LED), I’ve tried resetting, power cycling, etc

In terms of settings:








s6-rc: info: service matter-server successfully stopped
s6-rc: info: service banner: stopping
s6-rc: info: service banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: starting
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
-----------------------------------------------------------
 Add-on: Matter Server
 Matter WebSocket Server for Home Assistant Matter support.
-----------------------------------------------------------
 Add-on version: 9.1.1
 You are running the latest version of this add-on.
 System: Home Assistant OS 18.1  (amd64 / generic-x86-64)
 Home Assistant Core: 2026.7.4
 Home Assistant Supervisor: 2026.07.3
-----------------------------------------------------------
 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 matter-server: starting
s6-rc: info: service matter-server successfully started
s6-rc: info: service legacy-services: starting
[21:21:25] INFO: Starting Matter Server...
s6-rc: info: service legacy-services successfully started
[21:21:25] INFO: Time sync 'auto': host NTP is synchronized, enabling time sync.
[21:21:25] INFO: Using 'eno1' as primary network interface.
[21:21:25] INFO: Successfully send discovery information to Home Assistant.
2026-07-29 21:21:26.634 INFO   MatterServer         Command line: --storage-path /data --port 5580 --log-level info --primary-interface eno1 --fabricid 2 --vendorid 4939 --listen-address 172.30.32.1 --listen-address 127.0.0.1 --enable-time-sync
2026-07-29 21:21:26.635 INFO   MatterServer         Using storage drivers: kv=wal, blob=dir
2026-07-29 21:21:26.638 INFO   ConfigStorage        Storage location: /data (Directory)
2026-07-29 21:21:26.648 INFO   ConfigStorage        Set config key fabricLabel to Home
2026-07-29 21:21:26.653 INFO   ConfigStorage        Set config key nextNodeId to 4
2026-07-29 21:21:26.656 INFO   ConfigStorage        Set config key wifiSsid to undefined
2026-07-29 21:21:26.660 INFO   ConfigStorage        Set config key wifiCredentials to <redacted>
2026-07-29 21:21:26.664 INFO   ConfigStorage        Set config key threadDataset to <redacted>
2026-07-29 21:21:26.669 INFO   ServerIdResolver     Found existing storage for server ID: server-2-134b
2026-07-29 21:21:26.682 INFO   DclCertifi~teService Initialize CertificateService prod: https://on.dcl.csa-iot.org test: https://on.test-net.dcl.csa-iot.org github: yes
2026-07-29 21:21:26.683 INFO   DclVendorInfoService Initialize VendorInfoService source: https://on.dcl.csa-iot.org interval: 24h
2026-07-29 21:21:26.683 INFO   Controller~ndHandler BLE is disabled
2026-07-29 21:21:26.683 INFO   Controller~ndHandler Time synchronization enabled
2026-07-29 21:21:26.684 NOTICE WebSocketC~erHandler Starting server: matter-server/1.3.3 (matter.js/0.17.7)
2026-07-29 21:21:26.714 INFO   DclCertifi~teService Loaded 179 certificates from storage
2026-07-29 21:21:26.729 INFO   DclCertifi~teService seed: consumed 0 PAA certs from snapshot 2026-07-17T03:06:21.169Z
2026-07-29 21:21:26.731 INFO   DclCertifi~teService seed: consumed 0 CDSigner certs from snapshot 2026-07-17T03:06:21.169Z
2026-07-29 21:21:26.737 INFO   DclVendorInfoService Loaded 455 vendors from storage
2026-07-29 21:21:26.738 INFO   DclVendorInfoService seed: skipping vendors — storage has 455 entries >= seed expectedCount 455
2026-07-29 21:21:26.738 INFO   DclVendorInfoService Fetching vendor information from DCL
2026-07-29 21:21:26.742 INFO   ServerNodeStore      Opened server-2-134b storage location: /data/server-2-134b driver: wal
2026-07-29 21:21:26.789 INFO   BaseEventStore       Loaded volatile event store with next number 4001
2026-07-29 21:21:26.792 INFO   Endpoint             server-2-134b ready endpoint#: 0 type: RootNode (0x16, rev 4) behaviors: 💤parts ✓index ✓accessControl ✓basicInformation ✓generalCommissioning ✓generalDiagnostics ✓administratorCommissioning ✓operationalCredentials ✓groupKeyManagement ✓commissioning ✓network 💤productDescription 💤subscriptions 💤sessions ✓events 💤controller ✓descriptor
2026-07-29 21:21:26.798 INFO   DclOtaUpdateService  Initialize OTAUpdateService prod: https://on.dcl.csa-iot.org test: https://on.test-net.dcl.csa-iot.org
2026-07-29 21:21:26.804 INFO   Endpoint             server-2-134b.ota-provider ready endpoint#: 1 type: OtaProvider (0x14, rev 1) behaviors: ✓otaSoftwareUpdateProvider ✓descriptor ✓softwareupdates
2026-07-29 21:21:26.804 INFO   CertificateAuthority Loaded stored credentials with ID 0
2026-07-29 21:21:26.809 NOTICE FabricAuthority      Rotated NOC for fabric 1
2026-07-29 21:21:26.817 WARN   Commission~ontroller BLE is not enabled on this platform
2026-07-29 21:21:26.818 NOTICE Node                 server-2-134b going online
2026-07-29 21:21:26.819 INFO   ServerNetworkRuntime TCP transport enabled (incoming=true, outgoing=true)
2026-07-29 21:21:26.824 INFO   NetworkProfiles      Configure profile fast exchanges: 200 additionalMrpDelay: 0
2026-07-29 21:21:26.824 NOTICE Node                 server-2-134b is online
2026-07-29 21:21:26.824 INFO   FabricAccessControl  ACL List updated privilege: 5 authMode: 2 subjects: 112233 targets: null fabricIndex: 1 privilege: 3 authMode: 2 subjects:  targets: { cluster: 41, endpoint: 1, deviceType: null } fabricIndex: 1 privilege: 3 authMode: 2 subjects:  targets: { cluster: 1364, endpoint: 2, deviceType: null } fabricIndex: 1
2026-07-29 21:21:26.834 INFO   MdnsAdvertisement    Publishing kind: operational service: mdns:FD0E412FDE70AE6B-000000000001B669._matter._tcp.local
2026-07-29 21:21:26.835 INFO   SoftwareUp~teManager Scheduling first OTA update check in 5m 12s
2026-07-29 21:21:26.838 NOTICE Controller~ndHandler Matter Controller started
2026-07-29 21:21:26.838 INFO   Controller~ndHandler OTA event handlers registered
2026-07-29 21:21:26.841 INFO   WebRtcTran~torServer WebRtcTransportRequestor initialized on endpoint=2 (id="camera-controller")
2026-07-29 21:21:26.844 INFO   Endpoint             server-2-134b.camera-controller ready endpoint#: 2 type: CameraController (0x0147, rev 1) behaviors: ✓webRtcTransportRequestor ✓descriptor
2026-07-29 21:21:26.844 INFO   Controller~ndHandler WebRTC callback bridge wired
2026-07-29 21:21:26.844 INFO   Controller~ndHandler Found 0 nodes:
2026-07-29 21:21:26.844 INFO   Controller~ndHandler All 0 nodes initialized, starting connections
2026-07-29 21:21:26.846 NOTICE WebServer            Webserver listening on http://172.30.32.1:5580
2026-07-29 21:21:26.847 NOTICE WebSocketC~erHandler Starting server: matter-server/1.3.3 (matter.js/0.17.7)
2026-07-29 21:21:26.847 NOTICE WebServer            Webserver listening on http://127.0.0.1:5580
2026-07-29 21:21:28.153 INFO   DclVendorInfoService Fetched 452 vendors from DCL
2026-07-29 21:21:28.177 INFO   DclVendorInfoService Stored 456 vendors
2026-07-29 21:21:28.679 INFO   DclCertifi~teService All certificates up to date (179 total)
2026-07-29 21:21:36.820 INFO   WebSocketC~erHandler [0] WebSocket connection established
2026-07-29 21:21:36.825 INFO   WebSocketC~erHandler WebSocket server start_listening
2026-07-29 21:21:36.825 INFO   WebSocketC~erHandler WebSocket server start_listening. Returned 0 nodes
2026-07-29 21:21:36.826 INFO   ConfigStorage        Set config key fabricLabel to Home
2026-07-29 21:26:38.836 INFO   SoftwareUp~teManager No updatable nodes found
2026-07-30 10:50:15.270 INFO   WebSocketC~erHandler [0] WebSocket connection closed
2026-07-30 10:50:15.271 INFO   WebSocketC~erHandler [0] Releasing fabric label ownership (owning connection closed)
2026-07-30 10:50:26.049 INFO   WebSocketC~erHandler [1] WebSocket connection established
2026-07-30 10:50:26.053 INFO   WebSocketC~erHandler WebSocket server start_listening
2026-07-30 10:50:26.053 INFO   WebSocketC~erHandler WebSocket server start_listening. Returned 0 nodes
2026-07-30 10:50:26.054 INFO   ConfigStorage        Set config key fabricLabel to Home
2026-07-30 14:56:25.742 INFO   WebSocketC~erHandler [1] WebSocket connection closed
2026-07-30 14:56:25.742 INFO   WebSocketC~erHandler [1] Releasing fabric label ownership (owning connection closed)
2026-07-30 14:56:48.877 INFO   WebSocketC~erHandler [2] WebSocket connection established
2026-07-30 14:56:48.880 INFO   WebSocketC~erHandler WebSocket server start_listening
2026-07-30 14:56:48.880 INFO   WebSocketC~erHandler WebSocket server start_listening. Returned 0 nodes
2026-07-30 14:56:48.880 INFO   ConfigStorage        Set config key fabricLabel to Home

Bump - still need help on this. Not sure how to solve it

I’m having the same issue, running hass in docker with a matter server and open thread border router. Everything seems to be set up correctly on the infrastructure / networking sides, but with my android device I cannot seem to connect it. After some digging, the device can succesfully connect to the Thread network but it never arrives in the matter environment. This is Claude’s summary after an android debugging session:

Issue: Adding the IKEA ALPSTUGA sensor fails at the last step (“can’t reach device”). Logs show BLE pairing, PASE, and Thread provisioning all succeed — it fails only when the phone tries to open the final CASE session; the device never replies, and it times out after 3 retries.

Ruled out: UniFi IPv6, Tado’s border router, OTBR/mesh health, LAN routing (verified via ping), mDNS discovery/resolution (verified working), Home Assistant/matter-server (not even involved — commissioning runs via Google Play Services), stale fabrics (cleared via reset), battery/sleep state (it’s USB-powered).

Likely cause: Device-firmware timing bug — it probably restarts its Thread stack to apply new credentials and isn’t back up before the CASE handshake times out. Not fixable on your end.

Next step: Check for an ALPSTUGA firmware update, or report it to IKEA support.

It’s very unlikely that the alpstuga is the problem.
Most common are ipv6 forwarding issues, especially with HA running in a VM, Proxmox etc.

Try the following command in the Terminal/CLI:

ha docker options --enable-ipv6=true

after that restart.

Don’t forget that your phone and HA have to be in the same network if you’re using Virtual Networks. IPv6 has to be forwarded along the hole Chain: Device-HA-Network-Phone

If it doesn’t help you have to do some more reading/searching here in the forum.

There’s plenty of stuff to go through.