Wake on LAN
Dieser Artikel gilt größtenteils unabhängig von der Ubuntu-Version.
Dieser Artikel wurde für die Ubuntu-Version Noble Numbat getestet. Es wird erwartet, dass er wesentlich auch auf nachfolgende Versionen anwendbar ist. Bitte melde abweichendes Verhalten in der Diskussion zu diesem Artikel.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Wake-on-LAN (WoL) weckt einen schlafenden Rechner ferngesteuert auf; dies ist möglich im lokalen Netzwerk (LAN) und – mit erhöhtem Aufwand – auch über das Internet. Dazu muss man von einem zweiten Rechner (i.w. der „Wecker“) eine spezielle Nachricht an den schlafenden Rechner (i.w. der „Schläfer“) schicken. Historisch bedingt gibt es mehrere Verfahren, die sich u.a. im Aufbau und den Eigenschaften der Wecknachricht unterscheiden. Dieser Artikel fokussiert sich auf die heute meistens verwendete Methode mittels Versenden eines sogenannten "Magic Packet" gemäß einer technischen Publikation der Firmen AMD und HP.
Bei manchen Rechnern, deren Hersteller das in der Firmware explizit zulassen, funktioniert auch das Aufwecken per "Magic Packet", wenn der Rechner fast völlig ausgeschaltet wurde und sich im Soft-Off (ACPI-Zustand S5) unter Spannung befindet.
Zum Aufwecken gebraucht man auf dem Wecker ein Programm, das ein "Magic Packet" erzeugt und an eine Ethernet-Adresse des Netzwerkadapters des Schläfers schickt. Einige handelsüblichen Router (z.B. Fritzbox) beherrschen diese Funktion, man kann auch ein Smartphone mit einer geeigneten APP dafür verwenden oder einen Laptop mit Ubuntu usw.
Funktionsweise¶
Hinweis:
WoL ist eine Hardware-Technik, einen schlafenden (Standby, ACPI S3, S4) oder fast völlig ausgeschalteten Rechner (Soft-Off, ACPI S5) per Ethernet einzuschalten.
Das funktioniert nicht bei einem elektrisch vollständig ausgeschaltetem Rechner.
Man sollte auch nicht erwarten, dass es über WLAN funktioniert. In vielen Fällen, dazu muss u.a. der Hersteller des WLAN-Adapters das explizit vorsehen, funktioniert aber das Aufwecken per WLAN (Wake-on-Wireless-LAN) mit Einschränkungen, z.B. zwar aus Standby oder Bereitschaft, aber nicht aus dem Ruhezustand oder Soft-Off.
Beim Herunterfahren aus dem normalen Betriebszustand in einen Schlafmodus versetzt der für den Ethernet-Adapter zuständige Treiber (ein Modul des Kernels) die Hardware in den sogenannten WoL-Modus und verhindert das elektrische Ausschalten dieser Komponente. Während des Energiesparmodus arbeitet der Ethernet-Adapter weiter und prüft ständig bei ihm eintreffende Ethernet-Pakete:
Das Paket muss an eine seiner Ethernet-Adressen adressiert sein, sonst erreicht es den Adapter gar nicht. Zulässig sind die eine momentan für ihn konfigurierte Unicast-Adresse ("MAC-Adresse") und jede momentan für ihn konfigurierte Multicast-Adresse, darunter auch immer die Broadcast-Adresse
FF:FF:FF:FF:FF:FF.Das Paket muss eine Signatur von 102 Byte Länge enthalten, und zwar nach einer Einleitung von 6 Bytes
FFzur Synchronisierung 16-mal wiederholt die 6 Bytes seiner MAC-Adresse. Es hängt vom Hersteller ab, ob dies die momentan konfigurierte MAC-Adresse oder die permanente EUI-48-Kennung ist.
Wenn ein solches Paket, das darüber hinaus noch beliebigen weiteren Inhalt (wie z.B. IP- und UDP-Header) enthalten darf, erkannt wird, dann bricht der Ethernet-Adapter den WoL-Modus ab und sendet ein Signal an die CPU, welches diese und dann in Folge den Rechner aufweckt.
Damit WoL funktioniert, muss der Schläfer dafür vorbereitet werden. Sowohl in der Firmware des Rechners als auch im Betriebssystem müssen Einstellungen vorgenommen werden. Der Wecker benötigt lediglich ein Programm zur Erstellung und Versendung eines "Magic Packet".
Schläfer einrichten¶
Hardware¶
WoL ist eine Fähigkeit der Hardware, deren Beherrschung bei allen aktuellen (Stand 2025) Geräten vorausgesetzt werden darf, auch wenn die Geräte nicht explizit damit beworben werden. Konkret:
Der Hersteller muss WoL beim Design der Hauptplatine (Motherboard) des Rechners und des Ethernet-Adapters berücksichtigen.
Zwischen CPU und Ethernet-Adapter muss es auch im Energiesparmodus einen Kommunikationsweg geben; dies wurde ursprünglich realisiert mittels einer extra gesteckten 3-adrigen Verbindung, beim parallelen PCI-Bus ab Version 2.2 über einen dedizierten Pin und beim heute üblichen seriellen PCIe-System gehört es zum Design.
Firmware¶
WoL ist bei Auslieferung des Rechners oft in der Firmware gesperrt und muss erst freigeschaltet werden. Dazu startet man den Rechner neu und wechselt durch wiederholte Betätigung der in der Dokumentation des Rechners dafür genannten Taste in das Setup-Menü der Firmware. Die in Rechnern verbauten BIOS-Arten sind zu vielfältig, um detaillierte Tipps geben zu können. Doch unter den Bezeichnungen "Wake on LAN" oder "Power on PCI/PCIe Devices" sollte man fündig werden.
Ein Rechner mit aktiviertem WoL verbraucht Energie und muss daher normalerweise an das Stromversorgungsnetz angeschlossen sein. Das gilt auch für Laptops und andere Geräte mit Akku. Bei einem Gerät mit Akku ist ggf. einzustellen, dass WoL auch beim Betrieb aus dem Akku aktiv sein soll.
Eine möglicherweise vorhandene weitere wichtige Einstellung ist "ErP". Die Abkürzung steht für "Energy related Products" und bezieht sich auf eine EU-Vorgabe bzgl. des erlaubten Energieverbrauchs im Standby. Ein nach dieser Vorgabe konformes Gerät darf im Standby maximal 1 W verbrauchen. Ein Netzwerkadapter im WoL-Modus verbraucht mehr, daher muss man ErP ausschalten, wenn man WoL einsetzen möchte.
Betriebssystem¶
WoL muss nicht nur in der Hardware implementiert und in der Firmware freigeschaltet, sondern zusätzlich auch noch irgendwann zeitlich vor dem Herunterfahren aktiviert werden. Bei Ubuntu übernimmt der Treiber (ein Kernel Modul) des Ethernet-Adapters diese Aktivierung üblicherweise beim Start, und die meisten Treiber machen es auch bereits gemäß ihrer Voreinstellung.
Tests¶
Ob WoL seitens Hard- und Firmware möglich ist, kontrolliert man mit diesen Befehlen[3]:
lspci -nn | grep -e Ethernet -e PCI
Beispielausgabe:
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection I218-LM [8086:155a] (rev 04) 00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series PCI Express Root Port 1 [8086:9c10] (rev e4) 00:1c.3 PCI bridge [0604]: Intel Corporation 8 Series PCI Express Root Port 4 [8086:9c16] (rev e4) 00:1c.5 PCI bridge [0604]: Intel Corporation 8 Series PCI Express Root Port 6 [8086:9c1a] (rev e4) 03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader [10ec:5227] (rev 01)
grep enabled /proc/acpi/wakeup
Beispielausgabe:
LANC S5 *enabled pci:0000:00:19.0 EHC1 S3 *enabled pci:0000:00:1d.0 XHC S3 *enabled pci:0000:00:14.0 RP04 S5 *enabled pci:0000:00:1c.3
Der zum Aufwecken vorgesehene Ethernet-Adapter aus der ersten Ausgabe muss in der zweiten Ausgabe enthalten sein, dies ist im Beispiel der Fall, und für jede "PCI bridge" aus der ersten Liste sollte das auch gelten, dies trifft im Beispiel jedoch nur für eine "PCI bridge" zu. Dies kann sowohl richtig sein (die Hardware kennt ja ihre Verdrahtung), aber auch Ursache für ein Versagen von WoL sein.
Wenn man Wake-on-Wireless-LAN verwenden will: WLAN-Adapter werden in der Regel über USB an das System angebunden. Man muss also darauf achten, dass USB im Schlaf noch versorgt wird, dazu gehören insbesondere auch die USB-Hubs als PCI-Geräte.
Hinweis:
Dieser Artikel verwendet für die Netzwerkschnittstelle stets beispielhaft den Namen eth0. Dies muss in allen Befehlen natürlich entsprechend angepasst werden.
Eine Liste der vorhandenen Adapter zeigt der Befehl:
ip link
Ebenso beispielhaft zu verstehen und anzupassen sind:
Unicast MAC-Adresse bzw. EUI-48-Kennung
f4:30:b9:c9:a9:e4für den Rechner
Brunhildemit der Unicast IP-Adresse
192.168.178.20
Mit dem Programm ethtool können die Parameter und Einstellungen von Netzwerkkarten ausgelesen und verändert werden. Zur Kontrolle, ob auf dem eigenen System WoL aktiviert wurde, benutzt man den Befehl[3]:
sudo ethtool eth | grep -i wake
Beispielausgabe:
Supports Wake-on: pumbg Wake-on: g
Die Bedeutung der einzelnen Buchstaben findet man im Artikel zu ethtool: ethtool (Abschnitt „Wake-On-Lan“)
Wenn die Ausgabe hinter
"Supports Wake-on"den Buchstabengnicht enthält, dann unterstützt die Hardware WoL mit "Magic Packet" nicht, und das ist auch nicht durch Konfiguration zu ändern.Wenn man bei obigem Test die Ausgabe
"Wake-on: g"erhält, muss man bezüglich des Treibers für Ethernet-Adapter nichts weiter unternehmen, man kann aber vorsorglich diese erwünschte Einstellung auch in den Konfigurationsdateien für das Netzwerk hinterlegen.Wenn hinter
"Wake-on"andere Buchstaben alsgstehen sollten, sollte man das durch eigene Konfiguration ändern.
WoL aktivieren¶
Es gibt mehrere Wege, um WoL bei jedem Start des Schläfers zu automatisch aktivieren:
Bevorzugt sollte der Treiber für den Ethernet-Adapter das per Vorgabe machen.
Manche Treiber, vorwiegend für sehr alte Hardware, machen es von sich aus nicht, können aber über eine Option beim Start dazu veranlasst werden. ▶ Problemlösungen
Bei Desktops und bei Servern kann es udev übernehmen.
Das Konfigurationsprogramm NetworkManager bei Desktops kann bei der Konfiguration des Netzwerks den Treiber zur Aktivierung von WoL veranlassen.
Man kann mit
ethtoolWoL manuell aktivieren, oder die entsprechende Anweisung in ein beim Start aufgerufenes Skript oder eine Unit für systemd verpacken.
Aktivierung per NetworkManager¶
Im Verbindungsprofil für Ethernet kann man Vorgaben für WoL hinterlegen, das ist mit nm-connection-editor auch mit graphischer Oberfläche möglich.
Diese Einstellungen werden bei der Aktivierung der Verbindung aktiv. Wenn man wechselweise mehrere Verbindungsprofile benutzt, muss man in jedem diese Einstellungen vornehmen.
Aktivierung per udev¶
Einstellungen für das Netzwerk per udev konfiguriert man über Dateien im Ordner /etc/systemd/network/ mit Suffix .link. Man erstellt dort z.B eine Datei 20-wol.link mit einem Editor mit Root-Rechten[4][5], beispielhafter Inhalt:
[Match] PermanentMACAddress = f4:30:b9:c9:a9:e4 [Link] … Zeilen aus 99-default.link übernehmen … WakeOnLan = magic
Dazu kopiert man aus der Datei /usr/lib/systemd/network/99-default.link den kompletten Abschnitt [Link] in die neue Datei und ergänzt den Abschnitt um die Angabe für WakeOnLan. Den Abschnitt [Match] erstellt man neu und sorgt dafür, dass der gemeinte Netzwerkadapter die Tests besteht; gut geeignet dafür ist die EUI-48-Kennung (Beispiel) des Netzwerkadapters.
Nach einem Neustart des Schläfers kontrolliert man, ob die Datei benutzt wird. Die Ausgabe des Befehls
networkctl status eth0 | grep 'Link File'
muss die angelegte Datei zeigen:
Link File: /etc/systemd/network/20-wol.link
Dies ist eine Einstellung für den Adapter. Man kann sie auch zusammen mit dem NetworkManager einsetzen, muss dann aber sicherstellen, dass dieser die Aktivierung durch udev nicht überschreibt.
Details siehe Artikel systemd-networkd, der auch den Netzwerkteil von udev behandelt.
WoL manuell aktivieren¶
Mittels des Befehls (hier beispielhaft: eth0)
sudo ethtool -s eth0 wol g
aktiviert man Wake-on-LAN beim Eintreffen eines "Magic Packet". Details siehe: ethtool
Allerdings überdauert diese Einstellung einen Neustart des Rechners nicht. Sie muss bei jedem Start des Rechners z.B. wie im folgenden Abschnitt erneut gesetzt werden.
Unit für systemd¶
Mit einer Konfigurationsdatei /etc/systemd/system/wol.service für eine Unit wird der Befehl mit ethtool beim Start automatisch ausgeführt. Man trägt mit einem Editor mit Root-Rechten[4][5]] ein: (hier beispielhaft: eth0)
[Unit] Description=Activate Wake-on-LAN with Magic Packet After=network-online.target [Service] Type=oneshot ExecStart=/sbin/ethtool -s eth0 wol g [Install] WantedBy=basic.target
Anschließend wird die Unit mit
sudo systemctl enable wol.service
für den automatischen Start beim Systemstart markiert.
Weitere Informationen finden sich im entsprechenden Wiki Artikel zu systemd.
Server¶
Das Aufwecken eines Rechner aus der Ferne ist nur sinnvoll, wenn man anschließend aus der Ferne mit dem Schläfer arbeiten will und kann. Dazu muss also auf dem Schläfer ein Server erreichbar sein. In diesem Artikel wird ein SSH-Server auf Port 22/TCP beispielhaft angenommen, da dieser leicht einzurichten ist und sich auch zum Testen gut eignet.
Wecker einrichten¶
Hinweis:
Das Aufwecken eines Rechners funktioniert am besten innerhalb des eigenen lokalen Netzwerkes.
Wenn das "Magic Packet" über einen Router oder sogar über das Internet laufen muss, erfordert dies zusätzliche Einstellungen auf den Routern oder einem aus dem Internet erreichbaren Rechner im LAN den Schläfers. Manche Hardware-Router bieten in ihren Web-Frontends Wake-on-LAN-Funktionen an.
MAC-Adresse¶
Zum Aufwecken muss man die MAC-Adresse des Schläfers kennen. Man findet sie beispielsweise auf der Netzwerkkarte oder eventuell auf der Rückseite des Rechners. Alternativ kann man sie auf dem Schläfer über den Befehl (hier beispielhaft: eth0)
ip link show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether 02:00:00:22:d0:22 brd ff:ff:ff:ff:ff:ff permaddr f4:30:b9:c9:a9:e4herausfinden. Die permanente MAC-Adresse (bzw. EUI-48-Knnung) wäre in diesem Fall die Zeichenfolge f4:30:b9:c9:a9:e4 und die momentan gültige 02:00:00:22:d0:22. Bei einer Ausgabe ohne permaddr sind die beiden identisch.
Schläfer-Adresse¶
Man kann beim Senden einer Nachricht selber nicht direkt die Ethernet-Adresse vorgeben, da diese vom Netzwerksystem aus der IP-Adresse ermittelt wird. Man benötigt daher eine IP-Adresse, über die der Wecker den Schläfer erreichen kann. Man muss eine Adresse auswählen, die ohne Mitwirkung des Schläfers in eine Ethernet-Adresse des Schläfers übersetzt werden kann:
Wenn Wecker und Schläfer sich im selben Link befinden, kann man
255.255.255.255(limited broadcast) wählen, die immer in die Ethernet-AdresseFF:FF:FF:FF:FF:FFübersetzt wird. Damit kommt man aber nicht immer aus dem Wifi-Teil eines Netzwerks in den Ethernet-Teil; wenn es doch funktioniert, dann arbeitet der Router nicht spezifikationsgerecht.Wenn Wecker und Schläfer sich im selben logischen Netzwerk (z.B.
192.168.178/24) befinden, kann man den die IP-Adresse "directed broadcast" (i.d.F.192.168.178.255) benutzen, die ebenfalls immer inFF:FF:FF:FF:FF:FFübersetzt wird.
Ebenfalls gut oder noch besser geeignet ist die Multicast-Adresse "all hosts on this network"224.0.0.1, da man annehmen darf, dass diese Adresse immer zugewiesen wurde und ein Senden an diese Adresse nicht eingeschränkt ist. Diese IPv4-Adresse wird immer in die Ethernet-Adresse01:00:5e:00:00:01übersetzt.
Ebenso kann man die entsprechende IPv6-Adresseff02::1verwenden, die immer in die Ethernet-Adresse33:33:00:00:00:01übersetzt wird.Man kann andere Multicast-IP-Adressen verwenden, die man selbst einrichtet. Dann müssen sowohl Schläfer wie Wecker dieser Gruppe beitreten und man muss dafür sorgen, dass alle Router zwischen den beiden als Multicast-Router arbeiten – das kann man oft nicht erfüllen.
Grundsätzlich schlecht geeignet sind Unicast-IP-Adressen, da diese zur Übersetzung in Ethernet-Adressen per Netzwerk-Protokoll ARP (bei IPv4) oder NDP (bei IPv6) verwenden und damit der Mithilfe des Schläfers bedürfen. Der Schläfer wird aber nicht helfen, weil er ja schläft. Wenn man eine Unicast-IP-Adresse einsetzen möchte, muss man die dazu gehörige Ethernet-Adresse statisch in den Routing-Regeln des Weckers bzw. des letzten Routers vor dem Schläfer hinterlegen.
Wenn Wecker und Schläfer sich in unterschiedlichen Netzwerken befinden und nur über Router kommunizieren können, dann sind neben dem nicht immer benutzbaren Multicast nur Unicast-IP-Adressen möglich, die aber nach vorstehendem Punkt für ein "Magic Packet" nicht funktionieren. Zur Abhilfe kann man …
… entweder den Router durch spezielle Konfiguration in dessen Netzwerksystem so ertüchtigen, dass er ein empfangenes und ausgepacktes "Magic Packet" richtig neu verpackt und weiterleitet (was nicht bei allen Geräten möglich ist),
oder ein VPN verwenden, dem Wecker und Schläfer beide angehören; dann kann man die oben beschriebene Methoden in diesem gemeinsamen Netzwerk anwenden.
Die Multicast-Adresse 224.0.0.1 funktioniert in den meisten Fällen der Praxis, aber natürlich nicht über das Internet.
Software¶
Zur Erzeugung und Sendung des "Magic Packet" benötigt man auf dem Wecker geeignete Software. Für ein Smartphone findet man geeignete APPs in den gängigen Appstores und für einen Ubuntu-Rechner stehen in den Paketquellen mehrere Programme zur Verfügung[1]; man kann auch das unten vorgestellte Skript verwenden:
Das Programm gWakeOnLAN besitzt eine grafische Oberfläche und eignet sich besonders für Desktops mit GTK wie z.B. Gnome. Es lässt sich aus den offiziellen Paketquellen installieren:
gwakeonlan (Weckt Ihre Maschinen mittels »Wake on LAN« auf, aus universe)
Befehl zum Installieren der Pakete:
sudo apt-get install gwakeonlan
Für die Kommandozeile[3] gibt es:
Das Paket wakeonlan 🇬🇧 aus den offiziellen Paketquellen installiert ein Perl-Skript zum komfortablem Wecken, da sich unter anderem Ethernet-Adressen in Dateien speichern lassen:
wakeonlan (Sendet »magische Pakete« zu »Wake-on-LAN«-fähigen Ethernet-Adapter, aus main)
Befehl zum Installieren der Pakete:
sudo apt-get install wakeonlan
Das Paket etherwake 🇬🇧 aus den offiziellen Paketquellen installiert ein gleichnamiges Programm, weches auf eine Einbettung des "Magic Packet" in UDP/IP verzichtet und es mit dem von der IETF dafür vorgesehenen Ethertype
0842(anstatt0800für IP) sendet:etherwake (universe, Werkzeug für den Versand magischer Wake-on-LAN-Pakete, aus universe)
Befehl zum Installieren der Pakete:
sudo apt-get install etherwake
Das Bash-Skript wol wird im Forum Projekte vorgestellt. Es beherrscht auch IPv6. Man muss die Datei als root[5] in einem in der Umgebungsvariable
PATHgenannten Order ablegen, gut geeignet ist z.B. /usr/local/bin/ und dort den Besitzer/Gruppe aufroot:rootund die Dateirechte auf0755setzen.
Router einrichten¶
Wenn Wecker und Schläfer am selben Switch oder am selben Router angeschlossen sind und der gemeinsame Router auch das lokale Netzwerk aufspannt, dann muss man an diesem Router für WoL gar nichts einstellen.
Wenn allerdings Wecker und Router durch mehrere Router getrennt sind, dann müssen am letzten Router vor dem Schläfer zusätzliche Einstellungen erfolgen. Diese Situation ist immer gegeben, wenn man über das Internet einen Rechner wecken will; sie kann aber auch im privaten Netzwerk einer Organisation auftreten.
Die zusätzlichen Einstellungen hängen von der zum Wecken gewählten Methode ab und werden im Kapitel Inbetriebnahme beschrieben.
Inbetriebnahme¶
Man sollte schrittweise vorgehen und sich mit WoL über Internet erst dann befassen, wenn man den Schläfer durch einen Wecker im selben Netzwerk aufwecken kann. Man sollte auch jeweils die Funktion aus seichtem Schlaf sicherstellen, bevor man tiefere Schlafphasen ausprobiert:
Wecker einrichten, d.h. hier die benötigte Software installieren.
Das benötigte Wissen, d.h. MAC- und IP-Adresse des Schläfers erwerben.
⚓︎Auf dem Schläfer im normalen Betriebszustand testen, ob ein vom Wecker gesendetes "Magic Packet" auch ankommt. Dazu auf dem Schläfer ein Terminal[3] öffnen und darin tcpdump mit diesem Befehl starten:
sudo tcpdump -nXXe udp and port 9
Dann vom Wecker aus ein "Magic Packet" an Port 9 senden und kontrollieren, ob es auf dem Schläfer ankommt. Den UDP-Port kann man beliebig wählen, man sollte aber einen sonst unbenutzten aussuchen. ▶ Bedienung
Auf dem Schläfer den Schlafzustand Standby oderBereitschaft funktionsfähig einrichten; dann mit Methode LAN testen, ob man ihn auch per WoL aufwecken kann.
Ggf. vorstehenden Schritt mit dem Ruhezustand bzw. Soft-Off wiederholen.
Jetzt erst Aufwecken über das Internet versuchen. Dazu eine der anderen Methoden wählen und die lt folgender Tabelle erforderlichen zusätzlichen Einstellungen vornehmen.
| Zusätzliche Einstellungen | |||||
| Einstellung | Methode | Hinweise | |||
| LAN | IPv4 | IPv6 | VPN | ||
| DynDNS-Client auf Router | n | ja | n | n | Man benötigt die öffentliche IPv4-Adresse des Routers. Diese ist oft nur als DynDNS-Name verfügbar. Auf dem Router muss also ein DynDNS-Client aktiv sein. |
| Freigabe auf Router zum Schläfer | n | ja | n | n | Auf dem Router muss eine Freigabe zu einem auf dem Schläfer erreichbaren Server eingerichtet sein. |
| Weckbefehl auf Router für Schläfer | n | ja | ja | n | Auf dem Router muss man einstellen, dass beim Eintreffen eines Paketes für den Schläfer dieser automatisch geweckt werden soll. Nicht alle Router können das. |
| DynDNS-Client auf Schläfer | n | n | ja | n | Man benötigt die öffentliche IPv6-Adresse des Schläfers. Diese ist oft nur als DynDNS-Name verfügbar. Auf dem Schläfer muss also ein DynDNS-Client aktiv sein. |
| VPN einrichten | n | n | n | ja | Man richtet ein VPN ein, welches mindestens Wecker, Schläfer und den Router des Schläfers umfasst und benutzt im VPN die Methode LAN. |
Bedienung¶
Methode LAN¶
Man benötigt auf dem Wecker spezielle Software zur Erstellung und Versendung des "Magic Packet", wie oben vorgestellt:
| |
| gWakeOnLAN in Aktion: Im Hintergrund läuft tcpdump zum Mitschnitt der gesendeten Pakete. |
gWakeOnLAN¶
Man muss für jeden Schläfer einen Eintrag erstellen, dazu klickt man auf das grüne + im der Titelseite des Fensters: Der Rechnername dient nur zu Orientierung des Bedieners, und man kann über den Anfragetyp wählen, ob man an limited broadcast (local) oder eine selbst vorgegebene IPv4-Adresse (Internet) senden will. Zum Aufwecken kreuzt man die zu verwendenden Einträge an und klickt auf Einschalten. IPv6 funktioniert nicht. Dieses Programm sendet immer 10 identische Pakete als Vorsorge gegen möglichen Paketverlust.
wakeonlan¶
Das Skript erwartet nur die MAC-Adresse des aufzuweckenden Schläfers und sendet per Vorgabe an limited broadcast:
wakeonlan f4:30:b9:c9:a9:e4
Man kann aber auch eine IPv4-Adresse mit der Option -i angeben:
wakeonlan -i 224.0.0.1 f4:30:b9:c9:a9:e4
IPv6 funktioniert nicht.
etherwake¶
Beim Aufruf sollte man immer mit der Option -i die Schnittstelle (hier beispielhaft: eth0) angeben, da sonst als Vorgabe eth0 verwendet wird und man ggf. eine Fehlermeldung erhält. Dieses Programm sendet an die Unicast-MAC-Adresse oder mit der Option -b an limited broadcast. Da kein IP-Paket gesendet wird, benötigt es immer Root-Rechte[5]:
# Allgemein sudo etherwake -i eth0 <mac-adresse> # Beispiele sudo etherwake -i eth0 f4:30:b9:c9:a9:e4 sudo etherwake -i eth0 -b f4:30:b9:c9:a9:e4
wol¶
Das Skript benötigt die Angabe der aufzuweckenden Rechner, diese können über ihre MAC- oder IP-Adresse oder Rechnernamen spezifiziert werden, sofern diese Angaben jeweils zu einer MAC-Adresse auflösbar sind. Die Auflösung wird versucht durch Nachschlagen in der Datei /etc/ethers, DNS-Namensauflösung und durch Analyse der vorhandenen Routing-Daten, jedoch werden keine neuen ARP- bzw. NDP-Abfragen ausgelöst. Die zum Senden zu verwendende IP-Adresse kann über die Umgebungsvariable ADDR angegeben oder automatisch bestimmt werden. Man kann auch einen DNS-Namen angeben. Wenn man ADDR nicht angibt, werden die allgemein lokal gültigen Multicast- und Broadcast-Adressen gewählt:
wol f4:30:b9:c9:a9:e4
wol brunhilde fritz.box Maria
ADDR=ff02::1 wol f4:30:b9:c9:a9:e4
ADDR=zuhause.dyndns.example.de wol f4:30:b9:c9:a9:e4
Methode IPv4¶
Man benötigt auf dem Wecker keine spezielle Software zum Versenden eines "Magic Packet", sondern schickt einfach eine Verbindungsanfrage vom Wecker an die öffentliche IPv4-Addresse des Routers vor dem Schläfer:
ssh -4 router.dyndns.example.de
Dieser Befehl wird zwar vermutlich fehlschlagen, aber er veranlasst den richtig konfigurierten Router zur Erstellung eines "Magic Packet" für den Schläfer und weckt ihn damit auf. Man wartet einfach eine kurze Zeit und wiederholt dann den Befehl.
Methode IPv6¶
Man geht vor wie vorstehend beschrieben, schickt aber die Verbindungsanfrage an die öffentliche IPv6-Addresse des Schläfers:
ssh -6 brunhilde.dyndns.example.de
Methode VPN¶
Man veranlasst den Wecker, dem VPN des Schläfers beizutreten und benutzt dann Methode LAN.
Probleme und Lösungen¶
Selbst wenn man all diese Einstellungen vorgenommen hat, kann man über eine Reihe von Problemen stolpern. Im Folgenden sind weitere Problemlösungen gesammelt. Man sollte diese nicht wahllos durchprobieren und eingebaut lassen, sondern die einzelnen Tipps nach und nach probieren. Einige der genannten Tipps haben Nachteile, wie z.B. das Deaktivieren des modernen Energiesparmodus ACPI zugunsten des veralteten APMs.
Probleme¶
WoL wird nicht aktiviert
Treiber deaktiviert WoL
Aufwecken scheitert
Lösungen¶
Modul-Option setzen¶
Manche Treiber aktivieren beim Systemstart WoL nur, wenn sie mit einer speziellen Option dazu aufgefordert werden. Zu diesen Modulen gehören 3c59x für den 3C905C Chips von 3Com, sky2 für Marvell Yukon und möglicherweise weitere. Die anzugebende Option hängt jeweils vom Treiber ab.
Man kann diese Methoden anwenden:
Testweise den Treiber MODUL manuell entladen und neu mit der jeweiligen Option OPTION laden:
sudo modprobe -rv MODUL ; sudo modprobe -v MODUL OPTION
Beispiel:
sudo modprobe -rv 3c59x ; sudo modprobe -v 3c59x enable_wol=1
Wenn vorstehende Methode funktioniert, kann man für zukünftige Systemstarts die Option mit einer Konfigurationsdatei für modprobe erledigen lassen:
echo options MODUL OPTION | sudo tee -a /etc/modprobe.d/wol.conf
Beispiel:
echo options 3c59x enable_wol=1 | sudo tee -a /etc/modprobe.d/wol.conf
Man kann diese Aufgabe natürlich auch mit einen Editor[4] als root[5] erledigen. Anschließen sollte man die neu Konfiguration für modprobe mit dem Befehl
sudo update-initramfs -u
in die initrd.img eintragen lassen.
Alternativ zu vorstehender Methode kann man auch GRUB 2 die Option auf die Kommandozeile des Kernels setzen lassen, dabei ist der Name des Moduls in die Option aufzunehmen, d.h. z.B. statt
"3c59x enable_wol=1"schreibt man:"3c59x.enable_wol=1"
Beim Modul sky2 lautet die Option legacy_pme=1. Wenn man den Namen der Option nicht kennt, hilft diese Vorgehensweise teilweise weiter:
Namen des Moduls ermitteln:
networkctl status eth0 | grep Driver
Für den angezeigten Modul MODUL die möglichen Optionen abfragen:
modinfo -F parm MODUL
Die Ausgabe kann leer sein; wenn sie es nicht ist, die möglicherweise zutreffende Option erraten. Aussichtsreich sind solche mit z.B "Wake on LAN", WOL, "Power Management", PM. Wer nicht raten will, analysiere den Quellcode des Moduls.
Modul neu laden¶
Manche Module aktivieren zwar WoL beim Systemstart, vergessen aber dies beim Aufwachen aus Bereitschaft oder Ruhezustand zu erneuern. Typisches Symptom: WoL funktioniert nach dem Booten nur einmal. Dagegen hilft manchmal ein von systemd-sleep beim Aufwachen ausgeführtes Skript welches den Treiber erneut lädt. Mit einem Editor[4] als root[5] eine Datei mit folgendem Inhalt erstellen und wie angegeben anpassen.
#! /bin/dash
# Skript für system-sleep ablegen in Ordner /usr/lib/systemd/system-sleep/
# mit Dateiname = Modulname, Besitzer = root:root, Rechte = 0755
Modul=${0##*/} # Modulname aus Dateiname lesen oder hier fest eintragen
case $1 in (post)
modprobe -rv $Modul
modprobe -v $Modul
esacModul nicht entladen¶
Beim Übergang in einen Schlafzustand darf der Treiber für den Ethernet-Adapter nicht entladen werden, denn er muss ja noch den Adapter in den WoL-Modus umschalten. Es kann aber hilfreich sein, die aktive Verbindung über Ethernet vor dem Übergang in den Schlafzustand zu unterbrechen. Dies kann in ähnlicher Weise wie vorstehend mit einem Skript für systemd-sleep erfolgen:
#! /bin/dash
# Skript für system-sleep ablegen in Ordner /usr/lib/systemd/system-sleep/
# mit Dateiname = Schnitstelle, Besitzer = root:root, Rechte = 0755
IF=${0##*/} # Schnittstelle aus Dateiname lesen oder hier fest eintragen
case $1 in (pre)
## modprobe -r MODULNAME # <-- so etwas in dieser Art darf hier nicht stehen!
ip link set $IF down
esacBei einer Broadcom NetXtreme Netzwerkkarte mit dem BCM5723-Chipsatz, Treibermodul: tg3 (Version 3.128) soll z.B. diese Methode helfen.
MAC rückwärts eingeben¶
Im Kernel gibt es einen kuriosen Fehler https://bugzilla.kernel.org/show_bug.cgi?id=6604 🇬🇧, der bewirkt, dass manchmal die MAC-Adresse beim Übergang in Soft-off in der falschen Reihenfolge auf die Netzwerkkarte geschrieben wird, beim Übergang in einen Schlafmodus aber in der richtigen Reihenfolge.
Dies betrifft beispielsweise den Modul forcedeth für Nforce-4-Chips. Mittels des Befehls
networkctl status eth0 | grep Driver
findet man heraus, ob die eigene Hardware diesen Treiber benutzt.
Zur Abhilfe kann man versuchen die MAC-Adresse rückwärts einzugeben. Also statt 01:02:03:04:05:06 dreht man die Folge um: 06:05:04:03:02:01.
APM statt ACPI benutzen¶
Im Internet findet man etliche Vorschläge, bei Problemen mit WoL ACPI zu deaktivieren und statt dessen das veraltete Power Management APM zu aktivieren. Das mag vor einigen Jahrzehnten tatsächlich hilfreich gewesen sein und bei entsprechend alter Hardware auch im Jahre 2025 noch helfen, ist aber bei aktueller Hardware aussichtslos.
Zum Umschalten von ACPI auf APM muss man beim Systemstart die Optionen "apm=on apm=power-off" auf die Kernel-Kommandozeile setzen.
Signalweg freischalten¶
Möglicherweise sind sind für die Übertragung des Signals vom Ethernet-Adaoter zur CPU benötigten Geräte nicht alle während der Schlafphase eingeschaltet. Man kann den Zustand der Peripheriegeräte in der Datei /proc/acpi/wakeup überprüfen und auch temporär ändern:
cat /proc/acpi/wakeup
Beispielausgabe:
Device S-state Status Sysfs node LANC S5 *enabled pci:0000:00:19.0 EHC1 S3 *enabled pci:0000:00:1d.0 XHC S3 *enabled pci:0000:00:14.0 PCIB S5 *disabled RP03 S5 *disabled NIC S5 *disabled RP04 S5 *enabled pci:0000:00:1c.3 WNIC S5 *disabled pci:0000:02:00.0 HST1 S5 *disabled
Die kryptischen Namen der Geräte (Device) sind spezifisch für die Hardware und nur für den Hersteller der Rechner-Firmware verständlich. Wenn man vermutet, dass ein abgeschaltetes (disabled) Gerät (hier beispielhaft: WNIC) doch für den Signallauf benötigt wird, dann kann man es testweise durch Schreiben seines Namens in die Datei einschalten:
echo -n WNIC | sudo tee /proc/acpi/wakeup
Diese Änderung ist temporär und muss nach einem erneuten Systemstart oder sogar nach dem Aufwecken wiederholt werden. Sollte WoL mit der Änderung funktionieren, kann dies erfolgen mit einer Unit für systemd mit der Zeile:
Exec='echo -n WNIC > /proc/acpi/wakeup
Ausschalten aus GRUB¶
Möglicherweise lässt sich der Rechner trotz allem nicht aufwecken, wenn er aus Ubuntu/Linux heraus heruntergefahren wurde. In manchen Fällen befindet sich der Computer aber in einem aufweckbaren Zustand, wenn er aus einem anderen Betriebssystem oder aus dem Bootloader heraus heruntergefahren wurde. In diesem Fall kann helfen, statt den Rechner aus Ubuntu herunter zu fahren in der Bootmanager GRUB 2 neu zu starten und den Rechner aus GRUB abzuschalten.
Achtung!
Bei Änderungen am Bootloader sollte man immer mit Bedacht vorgehen und Sicherheitskopien anlegen.
Zunächst muss ein Menüpunkt im Menü des Bootmanagers erstellt werden. Dazu wird die Datei /etc/grub.d/40_custom wie folgt angepasst:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "PowerOff" {
saved_entry=0
save_env saved_entry
halt
}In der /etc/default/grub muss folgende Zeile angepasst werden:
GRUB_DEFAULT=saved
Nach jeder Änderung an der Datei /etc/default/grub muss die Grubkonfiguration aktualisiert werden:
sudo update-grub
Der Rechner sollte dann mit folgendem Befehl heruntergefahren werden:
grub-set-default PowerOff ; shutdown -r now
Alternatives Magic Packet¶
Wenn alles bisher Besprochene nichts genutzt hat, dürfen Wagemutige noch diese Methode versuchen. Die Beschreibung kann Personen unter 16 Jahren verstören und wird daher hier mit der Methode Rot13 verschlüsselt:
Zna fgryyr orv Ibyyzbaq nhs rvare Jnyqyvpughat rvar anpxgr Whatsenh zvg reuborara, jrvg trössargra Nezra nhs. Fvr zhff qra Ibyyzbaq naoyvpxra.
Qervmrua Fpuevggr iba Vue ragsreag fgryyr zna fvpu, angüeyvpu rorasnyyf anpxreg, fryore nhs, ireovaqr fvpu qvr Nhtra haq qerur fvpu qervzny hz qvr rvtrar Npufr. Qnaa ynhsr zna trenqjrtf nhs qvr Whatsenh mh. Qvr mvpxvtr Rgurearg-Xnegr xnaa zna fvpu hz qra Unyf uäatra.
Qvr Whatsenh qnes avpug qnorv urysra, fvr mh svaqra. Fvr fbyygr nore qra süe qvrfr Cebmrqhe ibetrfrurara haq nyytrzrva orxnaagra nygxrygvfpura Mnhorefcehpu ermvgvrera.
Jraa zna fpuyvrßyvpu qvr Whatsenh svaqrg, shaxgvbavreg qvr Rgureargxnegr vzzre abpu avpug, nore zna ung aha naqrer Ceäsreramra.
Nhs qrz Eüpxjrt jvesg zna qvr Rgureargxnegr va qra Fnzzryoruäygre süe Ryrxgebfpuebgg; xrvarfsnyyf qnes zna fvr vz Jnyq ragfbetra.
Links¶
Magic Packet Technology 🇬🇧 – AMD White Paper zu WoL, Publication 20213 aus November 1995
Verordnung (EU) Nr. 617/2013 🇩🇪 – legt u.a. den zulässigen Verbrauch im Soft-Off auf 1 W fest