Ubuntu 18.04 - Ethernet desconectada após suspender

16

A Ethernet não é retomada após a suspensão.

sudo service network-manager restart

não funciona. Apenas reiniciar resolve o problema.

    
por aaaa 28.04.2018 / 16:21

10 respostas

29

O principal erro do Ubuntu que acompanha este problema, pelo menos para o módulo do kernel da rede r8169, parece ser:

link

Gostaria de encorajar todos que são afetados por esta questão a ir até lá e marcar que isso afeta você, para que os mantenedores tenham uma noção melhor de como ela é séria.

Estou executando uma nova instalação do Xubuntu 18.04, e minha interface Ethernet usa o módulo do kernel r8169 , que descobri executando:

sudo lshw -C network

Haverá dois grupos de informações, uma começando com description: Ethernet interface e outra com description: Wireless interface . Em description: Ethernet interface , procure uma linha começando com configuration: , assim:

configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl_nic/rtl8105e-1.fw ip=192.168.100.6 latency=0 link=yes multicast=yes port=MII speed=100Mbit/s

O driver estará aqui: driver= .

O Systemd executa todos os scripts executáveis em /lib/systemd/system-sleep antes e depois da suspensão, passando 2 parâmetros, $1 é o estado ( pre , antes da suspensão ou post , após a suspensão) e $2 é o ação ( suspend , hibernate , hybrid-state ou suspend-then-hibernate ). Isso está documentado na página do manual para systemd-suspend.service .

Precisamos recarregar o módulo para a interface Ethernet quando retomarmos da suspensão, após suspender. Então eu criei o script /lib/systemd/system-sleep/r8169-refresh :

#!/bin/bash

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

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

log "Running $action $state"

if [[ $state == post ]]; then
    modprobe -r r8169 \
    && log "Removed r8169" \
    && modprobe -i r8169 \
    && log "Inserted r8169"
fi

e tornou-o executável:

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

As mensagens registradas do script irão para /var/log/syslog marcadas com o nome do script e seu PID. Desta forma, você pode verificar se o script recarregou o módulo do kernel:

grep r8169-refresh /var/log/syslog
    
por Paulo Marcel Coelho Aragão 30.04.2018 / 16:34
4

Aqui está outra solução simples (r?): crie um serviço systemd cuja única tarefa é descarregar / recarregar o módulo após um ciclo de suspensão (eu o nomeei /etc/systemd/system/fix-r8169.service ):

[Unit]
Description=Fix RTL-8169 Driver on resume from suspend
After=suspend.target

[Service]
User=root
Type=oneshot
ExecStartPre=/sbin/modprobe -r r8169
ExecStart=/sbin/modprobe r8169
TimeoutSec=0
StandardOutput=syslog

[Install]
WantedBy=suspend.target

Depois é só executar systemctl enable fix-r8169.service e você deve estar pronto !! Agora, o Systemd irá descarregar e recarregar automaticamente o seu módulo ao acordar da suspensão.

Felicidades!

    
por Diego Rivera 23.07.2018 / 21:16
2

Aconteceu comigo também.

Descarregue / recarregue os módulos / drivers do kernel da rede.

A minha é r8169, então (como root): (eu digitei à mão, então houve um atraso)

sudo modprobe -r r8169
sudo modprobe -i r8169

Eu também removi mii durante minha primeira tentativa. Não é necessário, no entanto.

    
por MAguest 28.04.2018 / 16:54
1

Eu tive o mesmo problema e encontrei esta solução.

  1. run: sudo lshw -C network
    para encontrar o seu módulo de kernel da placa de rede

    Em * -rede, descrição: Interface Ethernet, no campo de configuração encontrada em driver=sky2 para mim. sky2 é um módulo de kernel de rede ethernet para meu laptop.

  2. Eu crio um arquivo sky2.sh para a pasta /lib/systemd/system-sleep/ com

    #!/bin/bash 
    modprobe -r sky2 # unload sky2 kernel module 
    modprobe -i sky2 # reload sky2 kernel module 
    

    e altere as permissões com:

    sudo chmod a+x sky2.sh
    

Depois disso, o problema foi resolvido.

    
por Kostas Vekrakis 29.04.2018 / 08:32
0

Detecta a conexão Ethernet?

então

aberto NetworkManager.conf

sudo nano /etc/NetworkManager/NetworkManager.conf

Comente (adicione #) o dns=dnsmasq

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

[ifupdown]
managed=true

Reinicie o gerenciador de rede

sudo service network-manager restart
    
por Santhosh Veer 28.04.2018 / 16:46
0

Pressione Ctrl + Alt + T para ir para um terminal e digite:

sudo apt-get purge tlp

ou

edite /etc/default/tlp e altere:

WOL_DISABLE = NO

para

WOL_DISABLE = YES
    
por 갤럭시제로 01.07.2018 / 09:26
0

Eu não tenho reputação suficiente para comentar ou votar positivamente a resposta aceita (que agora está desatualizada)

Se você executar lsmod | grep r8169 e mostrar que você tem o módulo do kernel r8169 carregado, e seu kernel é mais antigo que o 4.15.0-24-generic, então você é mais provavelmente afetado pelo bug vinculado na resposta aceita link

BTW, experimentei esse bug e, para mim, lspci | grep 'Gigabit Ethernet' shows RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

Este bug foi corrigido.

Se o seu kernel for mais antigo que o 4.15.0-24-generic, apenas execute

apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot
    
por Lope 03.07.2018 / 18:23
0

Eu tive o mesmo problema, mas as soluções aqui não funcionaram para mim. Passei dias passando por vários fóruns sobre este assunto e tentei quase tudo. Duas soluções alternativas são mencionadas, atualize o Kernel ou instale o driver do módulo anterior. Eu escolhi o último e instalei o driver r8168. Inicialmente, isso também falhou. No entanto, descobri algo que funciona e adaptei-o à solução de Paulo.

Estou executando (K) o Ubuntu 18.04 com o Kernel 4.15.0-24-generic.

A saída de lshw -C network inclui isso ...

description: Ethernet interface
   product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
   vendor: Realtek Semiconductor Co., Ltd.
   physical id: 0
   bus info: pci@0000:05:00.0
   logical name: enp5s0
   version: 0c
   serial: 80:fa:5b:49:69:b3
   size: 1Gbit/s
   capacity: 1Gbit/s
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
   configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.045.08-NAPI duplex=full ip=192.168.10.213 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
   resources: irq:133 ioport:e000(size=256) memory:df000000-df000fff memory:d0000000-d0003fff

Instalei o pacote r8168-dkms , mas isso não foi suficiente. Mais dois passos foram necessários.

Etapa 1) Edite o arquivo /etc/modprobe.d/r8168-dkms.conf e ative a linha (isto é, remova o comentário) lista negra r8169

Etapa 2) Com base na solução de Paulo, criei o seguinte script / lib / systemd / system-sleep / r8168-refresh

#!/bin/bash

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

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

log "Running $action $state"

if [[ $state == post ]]; then
     log "ifconfig down enp5s0"
     ifconfig enp5s0 down
     log "ifconfig up enp5s0"
     ifconfig enp5s0 192.168.10.213
fi

Este código é, obviamente, específico da minha máquina (nome do dispositivo e endereço IP). Certamente poderia ser melhorado, mas atende às minhas necessidades no momento.

Isso funciona com o NetworkManager.

    
por andypotter 13.07.2018 / 16:56
0

Isso aconteceu comigo também com uma placa-mãe Gigabyte-B250M-DS3H após a atualização do Ubuntu 16.04 para 18.04 em 28 de julho de 2018. O kernel é o 4.15.0-29-generic.

O resultado de sudo lshw -C network mostrou o Controlador Ethernet Gigabit PCI Express RTL8111 / 8168/8411, enquanto mostrava que r8169 é o driver usado.

O que finalmente funcionou foi instalar o driver específico para o controlador Ethernet (grande surpresa):

sudo apt install r8168-dkms

e, em seguida, reiniciar o computador (obrigado andypotter). Eu não tive que colocar o r8169 na lista negra, mas eu ainda tive que criar um script em /lib/systemd/system-sleep/ que eu chamei de r8168-refresh-after-suspend (o conselho de Paulo) que iria remover e reinserir o r8168:

#!/bin/bash

# $1 is the state (pre or post)
# $2 is the action (suspend)

case $1/$2 in
pre/suspend)
  modprobe -r r8168
;;
post/suspend)
  modprobe -i r8168
;;
esac

e, claro, torná-lo executável com:

sudo chmod +x /lib/systemd/system-sleep/r8168-refresh-after-suspend

Isso funcionou como um encanto. Então, isso ainda é um problema no kernel 4.15.0-29, mas a correção do band-aid ainda funciona.

    
por mdewitt 30.07.2018 / 06:38
0

Eu tenho o mesmo problema (driver = r8169), a Ethernet não funciona após o reinício da suspensão.

Funciona perfeitamente com o kernel 4.13.0-31. Em outras palavras, a Ethernet continua a funcionar depois de sair da suspensão.

Mas com o kernel 4.15.0-32 a Ethernet não funciona depois de sair da suspensão. Eu tentei a correção

modprobe -r r8169
modprobe -i r8169

mas isso não tem efeito.

Eu relatei isso para link

    
por labnut 15.08.2018 / 16:28