Problem with Matter devices over wifi and thread

Hi all,
I’m having a damn problem with matter, actually I’m near to solving by trowing away anything… :frowning:
Long story short, I had an Aqara U200, after many retries I’ve been able to pair it via Matter and thread with HA (HA on docker, OTBR on docker, Matter on Docker). Then I bought some Matter-over-wifi christmas lights, and after many retries, again, I’ve been able to pair them with HA. But, after a reboot, all the two matter devices are offline now, and I’m not able to make them work again…
So, hope someone had similar problem and can help me… :frowning:
I’m on a Debian 13 mini Pc, here are my docker compose config, my network interfaces and some other config, Last, my matter docker logs…

docker-compose.yaml
services:
    home-assistant:
        container_name: home-assistant
        image: ghcr.io/home-assistant/home-assistant:stable
        cap_add:
            - NET_ADMIN
            - NET_RAW
        volumes:
            - /home/deb/homeassistant:/config
            - /home/deb/ha_backups:/config/backups
            - /run/dbus:/run/dbus:ro
        environment:
            - TZ=Europe/Rome
        network_mode: host
        restart: always

    otbr:
        container_name: otbr
        image: ghcr.io/ownbee/hass-otbr-docker
        restart: unless-stopped
        privileged: true # don't change this !
        network_mode: host # don't change this !
        cap_add:
          - SYS_ADMIN
          - NET_ADMIN
        environment:
            OT_RCP_DEVICE: "spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=460800"
            BACKBONE_IF: enp1s0
            FLOW_CONTROL: 1
            FIREWALL: 1
            NAT64: 1
            BAUDRATE: 460800
            OTBR_REST_PORT: 8081
            OTBR_WEB_PORT: 7586
            AUTOFLASH_FIRMWARE: 0
        devices:
            - /dev/ttyACM0:/dev/ttyUSB0
            - /dev/net/tun:/dev/net/tun
        volumes:
          - /home/deb/otbr:/var/lib/thread

    matter:
        container_name: matter
        image: ghcr.io/home-assistant-libs/python-matter-server:stable
        restart: unless-stopped
        network_mode: host
        privileged: true
        security_opt:
            - apparmor=unconfined
        volumes:
            - /home/deb/matter:/data
            - /run/dbus:/run/dbus:ro
            - /etc/localtime:/etc/localtime:ro
        command: >
            --storage-path /data
            --paa-root-cert-dir /data/credentials
            --bluetooth-adapter 0
            --log-level-sdk progress
            --primary-interface enp1s0
Network Interfaces
$ ifconfig
r-ef78eec8dc3c: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255
        inet6 fe80::70cb:17ff:fe4e:cb39  prefixlen 64  scopeid 0x20<link>
        ether 72:cb:17:4e:cb:39  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:d4:b4:62:06:4f  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 200 overruns 0  carrier 0  collisions 0

enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.230  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fdfe:98d2:e1c6:8625:8647:9ff:fe19:d426  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::8647:9ff:fe19:d426  prefixlen 64  scopeid 0x20<link>
        ether 84:47:09:19:d4:26  txqueuelen 1000  (Ethernet)
        RX packets 47566  bytes 12709710 (12.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48603  bytes 13376401 (12.7 MiB)
        TX errors 0  dropped 4 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1343  bytes 216028 (210.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1343  bytes 216028 (210.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vetheac2be3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::3401:8ff:fe13:3606  prefixlen 64  scopeid 0x20<link>
        ether 36:01:08:13:36:06  txqueuelen 0  (Ethernet)
        RX packets 6224  bytes 4766656 (4.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8653  bytes 4978410 (4.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wpan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
        inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc38  prefixlen 64  scopeid 0x0<global>
        inet6 fd63:f7b8:f001:1:ae59:e935:fa33:ac5b  prefixlen 64  scopeid 0x0<global>
        inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc00  prefixlen 64  scopeid 0x0<global>
        inet6 fd8f:e6c7:612d:5178:3652:ff04:6f49:2295  prefixlen 64  scopeid 0x0<global>
        inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc11  prefixlen 64  scopeid 0x0<global>
        inet6 fd8f:e6c7:612d:5178:0:ff:fe00:6000  prefixlen 64  scopeid 0x0<global>
        inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc10  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::c8f2:1996:906d:aad1  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 307  bytes 29642 (28.9 KiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 101  bytes 23445 (22.8 KiB)
        TX errors 0  dropped 2 overruns 0  carrier 0  collisions 0


$ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 84:47:09:19:d4:26 brd ff:ff:ff:ff:ff:ff
    altname enx84470919d426
    inet 192.168.0.230/24 brd 192.168.0.255 scope global dynamic enp1s0
       valid_lft 83184sec preferred_lft 83184sec
    inet6 fdfe:98d2:e1c6:8625:8647:9ff:fe19:d426/64 scope global dynamic mngtmpaddr proto kernel_ra
       valid_lft 1758sec preferred_lft 1758sec
    inet6 fe80::8647:9ff:fe19:d426/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:d4:b4:62:06:4f brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
4: br-ef78eec8dc3c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 72:cb:17:4e:cb:39 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-ef78eec8dc3c
       valid_lft forever preferred_lft forever
    inet6 fe80::70cb:17ff:fe4e:cb39/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
5: vetheac2be3@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-ef78eec8dc3c state UP group default
    link/ether 36:01:08:13:36:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::3401:8ff:fe13:3606/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
6: wpan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none
    inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc11/64 metric 64 scope global nodad deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fd63:f7b8:f001:1:ae59:e935:fa33:ac5b/64 metric 64 scope global nodad
       valid_lft forever preferred_lft forever
    inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc10/64 metric 64 scope global nodad deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc38/64 metric 64 scope global nodad deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fd8f:e6c7:612d:5178:0:ff:fe00:fc00/64 metric 64 scope global nodad deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fd8f:e6c7:612d:5178:0:ff:fe00:6000/64 metric 64 scope global nodad deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fd8f:e6c7:612d:5178:3652:ff04:6f49:2295/64 metric 64 scope global nodad deprecated
       valid_lft forever preferred_lft 0sec
    inet6 fe80::c8f2:1996:906d:aad1/64 scope link nodad
       valid_lft forever preferred_lft forever

sysctl.d
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 64
net.ipv6.conf.all.accept_ra = 2

net.ipv4.igmp_max_memberships=50
matter log
matter  | 2025-11-30 20:59:19.894 (MainThread) INFO [matter_server.server.stack] Initializing CHIP/Matter Logging...
matter  | 2025-11-30 20:59:19.895 (MainThread) INFO [matter_server.server.stack] Initializing CHIP/Matter Controller Stack...
matter  | [1764532760.037290][1:1] CHIP:CTL: Setting attestation nonce to random value
matter  | [1764532760.041802][1:1] CHIP:CTL: Setting CSR nonce to random value
matter  | [1764532760.060800][1:1] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /tmp/chip_kvs
matter  | [1764532760.061436][1:1] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /data/chip_factory.ini
matter  | [1764532760.064486][1:1] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /data/chip_config.ini
matter  | [1764532760.064796][1:1] CHIP:DL: ChipLinuxStorage::Init: Using KVS config file: /data/chip_counters.ini
matter  | [1764532760.071232][1:1] CHIP:DL: Wrote settings to /data/chip_counters.ini
matter  | [1764532760.071262][1:1] CHIP:DL: NVS set: chip-counters/reboot-count = 142 (0x8E)
matter  | [1764532760.071593][1:1] CHIP:DL: Got Ethernet interface: enp1s0
matter  | [1764532760.071718][1:1] CHIP:DL: Found the primary Ethernet interface:enp1s0
matter  | [1764532760.071918][1:1] CHIP:DL: Failed to get WiFi interface
matter  | [1764532760.071924][1:1] CHIP:DL: Failed to reset WiFi statistic counts
matter  | [1764532760.071928][1:1] CHIP:PAF: WiFiPAF: WiFiPAFLayer::Init()
matter  | 2025-11-30 20:59:20.072 (MainThread) INFO [chip.storage] Initializing persistent storage from file: /data/chip.json
matter  | 2025-11-30 20:59:20.072 (MainThread) INFO [chip.storage] Loading configuration from /data/chip.json...
matter  | 2025-11-30 20:59:20.193 (MainThread) INFO [chip.CertificateAuthority] Loading certificate authorities from storage...
matter  | 2025-11-30 20:59:20.194 (MainThread) INFO [chip.CertificateAuthority] New CertificateAuthority at index 1
matter  | 2025-11-30 20:59:20.195 (MainThread) INFO [chip.CertificateAuthority] Loading fabric admins from storage...
matter  | 2025-11-30 20:59:20.195 (MainThread) INFO [chip.FabricAdmin] New FabricAdmin: FabricId: 0x0000000000000001, VendorId = 0xFFF1
matter  | 2025-11-30 20:59:20.195 (MainThread) INFO [matter_server.server.stack] CHIP Controller Stack initialized.
matter  | 2025-11-30 20:59:20.195 (MainThread) INFO [matter_server.server.server] Matter Server initialized
matter  | 2025-11-30 20:59:20.196 (MainThread) INFO [matter_server.server.server] Using 'enp1s0' as primary interface (for link-local addresses)
matter  | 2025-11-30 20:59:20.197 (MainThread) INFO [matter_server.server.server] Starting the Matter Server...
matter  | 2025-11-30 20:59:20.202 (MainThread) INFO [matter_server.server.helpers.paa_certificates] Skip fetching certificates (already fetched within the last 24h).
matter  | 2025-11-30 20:59:20.202 (MainThread) INFO [chip.FabricAdmin] Allocating new controller with CaIndex: 1, FabricId: 0x0000000000000001, NodeId: 0x000000000001B669, CatTags: []
matter  | 2025-11-30 20:59:20.307 (Dummy-2) CHIP_ERROR [chip.native.DIS] Failed to advertise records: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000063: Cannot assign requested address
matter  | 2025-11-30 20:59:20.307 (Dummy-2) CHIP_ERROR [chip.native.DIS] Failed to advertise records: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000065: Network is unreachable
matter  | 2025-11-30 20:59:20.309 (Dummy-2) CHIP_ERROR [chip.native.DL] Long dispatch time: 105 ms, for event type 2
matter  | 2025-11-30 20:59:20.320 (MainThread) INFO [matter_server.server.vendor_info] Loading vendor info from storage.
matter  | 2025-11-30 20:59:20.326 (MainThread) INFO [matter_server.server.vendor_info] Loaded 372 vendors from storage.
matter  | 2025-11-30 20:59:20.326 (MainThread) INFO [matter_server.server.vendor_info] Fetching the latest vendor info from DCL.
matter  | 2025-11-30 20:59:20.334 (MainThread) ERROR [matter_server.server.vendor_info] Unable to fetch vendor info from DCL: Cannot connect to host on.dcl.csa-iot.org:443 ssl:default [Temporary failure in name resolution]
matter  | 2025-11-30 20:59:20.334 (MainThread) INFO [matter_server.server.vendor_info] Saving vendor info to storage.
matter  | 2025-11-30 20:59:20.339 (MainThread) INFO [matter_server.server.device_controller] Loaded 2 nodes from stored configuration
matter  | 2025-11-30 20:59:20.345 (MainThread) INFO [matter_server.server.server] Matter Server successfully initialized.
matter  | 2025-11-30 21:02:07.412 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:07.427 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:09.303 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:09.304 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:18.767 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:18.768 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:41.166 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:41.169 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:50.036 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:02:50.037 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:14:13.132 (MainThread) INFO [matter_server.server.device_controller] <Node:5> No new update found.
matter  | 2025-11-30 21:14:49.147 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:15:08.156 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:15:08.157 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:15:29.763 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:15:29.767 (MainThread) INFO [matter_server.server.device_controller] <Node:15> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:16:18.155 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
matter  | 2025-11-30 21:16:18.156 (MainThread) INFO [matter_server.server.device_controller] <Node:5> Node could not be discovered on the network, returning cached IP's
Route to what should be the Matter-over-wifi device and ping
$ sudo ip -6 route get 'fe80::9a17:3cff:feea:bf90'
fe80::9a17:3cff:feea:bf90 from :: dev vetheac2be3 proto kernel src fe80::3401:8ff:fe13:3606 metric 256 pref medium
Matter server screenshot

Thanks to anyone that would suggest anything…

I looked over this for a while, and nothing stands out as incorrect. I would have to say however that the route you have installed to ping the Matter WiFi device should not be needed as you have only one interface and the Matter Server will use that interface to reach link-local devices (i.e. the WiFi device).

I would start with the WiFi device, making sure you can ping it from the host, and then from inside the matter server docker container.

Hi, if I just do

$ ping6 fe80::9a17:3cff:feea:bf90
ping6: Warning: IPv6 link-local address on ICMP datagram socket may require ifname or scope-id => use: address%<ifname|scope-id>
PING fe80::9a17:3cff:feea:bf90 (fe80::9a17:3cff:feea:bf90) 56 data bytes

I obtain no result. On the other hand, if I add the network interface:

$ ping6 fe80::9a17:3cff:feea:bf90%enp1s0
PING fe80::9a17:3cff:feea:bf90%enp1s0 (fe80::9a17:3cff:feea:bf90%enp1s0) 56 data bytes
64 bytes from fe80::9a17:3cff:feea:bf90%enp1s0: icmp_seq=1 ttl=255 time=3.36 ms
64 bytes from fe80::9a17:3cff:feea:bf90%enp1s0: icmp_seq=2 ttl=255 time=3.62 ms
64 bytes from fe80::9a17:3cff:feea:bf90%enp1s0: icmp_seq=3 ttl=255 time=3.80 ms
64 bytes from fe80::9a17:3cff:feea:bf90%enp1s0: icmp_seq=4 ttl=255 time=3.45 ms
64 bytes from fe80::9a17:3cff:feea:bf90%enp1s0: icmp_seq=5 ttl=255 time=5.33 ms

And is the result from both the host or inside the container

Update… I completely don’t know how and why, but tonight I decide to remove both the matter device and pair them again… Well, magically they both start working… :no_mouth:I also tried a couple of host pc reboot to see if they continue working and it seems all works good… I’m moved :face_holding_back_tears: