Skip to content

Settings: Wi-Fi setup for the appliance (scan, connect, status) #83

Description

@nerfarrow

Add a Wi-Fi panel to Settings so a thriveOS appliance (e.g. the wall) can join a wireless network from the UI — no SSH/keyboard needed.

Scope (agreed): full — show current connection status, Scan for nearby networks (SSID / signal / secured), pick one → enter password → Connect, plus Forget. Targets the working onboard radio first; bake firmware-realtek so a USB dongle's wlan1 also appears (interface-picker UI is a follow-up).

Architecture (mirrors Power controls #39): the API is containerized and can't touch the host radio. thriveOS uses systemd-networkd + wpa_supplicant (no NetworkManager). A host-side helper watches the bind-mounted trunk/data/control/ dir:

  • API → host: request-wifi-scan, request-wifi-connect (SSID+PSK as JSON payload), request-wifi-forget.
  • host → API: wifi-status.json (refreshed on a timer) and wifi-scan.json.
  • A .wifi-available marker makes the panel self-hide on bare/NAS Docker hosts, exactly like Power.

Layers:

  • os/: thrive-wifi helper + .path/.service/init/status-timer units, 25-wlan.network, packages (wpasupplicant, iw, wireless-regdb, firmware-realtek).
  • trunk/api: GET /system/wifi, GET|POST /system/wifi/scan, POST /system/wifi/connect, POST /system/wifi/forget (admin-gated; connect/forget admin-only).
  • trunk/ui: admin-only, self-hiding WifiSection in SettingsPage.

Note: the host-side units live in the OS image, so they take effect only after an image rebuild/reflash (or a manual ephemeral install on the running Pi for testing). The UI+API layers deploy the usual way.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions