#!/usr/bin/env bash # # install_wfb_gs_fr.sh — Installation/reconstruction de /etc/wifibroadcast.cfg # (ground station, Jetson) # # ───────────────────────────────────────────────────────────────────────── # POURQUOI CE SCRIPT EXISTE (18 juillet 2026) # ───────────────────────────────────────────────────────────────────────── # Le script officiel wfb-ng (install_gs.sh, lancé habituellement via # curl -s https://raw.githubusercontent.com/svpcom/wfb-ng/master/scripts/install_gs.sh | sudo bash # ) écrase INCONDITIONNELLEMENT /etc/wifibroadcast.cfg à chaque exécution, # sans vérifier s'il existe déjà. Son template fixe wifi_region = 'BO' par # défaut (commentaire du script original : "use BO or GY if you want max # tx power"), ce qui ignore la réglementation française (limite 13dBm sur # le canal 149). # # Ce one-liner a été relancé chez nous plusieurs fois en réflexe de # dépannage (ex: après reconstruction du driver RTL8812AU, ou un # `apt install wfb-ng` qui semblait cassé) — à chaque fois, wifi_region # repassait silencieusement à 'BO', sans qu'on comprenne pourquoi la # correction manuelle "revenait toute seule". Cause identifiée le # 18/07/2026 (voir 20260718_wireclaw_methode_fable_contention_radio.md). # # ⚠️ NE PLUS JAMAIS relancer le curl officiel directement sur cette # machine. Utiliser CE script à la place pour toute réinstallation # complète de la configuration wfb-ng côté ground station. # # ⚠️ AUTRE SOURCE DE RÉGION, FICHIER SÉPARÉ — le même script officiel # pousse aussi /etc/modprobe.d/wfb.conf avec # "options cfg80211 ieee80211_regdom=RU" (régulation kernel cfg80211, # PAS wfb-ng applicatif). Une 3e valeur de région, différente de BO et # de FR. Ce script-ci NE TOUCHE PAS à ce fichier (portée volontairement # limitée à wifibroadcast.cfg). Vérifier séparément si besoin : # cat /etc/modprobe.d/wfb.conf # # ───────────────────────────────────────────────────────────────────────── # QUAND UTILISER CE SCRIPT # ───────────────────────────────────────────────────────────────────────── # - Installation initiale de wfb-ng côté Jetson (ground station) # - Reconstruction complète après un wfb-ng cassé / réinstallation du paquet # # QUAND NE PAS L'UTILISER # ───────────────────────────────────────────────────────────────────────── # Pour modifier UN SEUL paramètre (ex: juste la région ou juste le canal) # sur une configuration qui fonctionne déjà, éditez directement le fichier # existant plutôt que de relancer ce script : # # sudo nano /etc/wifibroadcast.cfg # sudo systemctl restart wfb-server-gs.service # # ou en une ligne pour la région seule : # # sudo sed -i "s/wifi_region = '.*'/wifi_region = 'FR'/" /etc/wifibroadcast.cfg # sudo systemctl restart wfb-server-gs.service # # ───────────────────────────────────────────────────────────────────────── set -euo pipefail CFG_PATH="/etc/wifibroadcast.cfg" echo "=== install_wfb_gs_fr.sh — configuration wfb-ng (ground station) ===" echo # ───────────────────────────────────────────────────────────────────────── # Confirmation d'écrasement si le fichier existe déjà # ───────────────────────────────────────────────────────────────────────── if [ -f "$CFG_PATH" ]; then echo "⚠️ $CFG_PATH existe déjà. Contenu actuel (wifi_region / wifi_channel) :" grep -E "wifi_region|wifi_channel" "$CFG_PATH" || echo " (paramètres non trouvés dans le fichier existant)" echo read -r -p "Écraser ce fichier et repartir d'une config neuve ? [y/N] " confirm case "$confirm" in [yY][eE][sS]|[yY]) ;; *) echo "Annulé. Aucune modification effectuée." echo "Pour une modification ponctuelle, voir les commentaires en tête de ce script." exit 0 ;; esac echo fi # ───────────────────────────────────────────────────────────────────────── # Paramètres interactifs, avec défauts sûrs # ───────────────────────────────────────────────────────────────────────── read -r -p "Région wifi_region (réglementation CRDA) [FR]: " WIFI_REGION WIFI_REGION="${WIFI_REGION:-FR}" echo echo " 149 = canal 5GHz (DFS/UNII, longue portée — config actuelle du projet)" echo " 1 = canal 2.4GHz (compatibilité plus large, plus de bruit ambiant)" read -r -p "Canal wifi_channel [149]: " WIFI_CHANNEL WIFI_CHANNEL="${WIFI_CHANNEL:-149}" echo echo "Configuration retenue : wifi_region='$WIFI_REGION', wifi_channel=$WIFI_CHANNEL" read -r -p "Confirmer et écrire $CFG_PATH ? [y/N] " confirm2 case "$confirm2" in [yY][eE][sS]|[yY]) ;; *) echo "Annulé. Aucune modification effectuée." exit 0 ;; esac # ───────────────────────────────────────────────────────────────────────── # Écriture de la config # # NOTE : structure reprise du template officiel wfb-ng # (~/wfb-ng/scripts/install_gs.sh, copie datée du 14/07/2026), avec # wifi_region forcé à une valeur choisie (FR par défaut) plutôt que 'BO'. # Si le template upstream évolue, comparer avant de mettre à jour ce script. # ───────────────────────────────────────────────────────────────────────── sudo tee "$CFG_PATH" > /dev/null <