Matter uses IPv6 link-local addresses for local control paths. Some routers, VLANs, or Android Wi-Fi stacks mishandle link-local — commissioning finishes in BLE then dies when the controller tries to reach the device locally.
Identify link-local issues
Failure only on certain routers or when VLANs separate phone and IoT. Works on iPhone hotspot test (diagnostic only). Home Assistant host with IPv6 disabled on Docker network. Windows-only controllers rare; mostly phone + hub + IoT on same L2 segment.
Fixes
Enable IPv6 on LAN (see Thread IPv6 article if dual problem). Flatten VLANs for commissioning. For HA, enable IPv6 on host and Matter add-on per current docs. Disable client/AP isolation. Firmware-update hub and router. Keep phone awake on LAN during entire commission — no switching to cellular mid-flow.
Verify
Device reachable in controller app without cloud delay; local toggle works in airplane mode with Wi-Fi on.