#!/usr/bin/env bash # Write a NetworkManager WiFi profile to an unmounted Armbian SD card. # Run this on the machine where the SD card is mounted BEFORE first boot. # # Usage: bash scripts/setup_wifi.sh SSID PASSPHRASE [MOUNT_POINT] # MOUNT_POINT defaults to /media/$USER/armbi_root set -euo pipefail RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' info() { echo -e "${GREEN}[+]${NC} $*"; } warn() { echo -e "${YELLOW}[!]${NC} $*"; } error() { echo -e "${RED}[-]${NC} $*"; exit 1; } SSID="${1:-}" PASSPHRASE="${2:-}" MOUNT="${3:-/media/${USER:-root}/armbi_root}" [[ -z "$SSID" || -z "$PASSPHRASE" ]] && { echo "Usage: $0 SSID PASSPHRASE [MOUNT_POINT]" echo " MOUNT_POINT defaults to /media/\$USER/armbi_root" exit 1 } [[ -d "$MOUNT" ]] || error "Mount point not found: $MOUNT — is the SD card mounted?" NM_DIR="${MOUNT}/etc/NetworkManager/system-connections" NM_FILE="${NM_DIR}/wifi-bb.nmconnection" mkdir -p "$NM_DIR" cat > "$NM_FILE" << EOF [connection] id=wifi-bb type=wifi autoconnect=true [wifi] mode=infrastructure ssid=${SSID} [wifi-security] auth-alg=open key-mgmt=wpa-psk psk=${PASSPHRASE} [ipv4] method=auto [ipv6] method=disabled EOF chmod 600 "$NM_FILE" info "WiFi profile written to ${NM_FILE}" info "SSID: ${SSID}" echo "" info "After first boot, device should connect automatically." warn "If it doesn't connect, SSH in via Ethernet or serial and run:" warn " nmcli dev wifi connect '${SSID}' password ''" echo "" info "Once connected, deploy BigBrother with:" info " bash scripts/deploy.sh root@ --enable-service"