From e86b901e25b9d2554bbbcaf3500f0a41b273c0c2 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Thu, 31 Oct 2024 13:19:16 +0000 Subject: [PATCH] Rework wlan blocking --- stage2/02-net-tweaks/01-run.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/stage2/02-net-tweaks/01-run.sh b/stage2/02-net-tweaks/01-run.sh index d49bdeb..7ec6f73 100755 --- a/stage2/02-net-tweaks/01-run.sh +++ b/stage2/02-net-tweaks/01-run.sh @@ -3,18 +3,25 @@ install -v -d "${ROOTFS_DIR}/etc/wpa_supplicant" install -v -m 600 files/wpa_supplicant.conf "${ROOTFS_DIR}/etc/wpa_supplicant/" +# Newer versions of raspberrypi-sys-mods set rfkill.default_state=0 to prevent +# radiating on 5GHz bands until the WLAN regulatory domain is set. +# Unfortunately, this also blocks bluetooth, so we whitelist the known +# on-board BT adapters here. + +mkdir -p "${ROOTFS_DIR}/var/lib/systemd/rfkill/" +# 5 miniuart 4 miniuart Zero miniuart other other +for addr in 107d50c000.serial 3f215040.serial 20215040.serial fe215040.serial soc; do + echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-${addr}:bluetooth" +done + if [ -v WPA_COUNTRY ]; then on_chroot <<- EOF SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_wifi_country "${WPA_COUNTRY}" EOF -fi - -# Disable wifi on 5GHz models if WPA_COUNTRY is not set -mkdir -p "${ROOTFS_DIR}/var/lib/systemd/rfkill/" -if [ -n "$WPA_COUNTRY" ]; then - echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan" - echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan" -else - echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan" - echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan" +elif [ -d "${ROOTFS_DIR}/var/lib/NetworkManager" ]; then + # NetworkManager unblocks all WLAN devices by default. Prevent that: + cat > "${ROOTFS_DIR}/var/lib/NetworkManager/NetworkManager.state" <<- EOF + [main] + WirelessEnabled=false + EOF fi