tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1574Shell 204Rust 111Markdown 993763 Definiciones

📶 wifi-up: esperaba 6s fijos y culpaba a la clave de un problema de tiempo

En el OptiPlex la interfaz wlan SÍ aparece (ath10k cargó y el re-probe PCI funcionó),
pero `udhcpc` salía a preguntar 6s después de lanzar wpa_supplicant — antes de que
hubiera asociación. Sin lease, y el mensaje decía «¿clave correcta?», que manda a
buscar exactamente donde NO está el problema.

Ahora espera al HECHO: wpa_state=COMPLETED (techo 40s), informa el estado real
mientras espera, y distingue los casos en el mensaje de fallo — 4WAY_HANDSHAKE es
clave, SCANNING es que no ve la red. Y DHCP reintenta 3 veces, porque el AP a veces
ignora el primer DISCOVER justo tras asociar.

Tercera vez hoy que un `sleep` fijo produce un diagnóstico falso (initramfs 5s,
cosmic-diag 50s, wifi-up 6s). El patrón: esperar al reloj en vez de al hecho no falla
donde se prueba, falla en la máquina lenta — y miente sobre la causa.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

89076a5106add65fa9042edcd2ec3047c48dbbfb · por sergio · (hace 2 meses) · padre c8b0093aa · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +18 −3

diff --git a/scripts/cosmic/metal-desktop-image.sh b/scripts/cosmic/metal-desktop-image.sh
index b21515c5..7a5a20f1 100755
--- a/scripts/cosmic/metal-desktop-image.sh
+++ b/scripts/cosmic/metal-desktop-image.sh
@@ -254,7 +254,17 @@ echo "interfaz: $IF"
 ip link set "$IF" up
 printf 'network={\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; }
-sleep 6
+# 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.
+# Un 802.11ac tarda más: escaneo de dos bandas + 4-way handshake.
+i=0
+while [ $i -lt 40 ]; do
+    ST=$(wpa_cli -i "$IF" status 2>/dev/null | sed -n 's/^wpa_state=//p')
+    [ "$ST" = COMPLETED ] && { echo "asociado a $SSID (${i}s)"; break; }
+    [ $((i % 5)) -eq 0 ] && echo "   esperando asociación… wpa_state=${ST:-?} (${i}s)"
+    i=$((i + 1)); sleep 1
+done
+[ "$ST" = COMPLETED ] || echo "   ⚠ no asoció (wpa_state=${ST:-?}). 4WAY_HANDSHAKE=clave; SCANNING=no ve la red"
 cat > /tmp/udhcpc.script <<'US'
 #!/bin/sh
 case "$1" in
@@ -267,8 +277,13 @@ esac
 exit 0
 US
 chmod +x /tmp/udhcpc.script
-udhcpc -i "$IF" -n -q -s /tmp/udhcpc.script
-ip -4 addr show "$IF" | grep -w inet || echo "sin IPv4 — ¿clave correcta? wpa_cli status"
+# Tres intentos: el AP a veces no contesta el primer DISCOVER justo tras asociar.
+for t in 1 2 3; do
+    udhcpc -i "$IF" -n -q -s /tmp/udhcpc.script && break
+    echo "   DHCP intento $t sin respuesta, reintento…"; sleep 3
+done
+ip -4 addr show "$IF" | grep -w inet \
+  || echo "sin IPv4. Mirá 'wpa_cli -i $IF status': si wpa_state=COMPLETED el problema es DHCP, no la clave"
 echo "== desde el laptop:  ssh -i ~/.ssh/hammer-metal root@<la IP de arriba> =="
 WIFI
 chmod 0755 "$MERGED/usr/bin/wifi-up"