¿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