Activer le Wake-on-WiFi (WoWLAN) sous Linux

Cet article est fortement inspiré de ce billet de nixCraft, qui explique comment activer le Wake-on-LAN mais via la carte WiFi (ou Wake-on-WLAN) sous Linux.

Le Wake-on-LAN c’est quoi ?

Le terme anglais est assez explicite de lui-même, cela permet de réveiller un ordinateur (PC fixe, portables, serveurs, etc) via le réseau.

Le fonctionnement est simple : la carte réseau reste active même lorsque le PC est éteint, lorsque plusieurs paquets particuliers (nommés magic-paquet) sont reçus, cela déclenche un réveil de la machine (sortie veille ou allumage). Cela fonctionne quel que soit le système d’exploitation et il faut simplement être sur le même réseau (donc non, vous ne pouvez pas réveiller la machine de votre voisin avec cette technique).

La commande pour initier le réveil via Linux est wakeonlan et l’utilisation est très simple :

wakeonlan 40:16:7E:6E:70:D3

Le 40:16:7E:6E:70:D3 correspond à l’adresse MAC de la carte réseau.

Et le Wake-on-WiFi (ou WoWLAN) ?

C’est le même principe mais via le WiFi et ce n’est pas activé par défaut.

Et contrairement au réseau filaire, où la carte n’est que dans un état passif, ici la carte doit rester connectée au point d’accès et toutes les cartes ne sont pas compatibles avec ce fonctionnement (et cela consomme aussi de facto plus d’énergie).

Identifier la carte WiFi

Dans un premier temps, il faut identifier la carte physique qui gère le WiFi. Pour ce faire, on utilise la commande iw dev :

# iw dev
phy#2
        Interface wlan0
                ifindex 85
                wdev 0x200000001
                addr ac:72:89:c8:8e:3f
                type managed
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
                txpower 15.00 dBm

Ici, on obtient le nom physique de l’interface, phy2.

Vérifier l’état de la carte

Ensuite, on va vérifier l’état de la carte avec la commande ci-dessous :

# iw phy2 wowlan show
WoWLAN is disabled.

Si votre carte ne supporte pas cette fonctionalité, vous obtiendrez le message suivant :

# iw phy0 wowlan show
command failed: Operation not supported (-95)

Activation

La commande à utiliser est du style iw phy2 wowlan enable [mode]. Je ne vais pas rentrer dans le détail des différents modes possibles, voici la liste et une explication succinte :

  • any réveil sur n’importe quelle activité ;
  • disconnect réveille le PC sur une déconnexion (perte du WiFi) ;
  • magic-packet active sur la réception d’un paquet magique ;
  • gtk-rekey-failure en cas d’un échec du renouvellement des GTK (clefs de chiffrement temporaire) ;
  • eap-identity-request sur une demande d’identité EAP ;
  • 4way-handshake lors d’une session d’échange de clefs ;
  • rfkill-release réveille lorsque RF-Kill est libéré ;
  • net-detect sur une détection d’un réseau ;
  • tcp réveille sur une connexion TCP ;
  • patterns lors de la réception d’un pattern particulier.

Pour activer certains modes sur ma carte WiFi, je vais utiliser la commande suivante :

# iw phy2 wowlan enable disconnect magic-packet gtk-rekey-failure rfkill-release eap-identity-request

Ensuite, la commande show donne l’état des modes actifs :

# iw phy2 wowlan show
WoWLAN is enabled:
 * wake up on disconnect
 * wake up on magic packet
 * wake up on GTK rekeying failure
 * wake up on EAP identity request
 * wake up on RF-kill release

Il ne reste plus qu’à tester.

Tester le fonctionnement

Il suffit de placer votre PC en veille (RAM) et d’envoyer, par exemple, le paquet magique avec la commande wakeonlan.

Vous pouvez utiliser la commande suivante pour placer votre PC en veille.

# sh -c 'echo mem > /sys/power/state'

Puis envoyer le paquet magique depuis une autre machine :

# wakeonlan ac:72:89:c8:8e:3f

Si votre PC sort de veille, alors cela fonctionne, sinon il est possible que votre carte ne supporte le fonctionnement qu’à moitié.

 

Haut de page