WAKE ON LAN

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (Saubere Debian Lösung)
(Toter Link entfernt)
 
(95 dazwischenliegende Versionen von 45 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Mittels '''Wake on LAN''' (Abgekürzt: WOL oder WoL) kann der Rechner per Netzwerk eingeschaltet werden.
+
==Beschreibung==
Dies ist z.B. sehr schön, wenn man einen Linux-Router hat, sich per Internet zu diesem verbindet, und dann seinen VDR einschalten kann (um etwa neue [[Timer]] zu speichern). Das funktioniert z.B. bei der FritzBox mit Hilfe des [http://www.tecchannel.de/server/linux/432967/ Fritz!Box WoL Hack].
+
Mittels '''Wake on LAN''' (Abgekürzt: {{wikipedia|WOL}} oder WoL) kann der Rechner per Netzwerk eingeschaltet werden. Das Einschalten erfolgt meistens durch das sogenannte "MagicPacket". Die Programme müssen das "MagicPacket" erzeugen und an die {{wikipedia|Media Access Control}}-Adresse (MAC-Adresse) der Netzwerkkarte des aufzuweckenden Rechners schicken.
  
Das Einschalten erfolgt meistens durch das sogenante "MagicPacket".
+
Eine sehr sinnvolle Anwendung wäre z.B. den VDR über das Internet von unterwegs bei Bedarf einzuschalten und um etwa über eine der verfügbaren [[::Kategorie:Fernbedienung|Web-Anwendung]] einen neue [[timers.conf|Timer]] zu programmieren.  
  
== Programme ==
+
Die MAC-Adresse des aufzuweckenden Rechners lässt sich mit folgenden Befehlen ermitteln
Die Programme müssen das "MagicPacket" erzeugen und an die MAC-Adresse der Netzwerkkarte des aufzuweckenden Rechners schicken.
+
  
=== Browser ===
+
<pre>
Bequem per Browser läßt sich über diesen [http://stephan.mestrona.net/wol/ Wake-On-Lan über Router-Dienst] das MagicPacket aus einem Web-Formular senden. Das funktioniert teilweise sogar durch (DSL-) Router hindurch.
+
ifconfig eth0
 +
eth0      Link encap:Ethernet  Hardware Adresse 00:11:22:33:44:55 
 +
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
 +
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 +
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 +
          Kollisionen:0 Sendewarteschlangenlänge:1000
 +
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
 +
          Speicher:ffce0000-ffd00000
 +
</pre>
  
=== Linux ===
+
Oder auch aus der Entfernung aus dem ARP-Caches auslesen.
Ein passendes Linux-Programm ist [http://www.scyld.com/wakeonlan.html ether-wake].
+
 
 +
<pre>
 +
ping <host>
 +
...
 +
arp
 +
<host>            ether  00:11:22:33:44:55  C                    eth0
 +
</pre>
 +
 
 +
==Möglichkeiten==
 +
===Browser===
 +
Das MagicPacket kann mit Hilfe der folgenden CGI/PHP Skripte aus einem Web-Formular gesendet werden. Das funktioniert meist sogar durch (DSL-) Router hindurch, so auch z.B. bei der FritzBox mit Hilfe des [http://www.tecchannel.de/server/linux/432967/ Fritz!Box WoL Hack].
 +
 
 +
====WOL aus dem Internet====
 +
Eine eigene Internet-Service Anwendung für WAKE ON LAN aufzusetzen ist aber keine größere Schwierigkeit.
 +
 +
* [[WAKE ON LAN - CGI]]
 +
* [[WAKE ON LAN - PHP]]
 +
 
 +
===Client-Programme===
 +
Für die Lokale Verwendung bieten sich separate Client-Programme an.
 +
 
 +
====Linux====
 +
 
 +
'''ether-wake'''
 +
Ein passendes Linux-Programm ist [http://www.scyld.com/wakeonlan.html ether-wake]. Es lässt sich mit dem jeweiligen Paketmanager installieren.
 +
Falls ein Paket nicht verfügbar ist, kann der [[Quelltext]] kompiliert werden.
  
Compiliert wird der Sourcecode mit
 
 
<pre>
 
<pre>
 
wget ftp://ftp.scyld.com/pub/diag/ether-wake.c
 
wget ftp://ftp.scyld.com/pub/diag/ether-wake.c
Zeile 19: Zeile 50:
 
cp ./ether-wake /usr/local/bin
 
cp ./ether-wake /usr/local/bin
 
</pre>
 
</pre>
 +
 
Der Aufruf erfolgt so:
 
Der Aufruf erfolgt so:
 +
 
<pre>
 
<pre>
 
ether-wake 00:11:22:33:44:55
 
ether-wake 00:11:22:33:44:55
 
</pre>
 
</pre>
wobei man für die Zahlenfolge einfach die MAC-Adresse des aufzuweckenden Rechners eingeben muss. Wenn man die nicht hat, kann man sich diese mit
+
 
<pre>ifconfig eth0
+
'''wakeonlan'''
 +
Das Programm wakeonlan hat den Vorteil keine "Superuser"-Rechte zunötigen.
 +
<pre>
 +
wakeonlan 00:11:22:33:44:55
 
</pre>
 
</pre>
anzeigen lassen (natürlich auf dem Rechner den man später wecken will!).
 
* als Alternative dazu gibt es z.B. noch [http://ahh.sourceforge.net/wol/ wol]
 
  
====Probleme====
+
Als weitere Alternative dazu gibt es z.B. noch [http://ahh.sourceforge.net/wol wol].
*seit dem 2.6er Kernel gibt es Probleme dass WOL nicht funktioniert Das Problem liegt darin, dass die meisten Netzwerkkarten-Treiber das WOL deaktivieren.
+
 
*3Com Karten die den Treiber 3c59x verwenden, müssen den Parameter "enable_wol=1" angeben, um WOL zu aktivieren. Dies geht allerdings nur wenn der Treiber als Modul eingebunden wird.
+
====Microsoft Windows====
 +
Auch für Microsoft Windows gibt es die verschieden Clients
 +
* [http://www.spettel.de/lanstart/ LANStart], wobei einige Leute berichtet haben, dass LanStart bei Ihnen nicht funktioniert.
 +
* [http://www.gammadyne.com/cmdline.htm wol.exe]
 +
* [http://www.matcode.com/wol.htm mc-wol.exe] (funktioniert auch nicht immer. Für die Scovery250 ist es ok, für den via-rhine II nicht).
 +
 
 +
====FreeBSD====
 +
 
 +
Unter Freebsd steht das Perl-Programm [http://gsd.di.uminho.pt/jpo/software/wakeonlan/ wakeonlan] zur Verfügung. Die Installation erfolgt über die Ports:
 +
<pre>
 +
cd /usr/ports/net/wakeonlan/
 +
make install clean
 +
</pre>
 +
 
 +
Der Aufruf erfolgt so:
 +
<pre>
 +
wakeonlan -i <IP> <MAC>
 +
</pre>
 +
 
 +
Dabei müssen IP und MAC-Adresse des aufzuweckenden Rechners angegeben werden.
 +
 
 +
==Probleme==
 +
===2.6er Kernel===
 +
* Seit dem 2.6er Kernel gibt das Probleme, dass WOL nicht sofort funktioniert. Das Problem liegt darin, dass die meisten Netzwerkkarten-Treiber das WOL per Default deaktivieren.
 +
 
 +
* Bei Verwendung von ACPI
 +
 
 +
Sollte der PC trotz "ethtool -s eth0 wol g" nicht aufwachen ist ein Blick in /proc/acpi/wakeup hilfreich. Ein cat /proc/acpi/wakeup zeigte folgendes:
 +
<pre>
 +
Device Sleep state    Status
 +
PCI0      4          disabled
 +
COM1      4          disabled
 +
...
 +
</pre>
 +
 
 +
Wake on PCI0 ist hier abgeschaltet (die Netzwerkkarte die normalerweise am PCI Bus hängt kann den PC also trotz des MagicPacket nicht einschalten)
 +
 
 +
ein einfaches
 +
<pre>
 +
echo -n PCI0 > /proc/acpi/wakeup
 +
</pre>
 +
ist nötig um WoL zu ermöglichen. Achtung: das Wiederholen dieser Zeile deaktiviert das ganze wieder!
 +
 
 +
Daher: die paar Zeilen
 +
<pre>
 +
/usr/sbin/ethtool -s eth0 wol g
 +
if (grep PCI0 /proc/acpi/wakeup | grep disabled 2>&1 >> /dev/null) ; then
 +
    echo -n PCI0 > /proc/acpi/wakeup
 +
fi
 +
</pre>
 +
in einem suspend2ram, shutdown etc. Skript stellen sicher, dass der PC mittels WoL auch wieder aufwacht.
 +
 
 +
Das Device kann je nach Netzwerkkarte auch anders heißen. Die Onboard-Netzwerkkarte beim NVidia MCP51 (NForce4) heißt z.B. "MMAC".
 +
Hinweise gibt "cat /proc/acpi/wakeup":
 +
<pre>
 +
Device  S-state  Status  Sysfs node
 +
...
 +
MMAC      S5    enabled  pci:0000:00:14.0 
 +
...
 +
</pre>
 +
 
 +
und "lspci":
 +
<pre>
 +
...
 +
00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a1)
 +
...
 +
</pre>
 +
 
 +
Anhand der Devicenummer (hier 14.0) kann man das Device erkennen.
 +
 
 +
Getestet mit Debian Kernel 2.6.18. Nach Suspend2RAM und Shutdown konnte der PC mittels WoL wieder aufgeweckt werden.
  
 
'''Lösung des Problems:'''
 
'''Lösung des Problems:'''
Es gibt ein Programm namens [http://www.sourceforge.net/projects/gkernel/ "ethtool"]. Hiermit kann man - nachdem der Netzwerktreiber geladen ist - die Netzwerkkartenparameter auslesen und ändern.
+
 
So bekommt man angezeigt, wie die Parameter derzeit sind:
+
Es gibt ein Programm namens [http://www.sourceforge.net/projects/gkernel/ "ethtool"]. Hiermit kann man - nachdem der Netzwerktreiber geladen ist - die Netzwerkkartenparameter auslesen und ändern. So bekommt man angezeigt, wie die Parameter derzeit sind:
<pre>ethtool eth0</pre>
+
 
 +
<pre>
 +
ethtool eth0
 +
</pre>
 +
 
 
Beispiel:
 
Beispiel:
 +
 
<pre>
 
<pre>
 
ethtool eth0
 
ethtool eth0
Zeile 59: Zeile 168:
 
       Link detected: yes
 
       Link detected: yes
 
</pre>
 
</pre>
 +
 
Besonders die Zeilen "Supports Wake-on:" und "Wake-on:" sollte man hier im Auge behalten.
 
Besonders die Zeilen "Supports Wake-on:" und "Wake-on:" sollte man hier im Auge behalten.
 
Die Buchstaben bedeuten:
 
Die Buchstaben bedeuten:
 +
 
<pre>
 
<pre>
 
       wol p|u|m|b|a|g|s|d...
 
       wol p|u|m|b|a|g|s|d...
Zeile 76: Zeile 187:
 
                 options.
 
                 options.
 
</pre>
 
</pre>
 +
 
So aktiviert man das Wake-On-Lan beim Eintreffen eines "MagicPacket(TM)":
 
So aktiviert man das Wake-On-Lan beim Eintreffen eines "MagicPacket(TM)":
 +
 
<pre>
 
<pre>
 
ethtool -s eth0 wol g
 
ethtool -s eth0 wol g
 
</pre>
 
</pre>
Ich habe diese Zeile einfach in meine /etc/init.d/networking an entsprechender Stelle nach dem Aktivieren des Netzwerks gesetzt.
 
Falls es noch Fragen gibt könnt Ihr mich auch direkt anmailen: Thorsten at Gehrig.de
 
  
Bei Debian (c't vdr3) sieht das dann z.B. so aus: (einfach nacht ethool suchen, um die passenden Stellen zu finden):
+
==== Script für den Einsatz in init.d  ====
 
<pre>
 
<pre>
#!/bin/sh
+
#! /bin/sh
 +
#
 +
# Ensures that the Wake On Lan works
 
#
 
#
# manage network interfaces and configure some networking options
 
  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  
if ! [ -x /sbin/ifup ]; then
+
set -e
    exit 0
+
fi
+
 
+
spoofprotect_rp_filter () {
+
    # This is the best method: turn on Source Address Verification and get
+
    # spoof protection on all current and future interfaces.
+
   
+
    if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+
        for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
+
            echo 1 > $f
+
        done
+
        return 0
+
    else
+
        return 1
+
    fi
+
}
+
 
+
spoofprotect () {
+
    echo -n "Setting up IP spoofing protection: "
+
    if spoofprotect_rp_filter; then
+
        echo "rp_filter."
+
    else
+
        echo "FAILED."
+
    fi
+
}
+
 
+
ip_forward () {
+
    if [ -e /proc/sys/net/ipv4/ip_forward ]; then
+
        echo -n "Enabling packet forwarding..."
+
        echo 1 > /proc/sys/net/ipv4/ip_forward
+
        echo "done."
+
    fi
+
}
+
 
+
syncookies () {
+
    if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
+
        echo -n "Enabling TCP/IP SYN cookies..."
+
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+
        echo "done."
+
    fi
+
}
+
 
+
doopt () {
+
    optname=$1
+
    default=$2
+
    opt=`grep "^$optname=" /etc/network/options`
+
    if [ -z "$opt" ]; then
+
        opt="$optname=$default"
+
    fi
+
    optval=${opt#$optname=}
+
    if [ "$optval" = "yes" ]; then
+
        eval $optname
+
    fi
+
}
+
  
 
case "$1" in
 
case "$1" in
    start)
+
  stop|start|restart|force-reload|reload)
doopt spoofprotect yes
+
echo -n "Turn on: Wake on Magic Packet"
        doopt syncookies no
+
/usr/sbin/ethtool -s eth0 wol g
        doopt ip_forward no
+
echo
 
+
        echo -n "Configuring network interfaces..."
+
        ifup -a
+
ethtool -s eth0 wol g
+
echo "done."
+
;;
+
    stop)
+
        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
+
          grep -q "^/ nfs$"; then
+
            echo "NOT deconfiguring network interfaces: / is an NFS mount"
+
        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
+
          grep -q "^/ smbfs$"; then
+
            echo "NOT deconfiguring network interfaces: / is an SMB mount"
+
elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
+
          grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
+
            echo "NOT deconfiguring network interfaces: network shares still mounted."
+
        else
+
            echo -n "Deconfiguring network interfaces..."
+
            ifdown -a --exclude=lo
+
    echo "done."
+
        fi
+
 
;;
 
;;
    force-reload|restart)
+
  *)
doopt spoofprotect yes
+
# N=/etc/init.d/hwtools
        doopt syncookies no
+
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        doopt ip_forward no
+
        echo -n "Reconfiguring network interfaces..."
+
        ifdown -a --exclude=lo
+
        ifup -a
+
ethtool -s eth0 wol g
+
echo "done."
+
;;
+
    *)
+
echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
+
 
exit 1
 
exit 1
 
;;
 
;;
Zeile 193: Zeile 221:
 
</pre>
 
</pre>
  
=== Saubere Debian Lösung ===
+
Diesen kopiert man nach /etc/init.d.
Besser als das Ändern von vorhandenen Dateien ist es einen extra Mechanismus einzubauen. In Debian (Sarge) wird der runlevel 0 zum Abschalten des Systems benutzt. Daher wird ein link in /etc/rc0.d erzeugt der auf den  Script in /etc/init.d/wake_on_lan zeigt. (Erst den Script erzeugen!)
+
Zugriffsrechte sind bei  mir:
 +
<pre>
 +
-rwxr-xr-x  1 root root  386 2006-01-31 09:50 wake_on_lan
 +
</pre>
 +
Dann muss noch ein Link darauf erzeugt werden damit der Script automatisch aufgerufen wird:
 +
<pre>
 +
/etc/rc0.d/S80wake_on_lan -> ../init.d/wake_on_lan
 +
</pre>
 +
Er macht die Arbeit beim Starten, es kann sein das es auf manchen Systemen besser ist dies bei Shutdown zu machen. Dann muss der Link mit 'K' anfangen.
 +
 
 +
Den Link kann man damit setzen:
 
<pre>
 
<pre>
 
cd /etc/rc0.d
 
cd /etc/rc0.d
ln -s /etc/init.d/wake_on_lan S80wake_on_lan
+
ln -s ../init.d/wake_on_lan K80wake_on_lan
 
</pre>
 
</pre>
  
Und hier der Script wake_on_lan. Er muß nach /etc/init.d gespeichert werden und ausführbar sein. Dies geht mit "chmod +x wake_on_lan" wenn man im Verzeichnis ist.
+
==== Zusatz für /etc/network/interfaces  ====
 +
Statt eines zusätzlichen Scripts für init.d kann man den Aufruf von ethtool auch in /etc/network/interfaces durchführen (s. [http://www.debian-administration.org/articles/122]):
 
<pre>
 
<pre>
#! /bin/sh
+
up ethtool -s eth0 wol g
#
+
</pre>
# Ensures that the Wake On Lan works
+
#
+
  
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
=== [[Fedora]]-spezifisch ===
 +
In Verzeichnis /etc/sysconfig/network in der Datei zur Netzwerkkarte ifcfg-eth0 die Option "ETHTOOL_OPTIONS=" mit 'wol g' ergänzen.
  
set -e
+
=== [[Debian]]-spezifisch ===
 +
* http://wiki.debian.org/WakeOnLan
  
case "$1" in
+
* Wer einem VDR auf Debian mit nvram-wakeup und (forced_)reboot WOL beibringen will, wird mit dem Problem konfrontiert, dass beim Reboot z.B. in einen PowerOff-Kernel die Netzwerkschnittstelle komplett deaktiviert wird. Damit geht die mit ethtool gesetzte WOL-Bereitschaft verloren.
  stop|start|restart|force-reload|reload)
+
        echo -n "Turn on: Wake on Magic Packet"
+
        /usr/sbin/ethtool -s eth0 wol g
+
        echo
+
        ;;
+
  *)
+
#      N=/etc/init.d/hwtools
+
#      echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+
        exit 1
+
        ;;
+
esac
+
  
exit 0
+
'''Lösung:'''
 +
In /etc/init.d/reboot für reboot den Parameter -i entfernen.
 +
Dieser sorgt sonst für die Abschaltung aller Netzwerkschnittstellen.
  
</pre>
+
==== 3Com ====
 +
Bei der Konfiguration des WOL auf einer Debian-Plattform ist folgendes zu beachten. Da der WOL-Modus nicht automatisch gestartet wird, muss eine neue Datei in /etc/modprobe.d erstellt werden. Die Datei kann z.B. 3c59x heißen und muss folgenden Eintrag enthalten: "options 3c59x enable_wol=1". Danach muss initramfs neu gebaut werden: "update-initramfs -t -c -k all". Somit sollte man den Computer per WOL anschalten können. Auch kann der Computer durch "halt" heruntergefahren werden, ohne dass sich die Karte ausschaltet.
 +
 
 +
=== [[Gentoo]]-spezifisch ===
 +
 
 +
Zunächst sollte man die ethtools installieren:
  
Falls ethtool noch nicht installiert ist muß man dies jetzt nachholen:
 
 
<pre>
 
<pre>
apt-get install ethtool
+
emerge sys-apps/ethtool
 
</pre>
 
</pre>
  
=== Windows ===
+
Den ethtool-Aufruf kann man ganz einfach in die Datei '''/etc/conf.d/local.start''' schreiben:
Für Windows gibt es die Freeware [http://www.spettel.de/lanstart/ LANStart].
+
  
Einige Leute haben berichtet dass LanStart bei Ihnen nicht funktioniert.
+
<pre>
Alternativen sind wol.exe von http://www.gammadyne.com/cmdline.htm
+
# /etc/conf.d/local.start
oder mc-wol.exe von http://www.matcode.com/wol.htm (funktioniert auch nicht immer).
+
  
=== Wakeup per CGI ===
+
# This is a good place to load any misc programs
Einen eigenen Wakeupdienst mit MagicPacket(TM) und Web-Formular ist aber ansich auch keine größere Schwierigkeit.
+
# on startup (use &>/dev/null to hide output)
Also wenn man sich z.B. die eigene MAC Adresse nicht permanent nicht merken möchte, und wenn ein eigener Webserver, der CGI+Perl unterstützt, zur Verfügung steht, kann mit folgendem HTML-Wrapper und CGI-Script ein eigener Wakeupdienst aufgesetzt werden.
+
  
Dieser HTML-Teil in die Webseite einbetten.
+
# enable wake on lan
<pre>
+
/usr/sbin/ethtool -s eth0 wol g
        <form action="/cgi/wakeup.pl" method="post">
+
            <table>
+
                <tr><td>HWaddress:</td><td><input size="40" maxlength="40" name="HWaddress" value="00:11:22:33:44:55"></td></tr>
+
                <tr><td>IPaddress:</td><td><input size="40" maxlength="40" name="IPaddress" value="1.2.3.4"></td></tr>
+
                <tr><td>Port:</td><td><input size="40" maxlength="40" name="Port" value="9"></td></tr>
+
                <tr><td>&nbsp;</td><td><input type="submit" value="Absenden"></td></tr>
+
            </table>
+
        </form>
+
 
</pre>
 
</pre>
  
und diesen CGI-Teil als "/cgi/wakeup.pl" auf dem Webserver speichern.
+
ethtool wird dann beim booten automatisch ausgeführt.
 +
 
 +
=== [[SuSE]]-spezfisch ===
 +
Folgenden Befehl, auf der Komandozeile absetzen:
 +
 
 
<pre>
 
<pre>
#!/usr/bin/perl -w
+
yast2 sysconfig set ETHTOOL_OPTIONS="-s eth0 wol g"
 +
</pre>
  
use strict;
+
Ausgabe:
use Socket;
+
use CGI;
+
my $cgi = new CGI;
+
use CGI::Carp qw(fatalsToBrowser);
+
  
$cgi->default_dtd('-//W3C//DTD HTML 4.01 Transitional//EN');
+
''Variable 'ETHTOOL_OPTIONS' setzen auf '-s eth0 wol g': Erfolg''
  
print $cgi->header(-type    =>'text/html'),
+
====ifdown====
$cgi->start_html('Wakeup'),
+
* Bei SUSE 10.1 wird im init script network die Netzwerkkarte mit ifdown abgeschaltet was anscheinend dazu führt, dass das System trotz des Befehls "ethtool -s eth0 wol g" nicht aufwacht.
$cgi->h1('Wakeup'),
+
* es scheint auch von den eingesetzten Netzwerkchips abzuhängen, ob ifdown gesetzt sein darf oder nicht. Unter [[LinVDR]] Mahlzeit 4(ß2) und ältere muss für eine Intel100-Chip "ifconfig eth0 down" in der rcshutdown enthalten sein, damit WOL funktioniert. Ein Realtek 8111b (Treiber r8169)-Chip wacht mit dieser Zeile '''nicht''' wieder auf - um den Rechner mit WOL starten zu können, muss muss die Zeile auskommentiert sein.
wake($cgi->param('HWaddress'),$cgi->param('IPaddress'),$cgi->param('Port')),
+
$cgi->end_html();
+
  
sub wake
+
===3Com Karten===
{
+
* 3Com Karten die den Treiber '''3c59x''' verwenden, müssen den Parameter ''enable_wol=1'' angeben, um WOL zu aktivieren. Dies geht allerdings nur wenn der Treiber als Modul eingebunden wird.
my $hwaddr  = shift;
+
my $ipaddr  = shift || '255.255.255.255';
+
my $port    = shift || getservbyname('discard', 'udp');
+
  
my ($raddr, $them, $proto);
+
==Sonstiges==
my ($hwaddr_re, $pkt);
+
===BIOS Einstellungen===
+
Auch im BIOS muss dafür gesorgt werden das die Netzwerkkarten weiter mit Strom versorgt wird und das Aufwecken ermöglicht. Dazu aktiviere eine der folgenden Optionen (sofern verfügbar)
# Validate hardware address (ethernet address)
+
* '''Wake on LAN'''
 +
* '''Power On by Ring'''
 +
* '''Power On by PME*'''
  
$hwaddr_re = join(':', ('[0-9A-Fa-f]{1,2}') x 6);
+
So muss zum Beispiel beim Mainboard PointOfView ION 330 obwohl es ebenfalls Power-on-by-Ring gibt, Power on PME (Power Management Event) aktiviert werden.
if ($hwaddr !~ m/^$hwaddr_re$/) {
+
return $cgi->p({-style => 'color:red'}, "Invalid hardware address: $hwaddr" );
+
}
+
  
# Generate magic sequence
+
[[Bild:Wake On Lan 01.png|thumb|none|400px|''Einstellung im BIOS'']]
  
foreach (split /:/, $hwaddr) {
+
===Verbindung===
$pkt .= chr(hex($_));
+
Vor allem bei älteren Netzwerkkarten, bzw. Mainboards muss außerdem ein Kabel zwischen Mainboard und Netzwerkkarte gesteckt werden: (Ausnahme sind Mainboards mit Onboard-Netzwerkkarte). Abhängig ist dies von der verwendeten PCI-Spezifikation.
}
+
$pkt = chr(0xFF) x 6 . $pkt x 16;
+
  
# Allocate socket and send packet
+
[[Bild:Wake On Lan 02.png|thumb|none|400px|''WOL Kabel'']]
  
$raddr = gethostbyname($ipaddr);
+
===kein WOL-Connector On-Board - Powertaster per WOL auslösen===
$them = pack_sockaddr_in($port, $raddr);
+
Moderne Mainboard schalten durch ein PCI-Wakeup-Signal ein (benötigt PCI2.2 oder höher).
$proto = getprotobyname('udp');
+
  
if(!socket(S, AF_INET, SOCK_DGRAM, $proto)) {
+
Ältere Mainboards nutzen dagegen den WOL-Connector der Netzwerkkarte.
        return $cgi->p({-style => 'color:red'}, "socket : $!");
+
}
+
if(!setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1)) {
+
        return $cgi->p({-style => 'color:red'}, "setsockopt : $!" );
+
    }
+
  
if(!send(S, $pkt, 0, $them)) {
+
Zum Teil ist aber auf älteren ATX-Mainboards kein passernder WOL-Connector vorhanden.
        return $cgi->p({-style => 'color:red'}, "send : $!");
+
    }
+
  
close S;
+
Man kann das WOL-Signal der Netztwerkkarte aber auch dazu nutzen, den ATX-Powertaster zu drücken.
return $cgi->p("Sending magic packet to $ipaddr:$port with $hwaddr");
+
Dabei wird die Netzwerkkarte aus den +5V-Standby des Netzteils mit Strom versorgt und bei einem WOL-Signal wird der WOL-Signal-Pin dauerhat auf +5V gelegt. Mit einer relativ einfachen Schaltung kann diese den Powertaster auslösen (sofern der Powertaster "Masse-geschaltet" ist).
}
+
</pre>
+
  
==Sonstiges==
 
Das ganze ist im BIOS zu aktivieren: '''Power On by Ring''' bzw. '''Wake on LAN'''
 
  
[[Bild:Wake On Lan 01.png|thumb|none|400px|''Einstellung im BIOS'']]
+
                                      NPN
 +
                                      C|/----R100----0----------------- PowerButton_+5V_Pin
 +
WOL------------+C47µF------R4,7k------B|             : Powertaster
 +
                                      E|>------------0----------------- GND
 +
                                     
  
Vor allem bei älteren Netzwerkkarten, bzw. Mainboards muss außerdem ein Kabel zwischen Mainboard und Netzwerkkarte gesteckt werden: (Ausnahme sind Mainboards mit Onboard-Netzwerkkarte). Abhängig ist dies von der verwendeten PCI-Spezifikation.
+
siehe dazu auch: [http://www.vdr-portal.de/board/thread.php?postid=709820]
  
Eine genauere Erläuterung dazu ist auf den [http://www.heise.de/ct/04/24/232/default.shtml c't Hotline Seiten zur Ausgabe 24/2004] unter ''Komplizierter Netzverkehr'' zu finden
 
  
[[Bild:Wake On Lan 02.png|thumb|none|400px|''WOL Kabel'']]
+
===Anmerkung zu Kernel 2.6 und 3Com Karten===
 +
Problematisch ist dabei augenscheinlich, dass die Hardware-Erkennung und das Laden der Module offenbar mehr als einmal laufen -
 +
zumindest lassen die Statusausgaben das vermuten. Scrollt man den Boot-Screen nach oben, stößt man zunächst auf eine Zeile "3c59x already loaded" und weiter oben auf den Vermerk, dass das Modul 3c59x geladen wurde.
 +
 
 +
Dabei scheint zumindest der erste Ladevorgang die Optionen in "modules.conf", in dem "enable_wol=1" normalerweise steht, nicht zu beachten. Der zweite Versuch das Modul zu laden, der die Option evtl. berücksichtigen würde, ist aber nicht erfolgreich.
 +
Möglicherweise könnte man den ersten Ladeversuch (z. B. durch Änderungen an "discover"?, "discover.conf"?, etc.) unterbinden und damit den Zweiten wirksam werden lassen.
 +
 
 +
Da die Einstellung aber quasi erst beim Abschalten des Systems benötigt wird, scheint der Workaround nach dem Muster von "Debian - WAKE ON LAN" einfacher zu sein (hier: scriptmäßiges Entladen des Moduls durch "rmmod 3c59x" und danach "modprobe 3c59x enable_wol=1")
 +
 
 +
Jedoch dürfte dabei unter Umständen das Problem auftreten, daß das WOL nicht funktioniert, wenn der Rechner nach einem Crash "abgewürgt" wird, bevor das Script ausgeführt wurde.
 +
 
 +
[marvel]
 +
Soweit ich das erforscht habe (und mich richtig erinnere) wird der erste Ladevorgang des Treibers aus der Initramdisk heraus durchgeführt. Diese hat eine eigene modules.conf, die vom System aus nicht zu editieren ist. Auch blacklisting hilft hier nicht.
 +
Als Lösung empfiehlt sich alle Treiber zu entladen, die nicht zum Booten benötigt werden und in diesem "nackten" Zustand eine neue Initramdisk zu erstellen. In dieser neuen Ramdisk fehlen dann alle Treiber, die nicht geladen waren. Anschließend greifen die üblichen Mechanismen mit modules.conf usw.
 +
 
 +
Obwohl WOL nach '''modprobe 3c59x enable_wol=1''' funktioniert, meldet '''ethtool -s eth0 wol g''' weiterhin ''Operation not supported''. WOL funktioniert aber trotzdem.
 +
 
 +
==Links==
 +
# [[Debian - WAKE ON LAN|Debian-spezifischer Artikel zu WOL]]
 +
# [http://www.voehringer.net/wiki/index.php/Howto:_Rechner_aufwecken_mit_%22Wake_Up_On_Lan%22 Wake-On-Lan einrichten]
 +
# [http://www.codeproject.com/Articles/11469/Wake-On-LAN-WOL C++ Beispiel auf codeproject.com]
 +
# [http://www.depicus.com/wake-on-lan/wake-on-lan-gui.aspx/ Wake on Lan for Windows (kleines Programm für WoL über Internet)]
 +
# [http://www.tecchannel.de/server/linux/432967/ Fritz!Box WoL Hack]
 +
# [http://ahh.sourceforge.net/wol/ Wake On LAN client]
 +
# [http://www.rshut.com/wol Wake-On-LAN Online (WoL über Internet)]
 +
# [http://stephan.mestrona.net/wol/ Wake-On-Lan per MagicPacket(TM) direkt über Internetseite (inkl. Routerliste & Anleitungen)]
  
== Links ==
+
[[Kategorie:Begriffserklärungen]]
{|
+
[[Kategorie:Hardware]]
|[1]
+
[[Kategorie:Wakeup]]
|[http://www.ip-phone-forum.de/forum/viewtopic.php?p=94622 Thread zu "Wake-On-Lan aus Internet durch DSL-Router (hier FritzBox)"]  
+
|--
+
|[2]  
+
|[http://stephan.mestrona.net/wol/ Wake-On-Lan über Router-Dienst: MagicPacket(TM) aus Web-Formular senden]
+
|--
+
|[3]
+
|[http://www.tecchannel.de/server/linux/432967/ Fritz!Box WoL Hack]
+
|}
+

Aktuelle Version vom 14. August 2014, 17:08 Uhr

Inhaltsverzeichnis

[Bearbeiten] Beschreibung

Mittels Wake on LAN (Abgekürzt: WOL oder WoL) kann der Rechner per Netzwerk eingeschaltet werden. Das Einschalten erfolgt meistens durch das sogenannte "MagicPacket". Die Programme müssen das "MagicPacket" erzeugen und an die Media Access Control-Adresse (MAC-Adresse) der Netzwerkkarte des aufzuweckenden Rechners schicken.

Eine sehr sinnvolle Anwendung wäre z.B. den VDR über das Internet von unterwegs bei Bedarf einzuschalten und um etwa über eine der verfügbaren Web-Anwendung einen neue Timer zu programmieren.

Die MAC-Adresse des aufzuweckenden Rechners lässt sich mit folgenden Befehlen ermitteln

ifconfig eth0
eth0      Link encap:Ethernet  Hardware Adresse 00:11:22:33:44:55  
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Speicher:ffce0000-ffd00000 

Oder auch aus der Entfernung aus dem ARP-Caches auslesen.

ping <host>
...
arp
<host>            ether   00:11:22:33:44:55   C                     eth0

[Bearbeiten] Möglichkeiten

[Bearbeiten] Browser

Das MagicPacket kann mit Hilfe der folgenden CGI/PHP Skripte aus einem Web-Formular gesendet werden. Das funktioniert meist sogar durch (DSL-) Router hindurch, so auch z.B. bei der FritzBox mit Hilfe des Fritz!Box WoL Hack.

[Bearbeiten] WOL aus dem Internet

Eine eigene Internet-Service Anwendung für WAKE ON LAN aufzusetzen ist aber keine größere Schwierigkeit.

[Bearbeiten] Client-Programme

Für die Lokale Verwendung bieten sich separate Client-Programme an.

[Bearbeiten] Linux

ether-wake Ein passendes Linux-Programm ist ether-wake. Es lässt sich mit dem jeweiligen Paketmanager installieren. Falls ein Paket nicht verfügbar ist, kann der Quelltext kompiliert werden.

wget ftp://ftp.scyld.com/pub/diag/ether-wake.c
gcc -O -Wall -o ether-wake ether-wake.c
cp ./ether-wake /usr/local/bin

Der Aufruf erfolgt so:

ether-wake 00:11:22:33:44:55

wakeonlan Das Programm wakeonlan hat den Vorteil keine "Superuser"-Rechte zunötigen.

wakeonlan 00:11:22:33:44:55

Als weitere Alternative dazu gibt es z.B. noch wol.

[Bearbeiten] Microsoft Windows

Auch für Microsoft Windows gibt es die verschieden Clients

  • LANStart, wobei einige Leute berichtet haben, dass LanStart bei Ihnen nicht funktioniert.
  • wol.exe
  • mc-wol.exe (funktioniert auch nicht immer. Für die Scovery250 ist es ok, für den via-rhine II nicht).

[Bearbeiten] FreeBSD

Unter Freebsd steht das Perl-Programm wakeonlan zur Verfügung. Die Installation erfolgt über die Ports:

cd /usr/ports/net/wakeonlan/
make install clean

Der Aufruf erfolgt so:

wakeonlan -i <IP> <MAC>

Dabei müssen IP und MAC-Adresse des aufzuweckenden Rechners angegeben werden.

[Bearbeiten] Probleme

[Bearbeiten] 2.6er Kernel

  • Seit dem 2.6er Kernel gibt das Probleme, dass WOL nicht sofort funktioniert. Das Problem liegt darin, dass die meisten Netzwerkkarten-Treiber das WOL per Default deaktivieren.
  • Bei Verwendung von ACPI

Sollte der PC trotz "ethtool -s eth0 wol g" nicht aufwachen ist ein Blick in /proc/acpi/wakeup hilfreich. Ein cat /proc/acpi/wakeup zeigte folgendes:

Device Sleep state    Status
PCI0      4           disabled
COM1      4           disabled
...

Wake on PCI0 ist hier abgeschaltet (die Netzwerkkarte die normalerweise am PCI Bus hängt kann den PC also trotz des MagicPacket nicht einschalten)

ein einfaches

echo -n PCI0 > /proc/acpi/wakeup

ist nötig um WoL zu ermöglichen. Achtung: das Wiederholen dieser Zeile deaktiviert das ganze wieder!

Daher: die paar Zeilen

/usr/sbin/ethtool -s eth0 wol g
if (grep PCI0 /proc/acpi/wakeup | grep disabled 2>&1 >> /dev/null) ; then
    echo -n PCI0 > /proc/acpi/wakeup
fi

in einem suspend2ram, shutdown etc. Skript stellen sicher, dass der PC mittels WoL auch wieder aufwacht.

Das Device kann je nach Netzwerkkarte auch anders heißen. Die Onboard-Netzwerkkarte beim NVidia MCP51 (NForce4) heißt z.B. "MMAC". Hinweise gibt "cat /proc/acpi/wakeup":

Device  S-state   Status   Sysfs node
...
MMAC      S5     enabled   pci:0000:00:14.0   
...

und "lspci":

...
00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a1)
...

Anhand der Devicenummer (hier 14.0) kann man das Device erkennen.

Getestet mit Debian Kernel 2.6.18. Nach Suspend2RAM und Shutdown konnte der PC mittels WoL wieder aufgeweckt werden.

Lösung des Problems:

Es gibt ein Programm namens "ethtool". Hiermit kann man - nachdem der Netzwerktreiber geladen ist - die Netzwerkkartenparameter auslesen und ändern. So bekommt man angezeigt, wie die Parameter derzeit sind:

ethtool eth0

Beispiel:

ethtool eth0
Settings for eth0:
       Supported ports: [ TP MII ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
       Advertised auto-negotiation: Yes
       Speed: 100Mb/s
       Duplex: Full
       Port: MII
       PHYAD: 1
       Transceiver: internal
       Auto-negotiation: on
       Supports Wake-on: pumbg
       Wake-on: g
       Current message level: 0x00000001 (1)
       Link detected: yes

Besonders die Zeilen "Supports Wake-on:" und "Wake-on:" sollte man hier im Auge behalten. Die Buchstaben bedeuten:

      wol p|u|m|b|a|g|s|d...
             Set Wake-on-LAN options.  Not all  devices  support  this.   The
             argument  to  this  option  is a string of characters specifying
             which options to enable.
             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(tm)
             s  Enable SecureOn(tm) password for MagicPacket(tm)
             d  Disable (wake on nothing).  This option clears  all  previous
                options.

So aktiviert man das Wake-On-Lan beim Eintreffen eines "MagicPacket(TM)":

ethtool -s eth0 wol g

[Bearbeiten] Script für den Einsatz in init.d

#! /bin/sh
#
# Ensures that the Wake On Lan works
#

#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

set -e

case "$1" in
  stop|start|restart|force-reload|reload)
	echo -n "Turn on: Wake on Magic Packet"
	/usr/sbin/ethtool -s eth0 wol g
	echo
	;;
  *)
#	N=/etc/init.d/hwtools
#	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0

Diesen kopiert man nach /etc/init.d. Zugriffsrechte sind bei mir:

-rwxr-xr-x  1 root root  386 2006-01-31 09:50 wake_on_lan

Dann muss noch ein Link darauf erzeugt werden damit der Script automatisch aufgerufen wird:

/etc/rc0.d/S80wake_on_lan -> ../init.d/wake_on_lan

Er macht die Arbeit beim Starten, es kann sein das es auf manchen Systemen besser ist dies bei Shutdown zu machen. Dann muss der Link mit 'K' anfangen.

Den Link kann man damit setzen:

cd /etc/rc0.d
ln -s ../init.d/wake_on_lan K80wake_on_lan 

[Bearbeiten] Zusatz für /etc/network/interfaces

Statt eines zusätzlichen Scripts für init.d kann man den Aufruf von ethtool auch in /etc/network/interfaces durchführen (s. [1]):

up ethtool -s eth0 wol g

[Bearbeiten] Fedora-spezifisch

In Verzeichnis /etc/sysconfig/network in der Datei zur Netzwerkkarte ifcfg-eth0 die Option "ETHTOOL_OPTIONS=" mit 'wol g' ergänzen.

[Bearbeiten] Debian-spezifisch

  • Wer einem VDR auf Debian mit nvram-wakeup und (forced_)reboot WOL beibringen will, wird mit dem Problem konfrontiert, dass beim Reboot z.B. in einen PowerOff-Kernel die Netzwerkschnittstelle komplett deaktiviert wird. Damit geht die mit ethtool gesetzte WOL-Bereitschaft verloren.

Lösung: In /etc/init.d/reboot für reboot den Parameter -i entfernen. Dieser sorgt sonst für die Abschaltung aller Netzwerkschnittstellen.

[Bearbeiten] 3Com

Bei der Konfiguration des WOL auf einer Debian-Plattform ist folgendes zu beachten. Da der WOL-Modus nicht automatisch gestartet wird, muss eine neue Datei in /etc/modprobe.d erstellt werden. Die Datei kann z.B. 3c59x heißen und muss folgenden Eintrag enthalten: "options 3c59x enable_wol=1". Danach muss initramfs neu gebaut werden: "update-initramfs -t -c -k all". Somit sollte man den Computer per WOL anschalten können. Auch kann der Computer durch "halt" heruntergefahren werden, ohne dass sich die Karte ausschaltet.

[Bearbeiten] Gentoo-spezifisch

Zunächst sollte man die ethtools installieren:

emerge sys-apps/ethtool

Den ethtool-Aufruf kann man ganz einfach in die Datei /etc/conf.d/local.start schreiben:

# /etc/conf.d/local.start

# This is a good place to load any misc programs
# on startup (use &>/dev/null to hide output)

# enable wake on lan
/usr/sbin/ethtool -s eth0 wol g

ethtool wird dann beim booten automatisch ausgeführt.

[Bearbeiten] SuSE-spezfisch

Folgenden Befehl, auf der Komandozeile absetzen:

yast2 sysconfig set ETHTOOL_OPTIONS="-s eth0 wol g"

Ausgabe:

Variable 'ETHTOOL_OPTIONS' setzen auf '-s eth0 wol g': Erfolg

[Bearbeiten] ifdown

  • Bei SUSE 10.1 wird im init script network die Netzwerkkarte mit ifdown abgeschaltet was anscheinend dazu führt, dass das System trotz des Befehls "ethtool -s eth0 wol g" nicht aufwacht.
  • es scheint auch von den eingesetzten Netzwerkchips abzuhängen, ob ifdown gesetzt sein darf oder nicht. Unter LinVDR Mahlzeit 4(ß2) und ältere muss für eine Intel100-Chip "ifconfig eth0 down" in der rcshutdown enthalten sein, damit WOL funktioniert. Ein Realtek 8111b (Treiber r8169)-Chip wacht mit dieser Zeile nicht wieder auf - um den Rechner mit WOL starten zu können, muss muss die Zeile auskommentiert sein.

[Bearbeiten] 3Com Karten

  • 3Com Karten die den Treiber 3c59x verwenden, müssen den Parameter enable_wol=1 angeben, um WOL zu aktivieren. Dies geht allerdings nur wenn der Treiber als Modul eingebunden wird.

[Bearbeiten] Sonstiges

[Bearbeiten] BIOS Einstellungen

Auch im BIOS muss dafür gesorgt werden das die Netzwerkkarten weiter mit Strom versorgt wird und das Aufwecken ermöglicht. Dazu aktiviere eine der folgenden Optionen (sofern verfügbar):

  • Wake on LAN
  • Power On by Ring
  • Power On by PME*

So muss zum Beispiel beim Mainboard PointOfView ION 330 obwohl es ebenfalls Power-on-by-Ring gibt, Power on PME (Power Management Event) aktiviert werden.

Einstellung im BIOS

[Bearbeiten] Verbindung

Vor allem bei älteren Netzwerkkarten, bzw. Mainboards muss außerdem ein Kabel zwischen Mainboard und Netzwerkkarte gesteckt werden: (Ausnahme sind Mainboards mit Onboard-Netzwerkkarte). Abhängig ist dies von der verwendeten PCI-Spezifikation.

WOL Kabel

[Bearbeiten] kein WOL-Connector On-Board - Powertaster per WOL auslösen

Moderne Mainboard schalten durch ein PCI-Wakeup-Signal ein (benötigt PCI2.2 oder höher).

Ältere Mainboards nutzen dagegen den WOL-Connector der Netzwerkkarte.

Zum Teil ist aber auf älteren ATX-Mainboards kein passernder WOL-Connector vorhanden.

Man kann das WOL-Signal der Netztwerkkarte aber auch dazu nutzen, den ATX-Powertaster zu drücken. Dabei wird die Netzwerkkarte aus den +5V-Standby des Netzteils mit Strom versorgt und bei einem WOL-Signal wird der WOL-Signal-Pin dauerhat auf +5V gelegt. Mit einer relativ einfachen Schaltung kann diese den Powertaster auslösen (sofern der Powertaster "Masse-geschaltet" ist).


                                      NPN
                                      C|/----R100----0----------------- PowerButton_+5V_Pin
WOL------------+C47µF------R4,7k------B|             : Powertaster
                                      E|>------------0----------------- GND
                                     

siehe dazu auch: [2]


[Bearbeiten] Anmerkung zu Kernel 2.6 und 3Com Karten

Problematisch ist dabei augenscheinlich, dass die Hardware-Erkennung und das Laden der Module offenbar mehr als einmal laufen - zumindest lassen die Statusausgaben das vermuten. Scrollt man den Boot-Screen nach oben, stößt man zunächst auf eine Zeile "3c59x already loaded" und weiter oben auf den Vermerk, dass das Modul 3c59x geladen wurde.

Dabei scheint zumindest der erste Ladevorgang die Optionen in "modules.conf", in dem "enable_wol=1" normalerweise steht, nicht zu beachten. Der zweite Versuch das Modul zu laden, der die Option evtl. berücksichtigen würde, ist aber nicht erfolgreich. Möglicherweise könnte man den ersten Ladeversuch (z. B. durch Änderungen an "discover"?, "discover.conf"?, etc.) unterbinden und damit den Zweiten wirksam werden lassen.

Da die Einstellung aber quasi erst beim Abschalten des Systems benötigt wird, scheint der Workaround nach dem Muster von "Debian - WAKE ON LAN" einfacher zu sein (hier: scriptmäßiges Entladen des Moduls durch "rmmod 3c59x" und danach "modprobe 3c59x enable_wol=1")

Jedoch dürfte dabei unter Umständen das Problem auftreten, daß das WOL nicht funktioniert, wenn der Rechner nach einem Crash "abgewürgt" wird, bevor das Script ausgeführt wurde.

[marvel] Soweit ich das erforscht habe (und mich richtig erinnere) wird der erste Ladevorgang des Treibers aus der Initramdisk heraus durchgeführt. Diese hat eine eigene modules.conf, die vom System aus nicht zu editieren ist. Auch blacklisting hilft hier nicht. Als Lösung empfiehlt sich alle Treiber zu entladen, die nicht zum Booten benötigt werden und in diesem "nackten" Zustand eine neue Initramdisk zu erstellen. In dieser neuen Ramdisk fehlen dann alle Treiber, die nicht geladen waren. Anschließend greifen die üblichen Mechanismen mit modules.conf usw.

Obwohl WOL nach modprobe 3c59x enable_wol=1 funktioniert, meldet ethtool -s eth0 wol g weiterhin Operation not supported. WOL funktioniert aber trotzdem.

[Bearbeiten] Links

  1. Debian-spezifischer Artikel zu WOL
  2. Wake-On-Lan einrichten
  3. C++ Beispiel auf codeproject.com
  4. Wake on Lan for Windows (kleines Programm für WoL über Internet)
  5. Fritz!Box WoL Hack
  6. Wake On LAN client
  7. Wake-On-LAN Online (WoL über Internet)
  8. Wake-On-Lan per MagicPacket(TM) direkt über Internetseite (inkl. Routerliste & Anleitungen)