- connect-board.ps1 / .bat: PowerShell twin of connect-board.sh so teams on Windows 11 attach the USB Uno Q to the local self-host stack (adb forward + self-register; -Watch for auto-reattach; .bat bypasses execution policy) - provision-wifi.sh: idempotent nmcli join over adb, venue WiFi baked as default - provision-fleet.sh: run the WiFi step per board during fleet bring-up - REQUIREMENTS.md: Windows 11 section (Docker+WSL2, native adb, USB driver), 'does adb see your board?' check, and correct the WiFi reality (board needs venue WiFi for the cloud brain; we pre-join it) Co-Authored-By: Claude Opus 4.8 <[email protected]>
42 lines
1.9 KiB
Bash
Executable File
42 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# provision-wifi.sh — join a Uno Q board to the workshop WiFi over adb and persist
|
|
# it. NetworkManager saves the connection profile, so the board auto-reconnects on
|
|
# every boot. The board reaches the cloud brain (api.anthropic.com) NAT'd out
|
|
# through this WiFi, so every workshop board needs it.
|
|
#
|
|
# The venue network is baked in as the default (override with WIFI_SSID/WIFI_PASS).
|
|
#
|
|
# Usage:
|
|
# ./provision-wifi.sh # first attached board
|
|
# ./provision-wifi.sh <adb-serial> # a specific board
|
|
# # every attached board at once:
|
|
# for s in $(adb devices | awk 'NR>1 && $2=="device"{print $1}'); do ./provision-wifi.sh "$s"; done
|
|
set -uo pipefail
|
|
|
|
# ── workshop WiFi (FabLab Torino) — override per venue with WIFI_SSID / WIFI_PASS ──
|
|
WIFI_SSID="${WIFI_SSID:-Fablab_Torino}"
|
|
WIFI_PASS="${WIFI_PASS:-Fablab.Torino!}"
|
|
|
|
S="${1:-$(adb devices 2>/dev/null | awk '/\tdevice$/{print $1; exit}')}"
|
|
[ -n "$S" ] || { echo "provision-wifi: no board attached over USB" >&2; exit 1; }
|
|
|
|
echo "==> [$S] joining WiFi '$WIFI_SSID'"
|
|
# Idempotent: if a saved profile already exists, just bring it up; otherwise scan
|
|
# and create it (a persistent NetworkManager profile that auto-reconnects on boot).
|
|
adb -s "$S" shell "nmcli radio wifi on >/dev/null 2>&1; sleep 1
|
|
if nmcli -t -f NAME connection show 2>/dev/null | grep -qx '$WIFI_SSID'; then
|
|
nmcli connection up '$WIFI_SSID'
|
|
else
|
|
nmcli device wifi rescan >/dev/null 2>&1; sleep 4
|
|
nmcli device wifi connect '$WIFI_SSID' password '$WIFI_PASS'
|
|
fi" 2>&1 | sed 's/^/ /'
|
|
|
|
# verify link + that the cloud is reachable through it
|
|
adb -s "$S" shell 'ip -brief addr show wlan0 2>/dev/null | sed "s/^/ wlan0: /"'
|
|
if adb -s "$S" shell 'getent hosts api.anthropic.com >/dev/null 2>&1'; then
|
|
echo " cloud DNS: resolves ✓ — board can reach the agent brain"
|
|
else
|
|
echo " cloud DNS: FAILS — check WiFi coverage / credentials" >&2
|
|
exit 1
|
|
fi
|