web-dev-qa-db-fra.com

(Encore un autre) problème de Wifi après la suspension dans Ubuntu 16.04

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!

2
termux

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!

3
termux

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 gestionnaire de réseau redémarrera et la liste des réseaux wifi sera correcte,
  • le fait que le PC ait été suspendu pour une courte ou longue durée ne ferait aucune différence,
  • il serait en fait reconnecter au wifi après la reprise,
  • Je pourrais avec succès cingler les PC sur le LAN,
  • Je ne pouvais rien cingler en dehors du réseau local et je ne pouvais pas me connecter à Internet.
  • (très étrange) après avoir redémarré le lecteur manuellement une fois (voir le correctif ci-dessous), ce problème aurait disparu. Je pourrais suspendre et reprendre et le wifi fonctionnerait sans avoir à redémarrer le pilote une seconde fois. Afin de reproduire le problème, j'ai dû redémarrer et suspendre à nouveau.

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.

Correction manuelle

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
    

Correction automatique

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
0
jfs

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):

  • Créez un fichier "service": 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

0
RJP