Switch WiFi config from NetworkManager to Netplan+wpa_supplicant

Armbian minimal uses systemd-networkd+wpa_supplicant via Netplan, not NM.
Write Netplan YAML, wpa_supplicant-wlan0.conf, and networkd .network file.
Enable wpa_supplicant@wlan0.service via symlink if template exists.
This commit is contained in:
Cobra
2026-04-07 17:02:36 -04:00
parent d2f4f9759d
commit 1803c54182
+48 -27
View File
@@ -478,42 +478,63 @@ info "Mounted at ${MOUNT_POINT} ($(blkid -o value -s TYPE "${_ROOTFS_PART:-/dev/
# ══════════════════════════════════════════════════════════════════════════════
section "Applying Configuration"
# WiFi profile
# WiFi profile — Armbian uses Netplan + wpa_supplicant (not NetworkManager)
if [[ -n "$WIFI_SSID" ]]; then
step "Writing WiFi profile..."
NM_DIR="${MOUNT_POINT}/etc/NetworkManager/system-connections"
NM_FILE="${NM_DIR}/wifi-bb.nmconnection"
mkdir -p "$NM_DIR"
WIFI_UUID=$(cat /proc/sys/kernel/random/uuid)
cat > "$NM_FILE" << EOF
[connection]
id=wifi-bb
uuid=${WIFI_UUID}
type=wifi
autoconnect=true
autoconnect-priority=10
# Netplan config (primary — renderer: networkd)
mkdir -p "${MOUNT_POINT}/etc/netplan"
cat > "${MOUNT_POINT}/etc/netplan/20-wifi.yaml" << EOF
network:
version: 2
renderer: networkd
wifis:
wlan0:
dhcp4: yes
dhcp6: no
access-points:
"${WIFI_SSID}":
password: "${WIFI_PASS}"
EOF
chmod 600 "${MOUNT_POINT}/etc/netplan/20-wifi.yaml"
[wifi]
mode=infrastructure
ssid=${WIFI_SSID}
# wpa_supplicant direct config (backup — used by wpa_supplicant@wlan0.service)
mkdir -p "${MOUNT_POINT}/etc/wpa_supplicant"
cat > "${MOUNT_POINT}/etc/wpa_supplicant/wpa_supplicant-wlan0.conf" << EOF
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=${WIFI_PASS}
network={
ssid="${WIFI_SSID}"
psk="${WIFI_PASS}"
key_mgmt=WPA-PSK
scan_ssid=1
}
EOF
chmod 600 "${MOUNT_POINT}/etc/wpa_supplicant/wpa_supplicant-wlan0.conf"
[ipv4]
method=auto
# systemd-networkd config for wlan0 DHCP
mkdir -p "${MOUNT_POINT}/etc/systemd/network"
cat > "${MOUNT_POINT}/etc/systemd/network/10-wifi-wlan0.network" << EOF
[Match]
Name=wlan0
[ipv6]
addr-gen-mode=stable-privacy
method=auto
[Network]
DHCP=yes
IPv6PrivacyExtensions=yes
EOF
chmod 600 "$NM_FILE"
chown root:root "$NM_FILE"
info "WiFi profile written (SSID: ${WIFI_SSID}, UUID: ${WIFI_UUID})"
# Enable wpa_supplicant@wlan0 if the template service exists
WPA_TEMPLATE="${MOUNT_POINT}/lib/systemd/system/wpa_supplicant@.service"
WPA_WANTS="${MOUNT_POINT}/etc/systemd/system/multi-user.target.wants"
if [[ -f "$WPA_TEMPLATE" ]]; then
mkdir -p "$WPA_WANTS"
ln -sf /lib/systemd/system/wpa_supplicant@.service \
"${WPA_WANTS}/wpa_supplicant@wlan0.service"
fi
info "WiFi profile written (SSID: ${WIFI_SSID})"
fi
# Root password