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é.
1 De Clément -
Bonjour et merci pour le tuto.
Je ne sais pas si le wowlan marche complètement chez vous. Mais ce que je remarque de mon côté c'est que sur ma machine, chaque power-off désactive automatiquement mon wowlan.
Par exemple je tape :
# iw phy2 wowlan show
WoWLAN is enabled:
* wake up on magic packet
Et que je redémarre mon ordinateur j'obtiens :
# iw phy2 wowlan show
WoWLAN is disabled.
De ce fait si je redémarre mon ordinateur je dois ré-activer manuellement le wowlan en appliquant la procédure que vous expliquez sur votre blog.
Ce qui a pour conséquence que je peux sortir ma machine de la veille, avec un magic-packet, parce que le mode veille ne désactive pas le wowlan, mais que je ne peux pas démarrer ma machine avec votre wowlan, c'est à dire faire un boot avec le wowlan, car le power-off me désactive automatiquement le wowlan.
Avez vous rencontré ce genre de problème ?
Merci
Cdt
Clément
2 De APLU -
Clément,
Désolé pour la réponse plus que tardive, je dois admetre ne pas avoir utiliser le wowlan depuis l’écriture du billet.. donc en fait non je n’ai pas ce genre de problème parce que je n'utilise pas (plus) le wowlan.
Par contre j'utilise le wolan (ethernet), et sur certaines cartes/config je suis obligé de remettre le mode wake actif après chaque boot avec la commande "ethtool -s wol g" après chaque démarrage (j’ai fais par un script executé au boot de la machine).
Aymeric