12 Apr 2025, 00:00

Activation du Wake-On-Lan

Share

Le but est d’activer le Wake-on-Lan.
Testé sur un Dell Optiplex 3050 et une ASUS STRIX X570-F GAMING.

https://www.dell.com/support/kbdoc/en-uk/000129137/wake-on-lan-wol-troubleshooting-best-practices

Il faut bien sûr que le matériel supporte le WoL. C’est le cas de l’Optiplex 3050.
Il est nécessaire de paramétrer le BIOS, mais également le pilote sous l’OS que l’on utilise, car il va déterminer le comportement de la carte réseau à l’extinction de l’OS.

Attention, il arrive qu’un chip réseau supporte le WoL, et rapporte :

Supports Wake-on: pumbg
Wake-on: g

mais que la carte (implémentation vendeur) n’en soit en réalité pas capable !

De mon expérience, le paramétrage du WoL sur une carte fille PCIe est moins stable que sur la carte réseau intégrée à la carte-mère/chipset.

Paramétrage BIOS

Dell Optiplex 3050

J’ai commencé par faire une mise à jour du BIOS vers la version la plus récente, pour limiter les risques de bug logiciel du BIOS.
Vérifier les paramètres suivants :

  • System configuration -> Integrated NIC -> Enabled
  • Power Management -> Wake on LAN/WLAN -> Lan Only (ou autre réglage qui active sur le WoL sur le LAN)
  • Power Management -> Deep Sleep control -> Disabled

À ce stade, normalement le WoL est actif. Il se voit par l’allumage d’une des 2 LEDs de la carte réseau.
On peut “réinitialiser” le statut WoL en débranchant électriquement le poste puis en le rebranchant. Il devrait s’allumer un court instant, puis s’éteindre, mais la LED du NIC doit rester allumée.

STRIX X570-F GAMING

Advanced -> APM Config -> Power On By PCI-E
Advanced -> Network Stack -> Enabled + IPv4 PXE Support : Enabled

Paramétrage Debian

Lorsqu’on éteint le poste via la commande sudo poweroff, la carte réseau s’éteint complètement, car l’OS peut contrôler son comportement à l’extinction.
Il faut donc lui dire de maintenir la carte en fonctionnement.

On commence par installer ethtool, qui permet de voir/gérer l’état des cartes réseau :
apt install ethtool

On définit la carte à gérer :
iface=ethX

et on peut consulter une carte avec :
sudo ethtool $iface ou
sudo ethtool $iface | grep -i Wake-on

et on a notamment les lignes :

Supports Wake-on: pumbg
Wake-on: d

Chaque lettre a une signification, trouvable dans man ethtool, et qui sont :

p   Wake on PHY activity
u   Wake on unicast messages
m   Wake on multicast messages
b   Wake on broadcast messages
a   Wake on ARP
g   Wake on MagicPacket™
s   Enable SecureOn™ password for MagicPacket™
f   Wake on filter(s)
d   Disable  (wake on nothing).  This option clears all previous options.

Le WoL implémenté généralement est le “MagicPacket™”, il faut donc avoir que la carte supporte “g”.

L’état “Wake-on” correspond à l’état actuel ; on voit ici qu’il est désactivé, donc si j’éteins le poste, la carte-réseau n’aura aucune LED allumée et il sera impossible de le rallmuer via WoL.
À ce stade, le WoL restera désactivé même si on va dans le bios, qu’on sauvegarde, qu’on ré-éteint le poste.
Il est nécessaire de débrancher/rebrancher électriquement le poste pour que le WoL recommence à fonctionner.

Pour activer le WoL, il faut entrer cette commande :
sudo ethtool -s $iface wol g

dont la réussite se voit dans la sortie de :
sudo ethtool $iface | grep -i Wake-on

Si on éteint le poste, le WoL restera activé.
Mais au prochain boot, le status WoL sera à nouveau défini sur d !

Il faut donc l’activer à chaque démarrage.
Des infos ici : https://wiki.debian.org/fr/WakeOnLan

Je passe par la méthode de création d’un service systemd : On peut créer le fichier de définition du service avec cette commande, à lancer en root :

if [ -z "$iface" ] ; then echo -e '\nIl faut définir la variable $iface !\n' ; else echo "[Unit]
Description=Configure Wake-up on LAN

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s $iface wol g

[Install]
WantedBy=basic.target" > /etc/systemd/system/wol.service ; fi

On active le service au démarrage, ainsi qu’immédiatement, et on recharge le démon systemd :

sudo systemctl enable wol
sudo systemctl start wol
sudo systemctl daemon-reload

On doit normalement avoir “g” sur le paramètre “Wake-on” à chaque démarrage, et donc pouvoir éteindre le poste via poweroff en maintenant le status WoL actif.

Paramétrage Windows

https://www.dell.com/support/kbdoc/en-uk/000129137/wake-on-lan-wol-troubleshooting-best-practices

Gestionnaire de périph, aller dans les propriétés du NIC -> Power Management ->
Allow this device to wake the computer : coché
Only allow a magic packet to wake the computer : non coché

radvanced tab
Energy-Efficient Ethernet -> Disabled (pas indispensable ? )
Enable PME : Enabled

Obligatoire : Désactiver fastboot
Panneau de conf -> Options d’alimentation -> Choisir actions boutons -> Désactiver démarrage rapide
Ou bien powercfg -h off qui rend impossible le démarrage rapide.

Autres actions qui peuvent être nécessaires ?

Allumage à distance

On note l’adresse mac de la cible à réveiller :
distantmacaddr=00:11:22:33:44:55

Sous Debian il y a au moins 2 outils pour réveiller un poste via WoL :
sudo apt install etherwake wakeonlan

On peut utiliser etherwake, qui nécessite les droits root et de préciser explicitement l’interface qui envoie le paquet magique :
sudo etherwake -i ethX $distantmacaddr

ou bien wakeonlan :
wakeonlan $distantmacaddr

Consommation électrique

Sur l’Optiplex 3050, je constate environ 0.9W lorsque le poste est éteint avec WoL activé.

En phase de BIOS/démarrage, je constate environ 20W, et lorsque Debian est lancé mais sans aucune activité, je constate environ 9W.

En lançant quelques processus un peu gourmands en CPU/RAM/disque (mais sans être un test intensif non plus), je monte à 40W.