Ubuntu 18.04 - Ethernet disconnessa dopo la sospensione


29

Ethernet non riprende dopo la sospensione.

sudo service network-manager restart

non funziona. Il riavvio risolve solo il problema.


Questo problema è tornato per me in Xubuntu 18.04.2, kernel 4.15.0-54
HEKTO

Risposte:


45

Il principale bug di Ubuntu che traccia questo problema, almeno per il modulo kernel di rete r8169, sembra essere:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1752772

Incoraggerei tutti coloro che sono interessati da questo problema ad andare lì e segnare che ti riguarda, in modo che i manutentori abbiano una migliore percezione di quanto sia grave.

Sto eseguendo una nuova installazione di Xubuntu 18.04 e la mia interfaccia Ethernet utilizza il modulo kernel r8169 , che ho scoperto in esecuzione:

sudo lshw -C network

Ci saranno 2 gruppi di informazioni, uno che inizia con description: Ethernet interfacee un altro con description: Wireless interface. Sotto description: Ethernet interface, cerca una linea che inizia con configuration:, in questo modo:

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

Il driver sarà qui: driver=.

Systemd gestisce tutti gli script eseguibili sotto /lib/systemd/system-sleepprima e dopo la sospensione, passando 2 parametri, $1è lo stato ( preprima di sospendere, o post, dopo la sospensione), ed $2è l'azione ( suspend, hibernate, hybrid-state, o suspend-then-hibernate). Questo è documentato nella pagina man di systemd-suspend.service.

Dobbiamo ricaricare il modulo per l'interfaccia Ethernet quando si riprende dalla sospensione, dopo la sospensione. Quindi ho creato lo 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 lo ha reso eseguibile:

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

I messaggi registrati dallo script verranno /var/log/syslogcontrassegnati con il nome dello script e il suo PID. In questo modo puoi verificare se lo script ha ricaricato il modulo del kernel:

grep r8169-refresh /var/log/syslog

madzohan , penso che potrebbe essere ridondante aggiungere la tua modifica, poiché nella risposta ho menzionato due volte che lo script deve essere eseguibile: "systemd esegue tutti gli script eseguibili in / lib / systemd / system-sleep" e anche "Ho creato e realizzato script eseguibile / lib / systemd / system-sleep / r8169-refresh "
Paulo Marcel Coelho Aragão

Questo problema è stato risolto nel kernel 4.15.0-24.26, rilasciato il 07/01/2018, quindi la soluzione alternativa non è più necessaria.
Paulo Marcel Coelho Aragão,

1
Ho questo problema sul mio laptop da quando ho installato alcuni aggiornamenti qualche giorno fa. La soluzione sopra indicata risolve ancora il problema. Molte grazie!
Daniel,

@Daniel, potresti pubblicare l'output di: apt policy linux-image-generic? Questo problema avrebbe dovuto essere risolto dal 07/01/2018, questa soluzione alternativa non dovrebbe più essere necessaria.
Paulo Marcel Coelho Aragão,

Non è solo il 18.04. Nel 16.04 il driver del kernel rtl8169 doveva essere scaricato e caricato anche dopo la sospensione: askubuntu.com/questions/950871/…
WinEunuuchs2Unix

8

Ecco un'altra semplice soluzione (r?): Creare un servizio systemd la cui unica attività è scaricare / ricaricare il modulo dopo un ciclo di sospensione (l'ho chiamato /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

Quindi esegui systemctl enable fix-r8169.servicee dovresti essere impostato !! Systemd ora scaricherà e ricaricherà automaticamente il modulo al riavvio della sospensione.

Saluti!


3

È successo anche a me.

Scarica / ricarica i moduli / driver del kernel di rete.

Il mio è r8169, quindi (come root): (ho digitato a mano, quindi c'è stato un ritardo)

sudo modprobe -r r8169
sudo modprobe -i r8169

Ho anche rimosso mii durante il mio primo tentativo. Non è necessario però.


sudo modprobe -i r8169
aaaa,

lavorato! devo farlo manualmente ora per tutto il tempo che riprendo?
aaaa,

Questa è la stessa della soluzione accettata, ma senza inserirla in uno script che verrà eseguito al riavvio e senza la funzione di registrazione.
Dominic108

3

Ho avuto lo stesso problema e ho trovato questa soluzione.

  1. run: sudo lshw -C network
    per trovare il modulo del kernel della scheda di rete

    In * -network, descrizione: interfaccia Ethernet, nel campo di configurazione trovato
    driver=sky2per me. sky2 è un modulo kernel di rete ethernet per il mio laptop.

  2. Creo un file sky2.sh in: /lib/systemd/system-sleep/ cartella con

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

    e modifica le autorizzazioni con:

    sudo chmod a+x sky2.sh
    

Successivamente il problema è stato risolto.


È uguale alla soluzione accettata, senza la funzione di registrazione.
Dominic108

1

Rileva la connessione Ethernet?

poi

Aperto NetworkManager.conf

sudo nano /etc/NetworkManager/NetworkManager.conf

Commenta (Aggiungi #) il dns=dnsmasq

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

[ifupdown]
managed=true

Riavvia il gestore di rete

sudo service network-manager restart

[main] plugins = ifupdown, keyfile [ifupdown] managed = true [dispositivo] wifi.scan-rand-mac-address = no
aaaa

questo è quello che ho nel file ....
aaaa,

hai aggiornato il file conf in precedenza? se sì, riavvia e controlla
Santhosh Veer,

Ho provato la tua soluzione Santhosh Veer. Ancora in grigio. Ethernet.
aaaa,

eseguire questo comando systemctl status NetworkManager.serviceper verificare l'errore
Santhosh Veer,

1

ho risolto questo problema sul mio Ubuntu 18.04 Bionic aggiornando il kernel dalla 4.15 alla 4.20 (l'ultima il 16.01.2019) usando UKUU

per installare l'ultimo kernel installare Ubuntu Kernel Update Utility

sudo add-apt-repository ppa:teejee2008/ppa

sudo apt-get install ukuu

disabilitare il controllo di accesso con il seguente comando:

sudo xhost +

quindi installare con ukuu

sudo ukuu

sudo ukuu --install-latest

e riavviare

sudo reboot

0

Premi Ctrl+ Alt+ Tper andare a un terminale e digitare:

sudo apt-get purge tlp

o

modifica /etc/default/tlpe cambia:

WOL_DISABLE = NO

a

WOL_DISABLE = YES

Benvenuto in Ask Ubuntu! ;-) Potresti per favore rivedere le mie modifiche e anche rivedere l' aiuto di modifica per migliorare la leggibilità delle tue risposte in futuro ... ;-)
Fabby

0

Non ho abbastanza reputazione per commentare o votare la risposta accettata (che ora è obsoleta)

Se esegui lsmod | grep r8169e mostra che hai caricato il modulo del kernel r8169 e che il tuo kernel è più vecchio di 4.15.0-24-generico, molto probabilmente sei influenzato dal bug collegato nella risposta accettata https: //bugs.launchpad. net / ubuntu / + source / linux / + bug / 1.752.772

A proposito ho riscontrato questo errore e per me lspci | grep 'Gigabit Ethernet'mostra RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

Questo errore è stato corretto.

Se il tuo kernel è più vecchio di 4.15.0-24-generico, esegui semplicemente

apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot

0

Ho avuto lo stesso problema ma le soluzioni qui non hanno funzionato per me. Ho trascorso giorni a passare diversi forum su questo argomento e ho provato praticamente tutto. Sono menzionate due soluzioni alternative, aggiornare il kernel o installare il driver del modulo precedente. Ho scelto quest'ultimo e ho installato il driver r8168. Inizialmente, anche quello fallì. Tuttavia, ho scoperto qualcosa che funziona e l'ho adattato alla soluzione di Paulo.

Sto eseguendo (K) Ubuntu 18.04 con il kernel 4.15.0-24-generico.

L'output dalla rete lshw -C include questo ...

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

Ho installato il pacchetto r8168-dkms , tuttavia non è stato sufficiente. Sono stati necessari altri due passaggi.

Passaggio 1) Modifica il file /etc/modprobe.d/r8168-dkms.conf e abilita la riga (ovvero rimuovi il commento) blacklist r8169

Passaggio 2) Sulla base della soluzione di Paulo, ho creato il seguente script / lib / systemd / system-sleep / r8168-refresh

#! / Bin / bash

PROGNAME = $ (nome base "$ 0")
Stato = $ 1
action = $ 2

registro funzioni {
    logger -i -t "$ PROGNAME" "$ *"
}

registro "Esecuzione $ action $ state"

if [[$ state == post]]; poi
     registro "ifconfig down enp5s0"
     ifconfig enp5s0 down
     registro "ifconfig up enp5s0"
     ifconfig enp5s0 192.168.10.213
fi

Questo codice è ovviamente specifico per la mia macchina (nome del dispositivo e indirizzo IP). Potrebbe certamente essere migliorato ma al momento soddisfa le mie esigenze.

Questo funzionerà con NetworkManager.


0

Questo è successo anche a me con una scheda madre Gigabyte-B250M-DS3H dopo l'aggiornamento da Ubuntu 16.04 a 18.04 il 28 luglio 2018. Il kernel è 4.15.0-29-generico.

Il risultato ha sudo lshw -C networkmostrato il controller Ethernet Gigabit PCI Express RTL8111 / 8168/8411, mentre ha dimostrato che r8169 è il driver utilizzato.

Ciò che alla fine ha funzionato è stato l'installazione del driver specifico per il controller Ethernet (grande sorpresa):

sudo apt install r8168-dkms

e quindi riavviare il computer (grazie andypotter). Non dovevo inserire nella blacklist r8169, ma dovevo comunque creare una sceneggiatura /lib/systemd/system-sleep/che r8168-refresh-after-suspendchiamavo (un consiglio di la Paulo) che avrebbe rimosso e reinserito 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, ovviamente, renderlo eseguibile con:

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

Questo ha funzionato come un fascino. Quindi, questo è ancora un problema nel kernel 4.15.0-29, ma la correzione del cerotto funziona ancora.


0

Ho lo stesso problema (driver = r8169), Ethernet non funziona dopo il ripristino dalla sospensione.

Funziona perfettamente con il kernel 4.13.0-31. In altre parole, Ethernet continua a funzionare dopo la ripresa dalla sospensione.

Ma con il kernel 4.15.0-32 Ethernet non funziona dopo aver ripreso dalla sospensione. Ho provato la correzione

modprobe -r r8169
modprobe -i r8169

ma questo non ha alcun effetto.

Ho segnalato questo a https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1752772


1
Questa non è davvero una risposta, a meno che tu non stia suggerendo di usare il kernel 4.13.
wjandrea,

0

Prima cosa da controllare: riavvia il gestore / servizio di rete:

sudo service riavvio del gestore di rete

Se non funziona, controlla le altre risposte in questo post


0

Dico che i diversi script di file Fix (modificati sulla mia scheda Ethernet) su /lib/systemd/system-sleep/ciascuno funziona!

Tuttavia, se il dispositivo modem via cavo viene spento dopo la sospensione e restituito dopo l'attivazione del sistema, il sistema basato su Ubuntu non può riconnettersi a Internet, nonostante l'icona di rete (nell'area di notifica) mostri la connessione attivata.

Per risolverlo di nuovo, devo fare clic sull'icona di rete »Connessione Ethernet. Pertanto, aggiorna la connessione correttamente. X-

Ethernet controller: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] 
    Subsystem: D-Link System Inc DFE-520TX Fast Ethernet PCI Adapter 
    Kernel driver in use: via-rhine
    Kernel modules: via_rhine

PS Sembra che alcuni CLI di vpn smettano di funzionare dopo essere tornati da Suspension.


0

Ho avuto gli stessi problemi con il mio Dell Inspiron 15: nessuna rete cablata dopo il riavvio o la sospensione.

Sembra che abbia risolto questo problema modificando un'impostazione nel BIOS:

Avanzato -> Tecnologia Intel (R) Smart Connect -> Disabilitato

(il valore predefinito è Abilitato)

Come effetto collaterale, la voce di menu è scomparsa, per apparire di nuovo dopo aver ripristinato tutte le impostazioni sui valori predefiniti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.