3.8 KiB
GL-S200 Thread Border Router Integration Plan
Planning notes for adding a GL.iNet GL-S200 as a Thread Border Router for Home Assistant on concord NUC.
Device Overview
GL-S200 (product page)
| Spec | Value |
|---|---|
| CPU | QCA9531 @ 650 MHz |
| RAM / Flash | 128 MB DDR2 / 128 MB NAND |
| OS | GL.iNet firmware (OpenWrt 21.02, kernel 5.4) |
| Radios | Thread + BLE 5.0 + Wi-Fi 2.4 GHz b/g/n (150 Mbps) |
| Ports | 1x WAN, 1x LAN (10/100 Mbps) |
| Power | USB-C 5V / 2A |
| Role | Thread Border Router (OTBR) — not a Matter controller; Matter runs on top via python-matter-server already deployed on the NUC |
Where to Plug It In
Must land on the same L2 segment as Home Assistant.
HA runs as a Docker container on vish-concord-nuc with network_mode: host. The NUC sits on 192.168.68.0/22 (gateway 192.168.68.1) — deliberately separated from the main homelab LAN (192.168.0.0/24).
Thread/Matter border router discovery uses mDNS (_meshcop._udp), which is link-local. Cross-subnet discovery would require an mDNS reflector (not currently deployed). So:
- ✅ Plug S200 WAN into a switch/AP on
192.168.68.0/22(same segment as the NUC). - ❌ Do not plug into the main 192.168.0.0/24 LAN — HA will not see it.
Existing Stack on Concord NUC
Compose: concord_nuc/homeassistant.yaml
| Service | Purpose | Status |
|---|---|---|
homeassistant |
HA Core (host networking) | Running |
matter-server |
python-matter-server (host networking) | Running |
piper |
Wyoming TTS (port 10200) | Running |
whisper |
Wyoming STT (port 10300) | Running |
openwakeword |
Wyoming wake word (port 10400) | Running |
The Matter server is already in place — the S200 plugs in as the radio layer for Thread. No compose changes needed to add the S200 itself.
Integration Steps (When Device Arrives)
-
Physical setup
- Connect S200 WAN to the 192.168.68.0/22 network.
- Power via USB-C (5V/2A).
- First-boot admin UI reachable at
192.168.8.1until reconfigured, then at the DHCP-assigned 192.168.68.x address. - Update firmware, set an admin password.
-
Verify mDNS discovery from the NUC
# Run on concord NUC (Tailscale: 100.72.55.21) avahi-browse -rt _meshcop._udpShould list the S200 as a Thread Border Router with a TXT record containing
rv=1,tv=1.3.0, etc. -
Add to Home Assistant
- Settings → Devices & Services → Add Integration → Thread
- S200 should auto-discover. Add it as an External Thread Border Router.
- Settings → Devices & Services → Add Integration → Matter (BETA) (already configured to talk to the local matter-server container).
-
Pair Matter devices
- Use the Home Assistant Companion app (iOS/Android) to pair.
- The app hands off Thread commissioning credentials to each device so it joins the S200's mesh.
Gotchas
- Firmware lag: GL.iNet's OTBR implementation trails upstream OpenThread. Check the admin UI for firmware updates before committing to the device.
- No Zigbee: S200 is Thread-only. Existing Zigbee devices (if any) still need a separate coordinator (e.g., a Zigbee stick on the NUC via Zigbee2MQTT or ZHA).
- Thread credential backup: Once the S200 forms an operational dataset (network name, PAN ID, network key), export and back it up — losing it means re-commissioning every Thread device.
- HA network_mode: host is load-bearing: If HA is ever migrated to bridge networking, Matter/Thread discovery breaks. Keep host networking.
Status
- S200 acquired
- Plugged into 192.168.68.0/22 segment
- mDNS discovery verified from NUC
- Added to HA Thread integration
- First Matter device paired
- Thread operational dataset backed up