Wi-Fi no funciona en GNU/Linux después de suspender o hibernar
Si estás usando una distribución GNU/Linux, es muy probable que al activar tu equipo después de un estado de suspensión o hibernación, haya presentado un mal funcionamiento, está ocasión abordaremos el problema en el que el Wi-Fi deja de funcionar (no permite conectarnos a una red).
Datos adicionales
Estoy utilizando SolusOS con Kernel 5.5.7, el problema radica al cargar los módulos del adaptador de red inalámbrico MT7630e de Mediatek (después de la suspensión o hibernación), la solución funcionará en la mayoría de las distribuciones GNU/Linux.
Encontrar módulo
Abrimos una terminal (emulador) con Ctrl + Alt + T (es posible que esta combinación de teclas no esté asignada para abrir la terminal), o buscando en su menú «Terminal».
Ejecutaremos el siguiente comando:
lspci | grep -i wireless
Devolverá información sobre el chipset de la tarjeta de red inalámbrica. En mi caso la información es la siguiente:
03:00.0 Network controller: MEDIATEK Corp. MT7630e 802.11bgn Wireless Network Adapter
Para saber qué módulos de nuestra tarjeta de red inalámbrica están cargados en el kernel, ejecutamos el siguiente comando:
lsmod | grep mt
Se utiliza el comando «grep» para buscar patrones en cada archivo, en este caso para buscar los módulos que contengan las letras mt, dado que la información obtenida anteriormente indica que el adaptador de red corresponde a un MT7630e, este valor será diferente para usted, así que sustituya mt por las primeras letras de su adaptador de red.
Devolverá información sobre los módulos cargados de la tarjeta de red en el kernel. En mi caso la información es la siguiente:
mt76x0e 16384 0
mt76x0_common 45056 1 mt76x0e
mt76x02_lib 86016 2 mt76x0e,mt76x0_common
mt76 69632 3 mt76x0e,mt76x02_lib,mt76x0_common
mac80211 892928 4 mt76,mt76x0e,mt76x02_lib,mt76x0_common
cfg80211 835584 3 mt76,mt76x02_lib,mac80211
Crear el script
Para solucionar nuestro problema, debemos reiniciar automáticamente el Wi-Fi después de un modo de suspensión o hibernación. Creamos el siguiente script [1]:
#!/bin/sh
set -e
if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]; then
case "$1" in
pre) modprobe -r mt76x0e suspend ;;
post) modprobe mt76x0e resume ;;
esac
fi
Cambiar mt76x0e por el valor que haya obtenido en la sección anterior.
Lo guardamos como wifi-wakeup.sh
, podemos optar por otro nombre, pero la extensión debe ser «.sh». Debemos mover el archivo a otro directorio, para ello abrimos una terminal en el directorio donde está nuestro archivo, y ejecutamos lo siguiente:
Para SolusOS:
sudo mv wifi-wakeup.sh /usr/lib64/systemd/system-sleep/
Para otra distribución:
sudo mv wifi-wakeup.sh /lib/systemd/system-sleep/
Si no existiera ninguna de estas ubicaciones, abra el explorador de archivos desde el directorio raíz
/
, busque la carpetasystem-sleep
, y utilice la ruta donde se ubica este directorio, cambiándola en el comando anterior.
Hacemos que el script sea ejecutable ejecutando lo siguiente:
Para SolusOS:
sudo chmod a+x /usr/lib64/systemd/system-sleep/wifi-wakeup.sh
Para otra distribución:
sudo chmod a+x /lib/systemd/system-sleep/wifi-wakeup.sh
Sí la ruta del directorio no corresponde con ninguna de las anteriores, cámbiela por la que uso en el comando anterior, procurando colocar el nombre del archivo al final de la ruta del directorio.
Ahora solo reinicie su equipo, y después de una suspensión o hibernación, no deberá tener problemas con su Wi-Fi.
Bibliografía
1. «Drivers – Mediatek MT7630e not working on Linux 5.0.2 & 4.20 – Unix & Linux Stack Exchange,» Unix, Sep. 2, 2019. https://unix.stackexchange.com/questions/509208/mediatek-mt7630e-not-working-on-linux-5-0-2-4-20 (accessed Dec. 30, 2022).
Deja una respuesta