Commit Graph

18 Commits

Author SHA1 Message Date
stswangzhiping
f6aad310a8 fix: improve WiFi AP recovery and scan 2026-04-26 10:57:54 +08:00
stswangzhiping
e3e9580e46 fix(network): async connectWifi so systemd watchdog can fire during nmcli wait 2026-03-29 08:14:24 +08:00
stswangzhiping
4c16483ee7 fix(network): robust AP->STA connect (nmcli argv, device show state, wifi iface for DNS) 2026-03-29 07:46:22 +08:00
stswangzhiping
012ad90335 fix(provision): treat WiFi join success by STA state, not internet ping 2026-03-29 07:10:43 +08:00
stswangzhiping
ea502fc26a refactor(network): unify sysfs carrier reads and LAN vs wired iface logic 2026-03-28 22:33:29 +08:00
stswangzhiping
1910a2fb9f fix(led,provision): AP forces WiFi(play) off; LAN uses carrier+operstate
- Monitor: every tick in ap state led.off() so play never stays on with hotspot
- hasLanCableCarrier: _ifacePhysicalLinkUp (carrier=1 and operstate not down)
- When end0/eth0 exist but link down, return false (no fallback to hasWiredCarrier)
- LAN poll 500ms

Made-with: Cursor
2026-03-28 22:15:48 +08:00
stswangzhiping
9800e712e5 fix(network): LAN LED use end0/eth0 carrier only, decouple from WiFi
hasLanCableCarrier no longer locks first scanned iface (NM/WiFi could change
which iface had carrier). Prefer sysfs end0 then eth0 each poll; fallback
hasWiredCarrier only if neither exists.

Made-with: Cursor
2026-03-28 22:07:20 +08:00
stswangzhiping
a186857126 fix(network): auto-cache LAN iface for carrier when CLAWD_ETH_IFACE unset
First getWiredIfaceWithCarrier() result locks _lanMonitoredIface; subsequent
hasLanCableCarrier only reads that sysfs carrier so unplug reliably turns LAN off.
CLAWD_ETH_IFACE still overrides.

Made-with: Cursor
2026-03-28 21:53:21 +08:00
stswangzhiping
8f5a8ec896 fix(led): swap WiFi(play)/LAN(wifi+eth), LAN carrier via CLAWD_ETH_IFACE, faster alarm
- WifiLed drives play; LanLed drives wifi+eth pair (matches panel silkscreen)
- hasLanCableCarrier(): CLAWD_ETH_IFACE-only carrier when set (reliable unplug)
- LAN poll 1s; config.activated persisted for immediate setApps on boot/reconnect
- setApps double vfdOn alarm after 50ms for slow OpenVFD
- Clear activated + setSetup on credential errors
- install.sh env comment for CLAWD_ETH_IFACE

Made-with: Cursor
2026-03-28 21:50:56 +08:00
stswangzhiping
04dd1017bb fix(network): wired ping probe, AP/WS and systemd notify hardening
- Add hasWiredInternetProbe and export; AP mode uses it with hasInternet
- systemd-env: strip NOTIFY_SOCKET from env early; client uses unix_dgram
- Strip NOTIFY_SOCKET from frpc/ttyd spawn env in watchdog and frpc
- WS: pong miss debounce; AP net monitor consecutive-fail debounce

Made-with: Cursor
2026-03-28 14:37:56 +08:00
stswangzhiping
12366790d2 fix(network): auto-detect wired iface and ping via -I for hasInternet
- Scan sysfs for carrier when CLAWD_ETH_IFACE unset (end0/enp* etc.)
- Explicit CLAWD_ETH_IFACE still pins a single interface
- Ping fallback uses -I wired iface when default route fails (e.g. AP on wlan)
- Exclude can/docker/veth/wl* and similar from auto scan
- Clarify client log when waiting for WAN

Made-with: Cursor
2026-03-27 14:30:23 +08:00
stswangzhiping
86859a5e0d fix: 过滤AP热点IP,改用checkip.amazonaws.com获取外网IP,新增ipplus360地理位置
Made-with: Cursor
2026-03-21 09:20:00 +08:00
stswangzhiping
878f3592bf feat: connect 消息上报 local_ip 和 external_ip
Made-with: Cursor
2026-03-21 08:18:27 +08:00
stswangzhiping
5ba8b7bffa fix: fast-path hasInternet() via carrier check to avoid nmcli cache delay
Made-with: Cursor
2026-03-20 08:00:25 +08:00
stswangzhiping
f58db93b64 fix: wait for NM auto-reconnect before starting AP on reboot
After WiFi is configured and device reboots, NetworkManager needs
a few seconds to auto-connect to saved WiFi. Without waiting,
AP starts immediately and occupies wlan0, preventing NM reconnect.

- Add hasSavedWifiConnection() to check for saved WiFi profiles
- Wait up to 20s for NM auto-connect before falling back to AP
- First boot (no saved WiFi) still starts AP immediately

Made-with: Cursor
2026-03-16 12:27:25 +08:00
stswangzhiping
b42e59fab8 feat: AP always-on mode - hotspot stays until WiFi STA connects
Redesign provisioning from one-shot blocking to persistent background manager:
- AP hotspot starts at boot regardless of eth0 status
- Captive portal runs alongside AP for WiFi configuration
- AP automatically shuts down only when WiFi STA connects
- WiFi drops at runtime -> AP auto-restarts
- WiFi connect fails -> AP auto-restarts for retry
- client.js no longer blocks on network; connects WS when ready

Made-with: Cursor
2026-03-16 12:18:35 +08:00
stswangzhiping
92906bcd4b fix: set AP hotspot password to fixed WPA2 PSK "12345678"
Open network was not viable as nmcli generates random password by default.
Use a simple fixed password since the AP is only for short-lived provisioning.

Made-with: Cursor
2026-03-16 10:44:26 +08:00
stswangzhiping
eb9f4ab1c3 feat: add WiFi provisioning for headless devices (AP + Captive Portal)
- Add lib/network.js: WiFi scan, connect, AP hotspot via nmcli
- Add lib/dns-hijack.js: dnsmasq management for DNS hijack + DHCP
- Add lib/captive-server.js: embedded HTTP captive portal with WiFi setup page
- Add lib/provisioning.js: orchestrator (detect network -> AP mode -> wait -> exit)
- Update client.js: call ensureNetwork() before WS connection
- Update install.sh: auto-install dnsmasq dependency

Made-with: Cursor
2026-03-16 08:58:51 +08:00