ubuntuusers.de

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.

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 FF zur 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:e4

  • für den Rechner Brunhilde

  • mit 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 Buchstaben g nicht 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 als g stehen 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 ethtool WoL 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:e4

herausfinden. 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-Adresse FF: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 in FF: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-Adresse 01:00:5e:00:00:01 übersetzt.
    Ebenso kann man die entsprechende IPv6-Adresse ff02::1 verwenden, die immer in die Ethernet-Adresse 33: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 (anstatt 0800 fü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 PATH genannten Order ablegen, gut geeignet ist z.B. /usr/local/bin/ und dort den Besitzer/Gruppe auf root:root und die Dateirechte auf 0755 setzen.

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:

  1. Wecker einrichten, d.h. hier die benötigte Software installieren.

  2. Das benötigte Wissen, d.h. MAC- und IP-Adresse des Schläfers erwerben.

  3. ⚓︎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

  4. Auf dem Schläfer den Schlafzustand Standby oderBereitschaft funktionsfähig einrichten; dann mit Methode LAN testen, ob man ihn auch per WoL aufwecken kann.

  5. Ggf. vorstehenden Schritt mit dem Ruhezustand bzw. Soft-Off wiederholen.

  6. 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
EinstellungMethodeHinweise
LAN IPv4 IPv6 VPN
DynDNS-Client auf Router njann 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 njann Auf dem Router muss eine Freigabe zu einem auf dem Schläfer erreichbaren Server eingerichtet sein.
Weckbefehl auf Router für Schläfernjajan 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 nn jan 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 nn nja 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:

WoL-gWakeOnLAN.png
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

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:

  1. 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 
  2. 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.

  3. 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:

  1. Namen des Moduls ermitteln:

    networkctl status eth0 | grep Driver 
  2. 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
esac

Modul 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
esac

Bei 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.

Diese Revision wurde am 12. März 2026 15:55 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk