This document explains how to connect a newly installed Raspberry Pi Zero 2W running Raspberry Pi OS (PiOS Trixie) to a Thread Border Router (TBR). It is based on real diagnostic data you provided and the exact steps that resolved connectivity issues between the Pi, Aqara M100, Tado X Starter Kit, and Node‑RED Matter Controller.
rdsc6 installation
bash
sudo apt update && sudo apt install ndisc6 -y
sudo rdisc6 wlan0
A Raspberry Pi running PiOS Trixie uses dhcpcd for IPv6 configuration. It does not automatically install IPv6 Route Information Options (RFC 4191) advertised by Thread Border Routers. When a TBR advertises a Thread subnet as a route rather than a prefix, the Pi hears the advertisement but does not install the route. This results in:
ENETUNREACH
when Node‑RED or Matter tries to reach devices inside that subnet.
To fix this, you must manually add the Thread route and make it persistent.
The following data was supplied and used to diagnose the network:
These are LAN‑side IPv6 addresses, not Thread addresses.
Aqara M100 Wi‑Fi:
ULA: fdc0:ccc3:4b06:47a0:56ef:44ff:fe8a:42db
LLA: fe80::56ef:44ff:fe8a:42db
Tado Starter Kit Wi‑Fi:
ULA: fdc0:ccc3:4b06:47a0:9aa3:16ff:fe21:eeac
LLA: fe80::9aa3:16ff:fe21:eeac
These addresses show both devices are on the same LAN prefix (fdc0:ccc3:4b06:47a0::/64). They do not indicate Thread network membership.
The Pi showed:
inet6 fd32:5f7b:fcb8:8f2:e65f:1ff:fe39:f338/64
This prefix:
fd32:5f7b:fcb8:8f2::/64
is Aqara’s Thread ULA prefix.
This confirms:
The Pi successfully joined Aqara’s Thread network.
Aqara is the active Thread Border Router.
Running:
sudo rdisc6 wlan0
produced:
From Tado:
Route: fd9a:63a3:c8fb:1::/64
Router lifetime: 0
From Aqara:
Prefix: fd32:5f7b:fcb8:8f2::/64
Route: fd9e:8866:ba70:1::/64
Lifetime: 1800
This shows Aqara is advertising:
A Thread prefix (installed automatically)
A Thread route (ignored by PiOS)
Running:
ip -6 route show
always showed:
fd32:5f7b:fcb8:8f2::/64 dev wlan0
fe80::/64 dev wlan0
The Pi never installed the Aqara route:
fd9e:8866:ba70:1::/64 via fe80::56ef:44ff:fe8a:42db
This is the root cause of ENETUNREACH.
PiOS Trixie uses dhcpcd, which:
Installs IPv6 prefixes
Installs default routes when router lifetime > 0
Ignores Route Information Options (RFC 4191)
Aqara advertises its Thread subnet as a route, not a prefix.
Therefore, the Pi hears the route but does not install it.
Node‑RED tries to reach a device inside:
fd9e:8866:ba70:1::/64
Without a route, the kernel returns ENETUNREACH.
You must manually add the route advertised by Aqara.
Run:
sudo ip -6 route add fd9e:8866:ba70:1::/64 via fe80::56ef:44ff:fe8a:42db dev wlan0
This instantly restores connectivity.
Create a systemd service:
sudo nano /etc/systemd/system/thread-route.service
Paste into nano:
[Unit]
Description=Add Aqara Thread Route
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/sbin/ip -6 route add fd9e:8866:ba70:1::/64 via fe80::56ef:44ff:fe8a:42db dev wlan0
[Install]
WantedBy=multi-user.target
After pasting that block into nano, the next step is simply to save and close the editor. Enable the service:
sudo systemctl enable thread-route.service
...after enabling the service should see
Created symlink /etc/systemd/system/multi-user.target.wants/thread-route.service → /etc/systemd/system/thread-route.service.
Reboot:
sudo reboot
Verify:
ip -6 route show
You should now see the Aqara route installed:
fd9e:8866:ba70:1::/64 via fe80::56ef:44ff:fe8a:42db dev wlan0
Once the Pi has the route:
Node‑RED can reach Thread devices.
Matter commissioning works.
Attribute reads and subscriptions work.
ENETUNREACH disappears.
This is required for any fresh PiOS installation connecting to Aqara’s Thread network.
To connect a fresh Raspberry Pi OS installation to a Thread Border Router:
Confirm the Pi receives the Thread prefix via rdisc6.
Identify the Thread route advertised by the TBR.
Add the route manually using ip -6 route add.
Make the route persistent with a systemd service.
Verify the route after reboot.
This ensures the Pi can reach all devices inside the Thread mesh and prevents ENETUNREACH errors in Node‑RED Matter.
sudo rdisc6 wlan0
ip -6 addr show
ip -6 route show
sudo ip -6 route add <subnet> via <link-local> dev wlan0