{{tag>Wifi sleep suspend hibernate hibernation mise_en_veille MT7630e}} ====== Wifi : Réactiver après une mise en veille ====== Après une mise en veille de l'ordinateur portable, on constate que le Wifi ne se réactive pas ! Horreur ! Seule solution : redémarrer la machine. C'est une mésaventure constatée avec la carte Wifi MT7630e sur un portable ASUS R511L. Tout ceci a été effectué sous LinuxMint 19.2, avec le noyau 5.0.0-27-generic. ===== Quelle est ma carte Wifi ? ===== La commande : lspci | grep Wireless retourne : 03:00.0 Network controller: MEDIATEK Corp. MT7630e 802.11bgn Wireless Network Adapter La carte en question est une MT7630e. ===== Quels sont les modules de la carte Wifi ? ===== Les modules (ou pilotes ou drivers) sont chargés de piloter la carte Wifi. La commande ''inxi -Fxz'' fait aussi le job, en couleurs. Installer ''lshw'' : apt install lshw Puis voyons les infos concernant le matériel réseau : sudo lshw -C network ... D'abord des infos sur la carte Ethernet qui ne nous intéressent pas ici ... Puis : *-network description: Interface réseau sans fil produit: MT7630e 802.11bgn Wireless Network Adapter fabriquant: MEDIATEK Corp. ... fonctionnalités: pm msi pciexpress bus_master cap_list ethernet physical wireless configuration: broadcast=yes driver=mt76x0e driverversion=5.0.0-25-generic firmware=1.0.07-b370 ip=192.168.0.72 latency=0 link=yes multicast=yes wireless=IEEE 802.11 ressources: irq:19 mémoire:9b100000-9b1fffff Dans la ligne ''configuration'', on voit : ''driver=mt76x0e''. Bingo ! On tente un : lsmod | grep mt76x0e qui nous retourne : mt76x0e 20480 0 mt76x0_common 45056 1 mt76x0e mt76x02_lib 61440 2 mt76x0e,mt76x0_common mt76 49152 3 mt76x0e,mt76x02_lib,mt76x0_common mac80211 815104 4 mt76,mt76x0e,mt76x02_lib,mt76x0_common Ce module a l'air d'avoir des cousins ! On essaye : lsmod | grep mt et on obtient : mt76xx 20480 0 mt76x0e 20480 0 mt76x0_common 45056 1 mt76x0e mt76x02_lib 61440 2 mt76x0e,mt76x0_common mt76 49152 3 mt76x0e,mt76x02_lib,mt76x0_common mac80211 815104 4 mt76,mt76x0e,mt76x02_lib,mt76x0_common cfg80211 675840 2 mt76x02_lib,mac80211 binfmt_misc 24576 1 Visiblement ''binfmt_misc'' n'a rien à voir. Mais les autres ? La suite coupe le Wifi ! Essayons de les enlever un à un, en commençant par le driver signalé : sudo modprobe -r mt76x0e lsmod | grep mt mt76xx 20480 0 binfmt_misc 24576 1 Ah ! Il en reste. On enlève aussi le module ''mt76xx'', et ça devient propre : sudo modprobe -r mt76xx lsmod | grep mt binfmt_misc 24576 1 ===== La commande qui relance le Wifi ! ===== D'après ce qui précède, la commande suivante devrait relancer le Wifi : sudo modprobe -r mt76x0e mt76xx && sudo modprobe mt76x0e mt76xx ===== Un lanceur sur le bureau de Cinnamon ===== Taper cette commande est pénible. En plus, il faut rentrer son mot de passe à cause des ''sudo''. Essayons de simplifier tout ça ! ==== Étape 1 : Un petit script ==== On va créer un script dans un dossier ''bin'' de notre "home" : cd mkdir -p bin cd bin touch wifi-wakeup xed wifi-wakeup Inscrivez les lignes suivantes dans le fichier wifi-wakeup qui vient de s'ouvrir, puis enregistrez-le et fermez l'éditeur xed. #!/bin/bash if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" exit 1 fi modprobe -r mt76x0e mt76xx && modprobe mt76x0e mt76xx Rendez ce script exécutable : chmod +x wifi-wakeup ==== Étape 2 : Plus de mot de passe ==== echo "%sudo ALL=NOPASSWD:/home/$USER/bin/wifi-wakeup" | sudo tee -a /etc/sudoers Au prochain démarrage de l'ordinateur, vous (et ceux du groupe sudo) n'aurez plus besoin de mot de passe pour exécuter ce script (et uniquement celui-là). ==== Étape 3 : Le lanceur ==== Clic droit sur le Bureau. Créer un nouveau lanceur. Mettez ce que vous voulez comme icône, comme nom et comme commentaire, mais la commande doit être : ''sudo bin/wifi-wakeup'' Redémarrez l'ordinateur. Testez votre lanceur. Le Wifi doit se couper puis se relancer au bout de quelques secondes. ===== Mieux ! Redémarrage automatique du Wifi ===== Créer le script ''/lib/systemd/system-sleep/wifi-wakeup'' (avec ''sudo nano /lib/systemd/system-sleep/wifi-wakeup'', sortir avec ctrl-x puis o ou y) contenant ceci : #!/bin/sh # Wake up the Wifi ! case $1/$2 in pre/*) modprobe -r mt76x0e mt76xx sleep 1 ;; post/*) modprobe mt76x0e mt76xx ;; esac Rendre ce script exécutable : sudo chmod a+x /lib/systemd/system-sleep/wifi-wakeup Redémarrer l'ordinateur. Après la prochaine mise en veille, le Wifi redémarrera tout seul ! {{counter|today| personne a visité cette page aujourd'hui| personnes ont visité cette page aujourd'hui}} et {{counter}} en tout.