44 votes

Ubuntu 18.04 - Ethernet déconnecté après la mise en veille

L'Ethernet ne reprend pas après la mise en veille.

sudo service network-manager restart

ne fonctionne pas. Seul le redémarrage résout le problème.

57voto

Bug Magnet Points 1080

Le principal suivi des bugs Ubuntu concernant ce problème, au moins pour le module kernel réseau r8169, semble être :

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

J'encourage tout le monde qui est affecté par ce problème à s'y rendre et à indiquer que cela vous affecte, afin que les mainteneurs aient une meilleure idée de sa gravité.

Je suis en cours d'exécution d'une installation fraîche de Xubuntu 18.04, et mon interface Ethernet utilise le module kernel r8169, que j'ai découvert en exécutant :

sudo lshw -C network

Il y aura 2 groupes d'informations, l'un commençant par description: interface Ethernet, et un autre avec description: interface sans fil. Sous description: interface Ethernet, cherchez une ligne commençant par configuration:, comme ceci :

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

Le pilote se trouvera ici : driver=.

Systemd exécute tous les scripts exécutables sous /lib/systemd/system-sleep avant et après la suspension, en passant 2 paramètres, $1 est l'état (pre, avant la suspension, ou post, après la suspension), et $2 est l'action (suspend, hibernate, hybrid-state, ou suspend-then-hibernate). Cela est documenté dans la page de manuel de systemd-suspend.service.

Nous devons recharger le module pour l'interface Ethernet lors de la reprise de la suspension, après la suspension. J'ai donc créé le script /lib/systemd/system-sleep/r8169-refresh :

#!/bin/bash

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

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

log "Exécution de $action $state"

if [[ $state == post ]]; then
    modprobe -r r8169 \
    && log "Module r8169 retiré" \
    && modprobe -i r8169 \
    && log "Module r8169 inséré"
fi

et je l'ai rendu exécutable :

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

Les messages enregistrés depuis le script iront dans /var/log/syslog étiquetés avec le nom du script et son PID. De cette façon, vous pouvez vérifier si le script a rechargé le module kernel :

grep r8169-refresh /var/log/syslog

24voto

Diego Rivera Points 351

Voici une autre solution plus simple : créer un service systemd dont la seule tâche est de décharger/recharger le module après un cycle de suspension (je l'ai nommé /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

Ensuite, il suffit d'exécuter systemctl enable fix-r8169.service, et vous devriez être prêt !! Systemd déchargera et rechargera automatiquement votre module lors du réveil de la suspension.

Santé!

7voto

MAguest Points 71

Cela m'est aussi arrivé.

Décharger/recharger les modules/pilotes du noyau réseau fonctionne.

Le mien est r8169, donc (en tant que root) : (J'ai tapé à la main, il y avait un léger retard)

sudo modprobe -r r8169
sudo modprobe -i r8169

J'ai aussi supprimé mii lors de mon premier essai. Ce n'est pas nécessaire cependant.

6voto

Kostas Vekrakis Points 61

J'ai eu le même problème et j'ai trouvé cette solution.

  1. exécutez: sudo lshw -C network
    pour trouver le module de noyau de votre carte réseau

    Dans *-network, description: interface Ethernet, dans le champ de configuration j'ai trouvé
    driver=sky2 pour moi. sky2 est un module de noyau de réseau ethernet pour mon ordinateur portable.

  2. J'ai créé un fichier sky2.sh dans le dossier: /lib/systemd/system-sleep/ avec

    #!/bin/bash 
    modprobe -r sky2 # décharge le module de noyau sky2 
    modprobe -i sky2 # recharge le module de noyau sky2 

    et j'ai changé les permissions avec:

    sudo chmod a+x sky2.sh

Après cela, le problème était résolu.

2voto

Santhosh Veer Points 73

Il détecte la connexion Ethernet?

alors

ouvrir NetworkManager.conf

sudo nano /etc/NetworkManager/NetworkManager.conf

Commenter (ajouter #) le dns=dnsmasq

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

[ifupdown]
managed=true

Redémarrer le gestionnaire de réseau

sudo service network-manager restart

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X