Je poste ici comme ayant des problèmes avec le wifi après la suspension.
J'ai récemment acheté une nouvelle carte wifi pcie (TP-LINK TL-WN881N), et tout fonctionne très bien. Malheureusement, il semble que les choses tournent mal lorsque je mets mon ordinateur en veille, car le wifi ne fonctionne pas correctement après le réveil.
En face, le problème est bizarre. Il se connecte au réseau wifi, la connexion est affichée dans nm-applet, la connexion semble bien fonctionner dans ifconfig, les itinéraires sont corrects, mais il semble que les pilotes obtiennent un mode buggy où je ne peux même pas cingler (ou atteindre de toute façon) ma passerelle ou tout autre endroit.
J'ai essayé différents correctifs, comme celui-ci le Wifi ne fonctionne pas après la suspension après la mise à jour du 16.04 ou ici le réseau sans fil ne fonctionne pas après la reprise dans Ubuntu 14.04 et aucun d'entre eux n'a fonctionné. Le plus étrange est que, si j'essaie de redémarrer manuellement le service de gestion de réseau, les problèmes ne sont pas résolus et que j'ai même des problèmes pour lister les réseaux wifi. Un redémarrage semble être le seul moyen de résoudre le problème jusqu'à présent.
Voici quelques détails sur ma carte et mon pilote:
$Sudo lshw -class network
*-network
description: Wireless interface
product: RTL8192EE PCIe Wireless Network Adapter
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:02:00.0
logical name: wlp2s0
version: 00
serial: 30:b4:9e:72:08:78
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=rtl8192ee driverversion=4.10.0-32-generic firmware=N/A ip=192.168.2.2 latency=0 link=yes multicast=yes wireless=IEEE 802.11
resources: irq:127 ioport:d000(size=256) memory:f7100000-f7103fff
Merci!
modifier:
Résolu! Merci @ WinEunuuchs2Unix, il semble qu’en appliquant une méthode similaire à celle décrite ici l’icône du signal WiFi bascule sur l’icône Ethernet (flèches vers le bas) après la suspension? , j’ai réussi à résoudre le problème.
Les conditions n'étaient pas exactement les mêmes et je devais adapter la solution. En gros, redémarrer network-manager ne résout pas le problème, mais décharger le rechargement du module du noyau a fonctionné! Alors voici comment j'ai adapté le script:
#!/bin/sh
# NAME: /lib/systemd/system-sleep/wifi-reset
# DESC: Resets Realtek WiFi after a long suspend.
# DATE: Aug 25, 2017. Modified Aug 25, 2017.
MYNAME=$0
DRIVER=rtl8192ee
restart_wifi() {
/usr/bin/logger $MYNAME 'restart_wifi BEGIN'
/sbin/modprobe -v -r $DRIVER # This removes the driver
/sbin/modprobe -v $DRIVER # This starts the driver
#systemctl restart NetworkManager.service # network manager restart disabled as not needed
/usr/bin/logger $MYNAME 'restart_wifi END'
}
/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
hibernate|suspend|pre*)
;;
resume|thaw|post*)
restart_wifi;;
esac
Cela fonctionne parfaitement maintenant :)
Merci les gars!
Résolu! Merci @ WinEunuuchs2Unix, il semble qu’en appliquant une méthode similaire à celle décrite ici l’icône du signal WiFi bascule sur l’icône Ethernet (flèches vers le bas) après la suspension? , j’ai réussi à résoudre le problème.
Les conditions n'étaient pas exactement les mêmes et je devais adapter la solution. En gros, redémarrer network-manager ne résout pas le problème, mais décharger le rechargement du module du noyau a fonctionné! Alors voici comment j'ai adapté le script:
#!/bin/sh
# NAME: /lib/systemd/system-sleep/wifi-reset
# DESC: Resets Realtek WiFi after a long suspend.
# DATE: Aug 25, 2017. Modified Aug 25, 2017.
MYNAME=$0
DRIVER=rtl8192ee
restart_wifi() {
/usr/bin/logger $MYNAME 'restart_wifi BEGIN'
/sbin/modprobe -v -r $DRIVER # This removes the driver
/sbin/modprobe -v $DRIVER # This starts the driver
#systemctl restart NetworkManager.service # network manager restart disabled as not needed
/usr/bin/logger $MYNAME 'restart_wifi END'
}
/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
hibernate|suspend|pre*)
;;
resume|thaw|post*)
restart_wifi;;
esac
Cela fonctionne parfaitement maintenant :)
Merci les gars!
J'ai eu un problème similaire, mais avec quelques différences cependant.
Mon ordinateur portable est un Lenovo ThinkPad T470 exécutant Ubuntu 16.04.4 LTS (xenial).
Après avoir suspendu et repris le comportement, j’ai eu le comportement suivant:
Le redémarrage du gestionnaire de réseau (Sudo systemctl restart network-manager.service
) ne résoudrait pas le problème. L'arrêter, attendre un certain temps et le redémarrer ne le corrigerait pas non plus.
Pour réparer manuellement, je devais:
déterminer mon pilote wifi:
$ Sudo lshw -C network
*-network
description: Wireless interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:3a:00.0
logical name: wlp58s0
version: 78
serial: 00:e1:8c:dc:8c:7d
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=iwlwifi driverversion=4.13.0-43-generic firmware=31.560484.0 ip=192.168.0.9 latency=0 link=yes multicast=yes wireless=IEEE 802.11
resources: irq:128 memory:ec100000-ec101fff
redémarrer le pilote:
$ Sudo /sbin/modprobe -r iwlwifi
$ Sudo /sbin/modprobe iwlwifi
Pour redémarrer automatiquement le pilote après la reprise du système, j’ai fait quelque chose de similaire à
l’icône du signal WiFi bascule sur l’icône Ethernet (flèches vers le bas) après la suspension?
c'est-à-dire que j'ai créé le script suivant iwlwifi-reset
dans /lib/systemd/system-sleep/
et que je l'ai rendu exécutable.
#!/bin/sh
# NAME: /lib/systemd/system-sleep/iwlwifi-reset
# DESC: Resets Intel WiFi after suspend.
# DATE: Jun 3, 2018.
MYNAME=$0
restart_wifi() {
/usr/bin/logger $MYNAME 'restart_wifi BEGIN'
/sbin/modprobe -r iwlwifi
/sbin/modprobe iwlwifi
/usr/bin/logger $MYNAME 'restart_wifi END'
}
/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
hibernate|suspend|pre*)
;;
resume|thaw|post*)
restart_wifi;;
esac
Dans Ubuntu 18.04, pour que le script soit appelé lors de la reprise du système, je devais suivre les étapes supplémentaires suivantes (j'utilise un ancien adaptateur Wi-Fi USB Edimax et j'ai donc appelé /lib/systemd/system-sleep/
= script edimax_wifi_wakeup
):
Sudo vi /etc/systemd/system/sleep-resume.service
Son contenu:
_[Unit]
Description=Edimax USB WiFi system suspend/resume handling
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=-/lib/systemd/system-sleep/edimax_wifi_wakeup suspend
ExecStop=-/lib/systemd/system-sleep/edimax_wifi_wakeup resume
[Install]
WantedBy=sleep.target
_
Activer le service par Sudo systemctl enable sleep-resume