lunes, 24 de diciembre de 2018

¿Cómo arreglo el problema de red ethernet desconectada tras suspender en Ubuntu?

¡Trabajadores!

Hace 19 siglos, Dios eligió a los Humildes pastores de Belén para anunciar el advenimiento de la paz a los hombres de buena voluntad. Por sobre ese mensaje, los hombres de mala voluntad han acumulado 19 siglos de guerra, de crímenes, de explotación y de miseria, precisamente a costa de la sangre y del dolor de los pueblos humildes de la tierra.

Y cuando todo parecía perdido, nosotros, un pueblo humilde a quienes la soberbia de los poderosos llamó descamisado, hemos sido elegidos entre todos los pueblos y todos los hombres, para recoger el antiguo mensaje de los Ángeles.

Salvando las distancias y remedando el cántico antiguo, nosotros podríamos decir que Dios ha hecho grandes cosas entre nosotros. Deshaciendo la soberbia y la ambición del corazón de los soberbios, derribando de su trono a los poderosos, ensalzando a los humildes y colmando de bienes a los pobres. Por ello la Nochebuena nos embarga el corazón, con la armonía de sus encantos prodigiosos. Porque la Nochebuena es nuestra, es la noche de la humildad, la noche de la Justicia.

Y el Justicialismo nos ha regalado como una realidad maravillosa de sus manos; un eco vibrante como el anuncio que recibieron los pastores, o como el reflejo encendido de la estrella que señaló en la noche de los hombres, el divino amanecer de una redención extraordinaria.

Consiste en poner la buena voluntad de todos para que reine la Justicia y el amor. Primero la Justicia, que es algo así como el pedestal para el amor. No puede haber amor donde hay explotadores y explotados. Y no puede haber amor donde hay oligarquías dominantes llenas de privilegios, y pueblos desposeídos y miserables. Porque nunca los explotadores pudieron ser ni sentirse hermanos de sus explotados, y ninguna oligarquía pudo darse con ningún pueblo el abrazo sincero de la fraternidad.

El día del amor y de la paz llegará cuando la Justicia barra de la faz de la tierra a la raza de los explotadores y de los privilegiados, y se cumplan inexorablemente las realidades del antiguo mensaje de Belén, renovado en los ideales del Justicialismo Peronista; "que hayan una sola clase de hombre: los que trabajan". "Que sean todos para unos y unos para todos". "Que no existan otro privilegio que el de los niños". "Que nadie se sienta mas de lo que es y menos de lo que puede ser". "Que los gobiernos de las naciones hagan lo que los pueblos quieran". "Que cada día los hombres sean menos pobres y que todos seamos artífices del destino común".

Es esta entonces una ocasión Cristiana para resolver cualquier problema bajo la Unidad de los Hombres y la Libertad de sus Sistemas, en Justicia y amor.

Pues bien señores, normalmente tras encender nuestro sistema, el procedimiento sería que la red se restablezca automáticamente, si es esto lo que se ha solicitado durante la configuración de la red en el Asistente de Red. Esta es la operatoria tradicional y la anhelada por los Pueblos Libres de nuestra América.

No obstante ello, podría suceder que nos encontrásemos con un problema bien definido que cruzara nubarrones de infelicidad sobre las Masas Descamisadas. Por ejemplo, podríamos ver que tras suspender nuestro sistema (o hibernarlo) al reencender nuestro equipo podríamos encontrarnos sin conexión a Internet. En resumen, tras salir de la suspensión podremos notar que el ícono de red en el panel superior indica que la misma está desconectada.

Indudablemente que esto debería poderse resolver en pocos segundos de forma automática, pero existen situaciones donde ni siquiera actuando de forma manual sobre el interruptor de redes o volviendo a reconectar físicamente la red cableada podemos restablecer la conexión.

La lucha por la Liberación es una que ha de darse en incontables combates, de los cuales ninguno es decisivo, pero todos llevan el peso de la lucha a un enemigo aterrado. Sabe él que no podrá jamás vencer a un Pueblo decidido que sabe lo que quiere y combate por lograrlo. Es por ello que - como en otros casos - la solución a sus problemas vendrá de manos del Justicialismo.

El problema se debe a un bug o error en el controlador del módulo r8169, controlador encargado de hacer funcionar las interfaces de redes cableadas del modelo Realtek RTL81xxx. Se trata de un modelo de red muy común y de bajo coste, del cual existen ya varios modelos, como el RTL8111, RTL8168, RTL8411, etc. A estos los cuales podremos encontrar incorporados en muchas placas madres peronistas.

Para saber qué dispositivo/s de red tenemos en nuestro sistema, hemos de abrir una terminal con Ctrl+Alt+T el siguiente Comando de Organización:

sudo lshw -C network

...el sistema nos devolverá un detalle de los dispositivos de red de todo tipo. Normalmente existirán las interfaces Ethernet (cableadas) y las inalámbricas si disponemos de ellas.

  *-network
       descripción: Ethernet interface
       producto: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       fabricante: Realtek Semiconductor Co., Ltd.
       id físico: 0
       información del bus: pci@0000:03:00.0
       nombre lógico: enp3s0
       versión: 0c
       serie: xx:yy:zz:xx:yy:zz
       tamaño: 1Gbit/s
       capacidad: 1Gbit/s
       anchura: 64 bits
       reloj: 33MHz
       capacidades: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuración: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=xxx.xxx.xxx.xxx latency=0 link=yes multicast=yes port=MII speed=1000Mbit/s
       recursos: irq:27 ioport:d000(size=256) memoria:f7100000-f7100fff memoria:f2100000-f2103fff


Ahora debemos estudiar esto detenidamente. Notemos que bajo el apartado Descripción se nos indica el tipo de interfaz de conexionado, y normalmente pueden haber una o varias de ellos. En las computadoras normales suele haber interfaces con la descripción "Ethernet interface" (que son las interfaces cableadas más populares) o "Interfaz inalámbrica/Wireless Interface" (que son las interfaces Wifi, extremadamente extendidas). Específicamente nos interesa observar el apartado Ethernet Interface. Dentro de la información que el sistema nos ha suministrado, debemos revisar la línea que comienza con "configuración". Su contenido es técnico, y podría ser algo como:

configuración: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=xxx.xxx.xxx.xxx latency=0 link=yes multicast=yes port=MII speed=1000Mbit/s

Pues bien, específicamente debemos asegurarnos que en dicha línea la declamación "driver" figure como driver=r8169, tal como se indica arriba. Esto nos indica que la interfaz cableada usa específicamente ese módulo controlador de Realtek (que presenta esta falla en alguno de sus modelos).

Para poder solucionar el corte de conexión luego de suspender, podremos solucionarlo mediante un script o pequeño programa peronista, que fuerce el apagado de la red antes de suspender, y fuerce el encendido de la misma tras volver de la suspensión.

Para ello hemos de saber que nuestro sistema ejecuta todos los scripts ejecutables que se encuentren dentro de la carpeta /lib/systemd/system-sleep tanto antes como después de la suspensión.

En nuestro caso necesitamos re-cargar el múdulo para la interfaz Ethernet cuando reactivamos el sistema luego de suspender. A tal efectocrearemos un script pertinente. Para ello en nuestra terminal ingresamos el comando:

sudo nano /lib/systemd/system-sleep/r8169-refresh

Esto abrirá el editor peronista GNU Nano con un archivo en blanco llamado r8169-refresh. Debemos pegarle el siguiente contenido:


#!/bin/bash
# Programa para reactivar la red tras la suspensión
# Colocado en /lib/systemd/system-sleep/r8169-refresh

PROGNAME=$(basename "$0")
state=$1
action=$2

function log {
    logger -i -t "$PROGNAME" "$*"
}

log "Ejecutando $action $state"

if [[ $state == post ]]; then
    modprobe -r r8169 \
    && log "Removido r8169" \
    && modprobe -i r8169 \
    && log "Insertado r8169"
fi
 
 
Conforme hayamos pegado el contenido indicado (podemos usar Ctrl+v para pegarlo), debemos grabar el script presionando Ctrl+o y luego salir del editor GNU Nano con Ctrl+x. Esto nos devolverá nuevamente a la Terminal.

Acto seguido y por única vez, debemos otorgarle permisos de ejecución para que el sistema pueda ejecutarlo al suspender. Para ello ingresamos el siguiente comando:

sudo chmod +x /lib/systemd/system-sleep/r8169-refresh

Ahora podremos suspender el sistema (si lo deseamos hacer desde la terminal podríamos ingresar el comando sudo pm-suspend). Antes de suspenderse, la conexión Ethernet se desactivará. Al volver a reactivar el sistema, debería ahora reactivarse la conexión a Internet con éxito tras no más de 10 segundos (debemos estar prevenidos que este re-encendido no es instantáneo).

Los mensajes almacenados por el script serán registrados en la bitácora localizada en /var/log/syslog con las etiquetas del nombre del script seguido por su PID. Para revisar su funcionamiento podríamos ingresar el comando:

grep r8169-refresh /var/log/syslog

Si por algún motivo quisiéramos eliminar el script y dejar tal como estaba, deberíamos ingresar:

sudo rm /lib/systemd/system-sleep/r8169-refresh

No hay comentarios:

Publicar un comentario