From 47d8848e3770d63a63cb6168cfc53d24abe5cdc4 Mon Sep 17 00:00:00 2001 From: sergio Date: Wed, 5 Aug 2026 18:27:48 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8C=20wifi-up:=20sin=20`ctrl=5Finterfa?= =?UTF-8?q?ce`,=20wpa=5Fcli=20no=20ten=C3=ADa=20puerta=20a=20la=20que=20ll?= =?UTF-8?q?amar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El /tmp/wpa.conf que generaba sólo traía el bloque `network`. Sin `ctrl_interface=/run/wpa_supplicant`, wpa_supplicant no abre socket de control y `wpa_cli` no conecta — síntoma que parece un fallo de red y es una puerta que no existe. Peor: deja ciego el único dato que distingue «clave mal» de «DHCP mudo», que es wpa_state. Y la espera de asociación que acabo de añadir dependía de wpa_cli, o sea que habría fallado siempre. Co-Authored-By: Claude Opus 5 (1M context) --- scripts/cosmic/metal-desktop-image.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/cosmic/metal-desktop-image.sh b/scripts/cosmic/metal-desktop-image.sh index 7a5a20f1..ef98c4fa 100755 --- a/scripts/cosmic/metal-desktop-image.sh +++ b/scripts/cosmic/metal-desktop-image.sh @@ -252,7 +252,12 @@ done [ -n "$IF" ] || { echo "no apareció interfaz wifi. Mirá: dmesg | grep -i ath10k"; exit 1; } echo "interfaz: $IF" ip link set "$IF" up -printf 'network={\n\tssid="%s"\n\tpsk="%s"\n}\n' "$SSID" "$PSK" > /tmp/wpa.conf +# ctrl_interface NO es opcional: sin esa línea wpa_supplicant no abre socket de control y `wpa_cli` +# no tiene con qué hablar — el síntoma es «wpa_cli no conecta», que parece un fallo de red y es +# simplemente que no hay puerta. Y sin wpa_cli no se puede saber si asoció, que es el único dato que +# distingue «clave mal» de «DHCP mudo». +mkdir -p /run/wpa_supplicant +printf 'ctrl_interface=/run/wpa_supplicant\nupdate_config=1\nnetwork={\n\tssid="%s"\n\tpsk="%s"\n}\n' "$SSID" "$PSK" > /tmp/wpa.conf wpa_supplicant -B -i "$IF" -c /tmp/wpa.conf -Dnl80211 || { echo "wpa_supplicant falló"; exit 1; } # Esperar a la ASOCIACIÓN, no al reloj. Con `sleep 6` fijo, udhcpc salía a preguntar antes de que # hubiera enlace y devolvía «sin IPv4», que se lee como «clave equivocada» cuando la clave está bien.