HAOS VM + SkyConnect + Nanoleaf Essentias Matter = stuck on "Checking network connectivity"

Hello everyone :slight_smile:

I’ve set up my Home Assistant recently and am trying to add the first device to it, which is the Matter Nanoleaf Essentials light bulb.

What happens:

  • When I try to add a Matter device on an Android companion app, I end up on “Checking network connectivity” and then it won’t connect suggesting to check if the phone is in the same Wi-Fi network etc.

In short:

  • Ubuntu 24.04 server as a host with a VM with HAOS on it. Network is bridged = same LAN.
  • IPv6 present, working, autoconfigured in HA.
  • Let’s Encrypt set up with the domain name - internal/external URLs are the same.
  • I use SkyConnect with Thread-only firmware (not the multiprotocol one)
  • OTBR, Thread and Matter addons installed, running, not showing errors.
  • Border router’s network is set as the preferred one.
  • Companion app’s Thread keys (or however it’s called in English) are properly synchronized with server and use the same network.
  • Ports 5580, 8080 and 8081 unlocked and accessible.I can access OTBR ui on port 8080 from my phone when it’s on Wi-Fi.
  • ICMPv6 enabled as well.
  • Nanoleaf app detects the Thread network, assigns it to the bulb when I click to join, but fails to connect and stays on BLE (though thread network stays assigned in the app’s UI)
  • I don’t have any other hubs like those from Google, Apple etc.

What I’m not sure is if mDNS works for me, I don’t know how to test it. Unfortunately I have the router from ISP and it doesn’t have anything related to it in the admin panel.

What else can I do to debug this? Where could I look for the logs that can possibly give some more information?

Check that you only have one NIC in HA (even disabled ones will cause issues).
Check that that one NIC have an IPv6 address starting with fe80.

Check that the companion app days it is already using the thread credentials when trying to copy them again.
If it claims to copy them, then your cache is bugged and needs to be cleared.

OK, I think there is only one NIC:

➜  ~ nmcli con show                   
Warning: nmcli (1.44.4) and NetworkManager (1.44.2) versions don't match. Restarting NetworkManager is advised.
NAME               UUID                                  TYPE      DEVICE 
Supervisor enp1s0  1xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxb  ethernet  enp1s0 
lo                 9xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx0  loopback  lo     
➜  ~ 

Regarding IPv6 addresses – it seems OK.

IPv6 addresses for enp1s0: 2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:9701/64, fe80::xxxx:xxxx:xxxx:f65e/64

Companion app claims that it and server use the same address, so it’s OK.

IT WORKS!!! :smiley:

In the meantime I have done the following:

  1. I’ve been playing some time ago with IPv6 config and I saw that I had a value set for DNS. I removed it. As I had reverted it to “auto” before, the DNS leftover probably should not matter. Still, I’ve cleared it.
  2. I’ve rebooted my phone (I think I found a post where someone needed to do so at some point)
  3. I entered the settings of my router and switch off the “ICMP flood attack detection”.

I’m not sure which of these fixed the issue, although I suspect it was the ICMP related thing. Thanks for help! :slight_smile: