Lo que hay que sufrir para estar guapo.
La historia la cuento al final; ahora quiero centrarme en los problemas de usar un dispositivo de red inlámbrica USB en un equipo de sobremesa que entra en modo de ahorro de energía.
El dispositivo es un pequeño adaptador USB de Realtek con la siguiente identificación:
idVendor 0x0bda Realtek Semiconductor Corp. idProduct 0x8171 RTL8188SU 802.11n WLAN Adapter bcdDevice 2.00 iManufacturer 1 Manufacturer Realtek iProduct 2 RTL8188S WLAN Adapter
Es lento en el arranque de red; se toma su tiempo hasta que está listo pero después ni te enteras de que estás accediendo a través de él. Calor, lógicamente, porque es muy, muy pequeño pero en rendimiento, dada la infraestructura que tengo, inapreciable.
El sistema operativo es Debian, versión 9 (Stretch), con el entorno de escritorio Gnome, y el problema se resume en que el dispositivo está fuera de combate al volver al modo de energía normal.
La red, por tanto, ni está ni se la espera y eso, cuando necesitas retomar el trabajo, es todo un parón.
¿ Ahora ? ¿ A mi edad ? ¿ Tengo que ponerme a mirar por qué el dispositivo no ha vuelto con la que tengo l iada ? ¡ Si está enchufado en la trasera !
La solución más inmediata sería reiniciar la red. Pero no, ésto no consigue que el módulo vuelva a la vida. En su lugar es necesario sacarlo del núcleo y volver a insertarlo.
$ sudo modprobe -r r8712u $ sudo modprobe r8712u
Tarda un poco en volver a la vida pero termina haciéndolo. Quizás demasiado, pero si quiero mantener el equipo en modo ahorro la mayor parte del día no me queda otra que hacerlo así.
Ahora bien, lo idóneo sería que fuese el propio sistema el que hiciese el propio sistema. Aprovechando que systemd está integrado y en uso he creado, copiando la receta de uno de los enlaces de abajo, el siguiente servicio:
# # /etc/systemd/system/r8712u-reload.service # [Unit] Description=Reload rtl871x wireless lan driver after system resume After=hibernate.target suspend.target hybrid-sleep.target [Service] Type=oneshot ExecStart=/bin/sh -c "/sbin/modprobe -r r8712u; /sbin/modprobe r8712u" [Install] WantedBy=hibernate.target suspend.target hybrid-sleep.target
A continuación activamos el servicio
$ sudo systemctl enable r8712u-reload
Y ya está, una vez volvamos al modo de energía normal podemos ir viendo cómo va el dispositivo con lo siguiente:
$ nmcli device status DISPOSITIVO TIPO ESTADO CONEXIÓN wlan2 wifi desconectado -- ... $ nmcli device status ... wlan2 wifi conectando (configurando) lyv ... $ nmcli device status ... wlan2 wifi conectado lyv ...
¿ Y si con lo anterior no basta ? Pues me temoq ue será necesario hacer un reinicio de la red por la vía tradicional
$ sudo systemctl restart networking
El cambio de ordenador
No recuerdo si lo he dicho ya. Salvo los servidores (y hay una excepción) los equipos que usamos en la empresa y en casa son de segunda mano. Dado que empleamos Linux los requerimientos no son tan altos como en otros entornos y debido a su precio reemplazarlos es menos doloroso.
El equipo de sobremesa que uso en casa era hasta esta semana un Dell Optiplex 3010. El fallo de su fuente de alimentación, que en el mercado de segunda mano está por las nubes, me decidió por cambiar y he encontrado un Dell Optiplex 7010 que aumenta el procesador, un i5, y al que le he añadido la memoria y el disco del anterior. Ahora, salvo que tengo que apañarme de momento por una conexión de red USB, vuelvo a la comidad de un sobremesa para trabajar en casa.
Enlaces y referencias
- http://gnome-networkmanager.2324886.n4.nabble.com/Kernel-module-r8712u-reload-suspend-resume-systemd-td24028.html
- https://serverfault.com/questions/62316/how-do-i-list-loaded-linux-module-parameter-values#389965
- https://superuser.com/questions/620201/how-to-force-ubuntu-debian-mint-to-unload-modules-at-suspend-to-disk#620203
- https://developer.ridgerun.com/wiki/index.php/Realtek_R8712U_USB_WiFi_Integration