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" section "Applying Configuration"
# WiFi profile # WiFi profile — Armbian uses Netplan + wpa_supplicant (not NetworkManager)
if [[ -n "$WIFI_SSID" ]]; then if [[ -n "$WIFI_SSID" ]]; then
step "Writing WiFi profile..." 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) # Netplan config (primary — renderer: networkd)
cat > "$NM_FILE" << EOF mkdir -p "${MOUNT_POINT}/etc/netplan"
[connection] cat > "${MOUNT_POINT}/etc/netplan/20-wifi.yaml" << EOF
id=wifi-bb network:
uuid=${WIFI_UUID} version: 2
type=wifi renderer: networkd
autoconnect=true wifis:
autoconnect-priority=10 wlan0:
dhcp4: yes
dhcp6: no
access-points:
"${WIFI_SSID}":
password: "${WIFI_PASS}"
EOF
chmod 600 "${MOUNT_POINT}/etc/netplan/20-wifi.yaml"
[wifi] # wpa_supplicant direct config (backup — used by wpa_supplicant@wlan0.service)
mode=infrastructure mkdir -p "${MOUNT_POINT}/etc/wpa_supplicant"
ssid=${WIFI_SSID} 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] network={
auth-alg=open ssid="${WIFI_SSID}"
key-mgmt=wpa-psk psk="${WIFI_PASS}"
psk=${WIFI_PASS} key_mgmt=WPA-PSK
scan_ssid=1
}
EOF
chmod 600 "${MOUNT_POINT}/etc/wpa_supplicant/wpa_supplicant-wlan0.conf"
[ipv4] # systemd-networkd config for wlan0 DHCP
method=auto mkdir -p "${MOUNT_POINT}/etc/systemd/network"
cat > "${MOUNT_POINT}/etc/systemd/network/10-wifi-wlan0.network" << EOF
[Match]
Name=wlan0
[ipv6] [Network]
addr-gen-mode=stable-privacy DHCP=yes
method=auto IPv6PrivacyExtensions=yes
EOF EOF
chmod 600 "$NM_FILE" # Enable wpa_supplicant@wlan0 if the template service exists
chown root:root "$NM_FILE" WPA_TEMPLATE="${MOUNT_POINT}/lib/systemd/system/wpa_supplicant@.service"
info "WiFi profile written (SSID: ${WIFI_SSID}, UUID: ${WIFI_UUID})" 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 fi
# Root password # Root password