[[linuxaddict:reparer:wifisleepmode]]

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.

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.

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

D'après ce qui précède, la commande suivante devrait relancer le Wifi :

sudo modprobe -r mt76x0e mt76xx && sudo modprobe mt76x0e mt76xx

Taper cette commande est pénible. En plus, il faut rentrer son mot de passe à cause des sudo.

Essayons de simplifier tout ça !

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
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à).

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.

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 !

1 personne a visité cette page aujourd'hui et 15 en tout.

  • linuxaddict/reparer/wifisleepmode.txt
  • Dernière modification: 02/09/2019, 21:06
  • par Claude Clerc