{{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.