"Después del juego es antes del juego"
Sepp Herberger

domingo, 24 de febrero de 2019

Activación automática de la wifi en Network Manager

Tengo un aula de portátiles en los que cada cierto tiempo se quejaban de que la wifi dejaba de funcionar. Realmente lo que pasaba es que de alguna forma en el Network Manager se desmarcaba la opción "Activar inalámbrica".

Antes de nada me he aseguré de que no se daba ninguna de las posibles causas:

  • acer_wmi: verifico que esté modulo está blacklistado y no se carga al arrancar. Por algún motivo está documentado que causa apagados de la wifi.
  • ath9k: en mi caso este es el driver que usan las tarjetas wifi. Con "modinfo ath9k" veo que tiene un parametro powersave que activa el ahorro de energia, apagando la wifi. Con este método compruebo que está a 0.
  • /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf: verifico que en este fichero tenemos "wifi.powersave = 2". El valor 2 significa "disabled"

Si aún así se sigue desactivando de forma aleatoria de una manera que no puedo controlar no me queda otra opción que, para facilitar la vida al usuario, hacer que se compruebe el estado cada poco tiempo y activarla si es necesario. Para ello uso un script que se basa en nmcli para interacturar con la tarjeta wifi desde bash.
# cat /usr/bin/watchdog_wifi
#!/bin/bash
while :
do
   estado=$(nmcli radio wifi)
   test "$estado" = "disabled"  && nmcli radio wifi on
   sleep 15
done
exit 0
Es muy sencillo: un bucle infinito que cada 15 segundos comprueba si la wifi está desactivada y la activa en caso afirmativo. Este script se debe ejecutar con la identidad del usuario que ha iniciado sesión, para ello lo mas adecuado es lanzarlo desde /etc/xdg/autosart:
# cat  /etc/xdg/autostart/wifi_watchdog.desktop 
[Desktop Entry]
Version=2.0-2
Encoding=UTF-8
Name=Evita Apagado Wifi
Type=Application
Exec=/usr/bin/wifi_watchdog
Icon=/usr/share/icons/elementary-xfce/status/48/wifi-100.png
Terminal=false
Name[es_ES]=Evita Apagado Wifi
Categories=Application;Education
Con esto el problema se resuelve de forma bastante efectiva.

Aun así puede seguir existiendo un problema: que la wifi se desactive de forma física (hard) mediante el interruptor que tiene el portátil (normalmente una tecla de función mas la tecla Fn). En ese caso no se puede activar por software, pero si se podría detectar está situación usando el programa "rfkill" y mostrar un mensaje al usuario para que pulse de nuevo el interruptor. Ejemplo de wifi bloqueado por botón físico:
# rfkill 
ID TYPE      DEVICE         SOFT         HARD
 0 wlan      phy0   desbloqueado      bloqueado
 1 bluetooth hci0   desbloqueado      desbloqueado
Sería sencillo procesar la salida de rfkill (tiene varios parámetros para filtrar la salida) y si tenemos bloqueada físicamente la wifi lanzar el aviso.


Opportunity ya no responde, hace 10 días que la NASA dió la misión por finalizada. Estoy seguro de que está esperando que alguien llegue, limpie de polvo las placas solares y cambie las baterías para empezar a trabajar de nuevo.

Hagamos un homenaje a esa maravillos máquina y su 45Km recorridos (44 más de los esperados):

Por otro lado, la Curiosity se ha reiniciado tras un fallo inesperado, pero todo va bien. Ya habia pasado antes. Eso de que una máquina tan crítica tenga que hace reinicios es un alivio para cualquier sysadmin. Es buena señal saber que en todas partes cuecen habas.

No hay comentarios:

Publicar un comentario