Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Wheezy

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Yoga
Beiträge: 5
Registriert: 22.02.2013 11:16:47

Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Wheezy

Beitrag von Yoga » 22.02.2013 11:42:12

Hallo liebe Debian-Gemeinde.

Ich versuche seit einigen Wochen den Umstieg von Windows XP auf ein freies Betriebssystem zu schaffen und habe mich für eine Debian Live CD (Wheezy) entschieden, mit der ich eifrig Hardware etc. teste, um zu schauen, ob möglichst viele angeschlossene Geräte funktionieren. Zunächst war ich an erster Stelle schon erstaunt, wieviel da "out-of-the-box" ohne Installation sofort läuft.

Eine Sache bereitet mir aber Kopfzerbrechen: Wake on LAN.

Meinem Verständnis nach sollte das auch funktionieren, wenn ich von einer LiveCD boote und dann im laufenden Live-System lediglich:

Code: Alles auswählen

sudo pm-suspend
ausführe und anschließend von meiner FritzBox aus das Wecksignal schicke. Da dies unter (einem installierten) Windows XP einwandfrei immer funktionierte, kann es also weder an der Hardwareunterstützung noch an einer BIOS-Einstellung liegen.

Suspend funktioniert als solches einwandfrei. Der PC lässt sich auch problemlos durch Tastendruck an USB-Maus und USB-Tastatur wecken. Ich habe folgende Schritte unternommen, um Debian WOL-fähig zu machen:

Code: Alles auswählen

sudo aptitude install ethtool
sudo ethtool -s eth0 wol g
Beide Befehle scheinen problemlos zu laufen (keine Fehlermeldung).
Prüfe ich die Einstellungen mit

Code: Alles auswählen

sudo ethtool eth0
so erscheint:

Code: Alles auswählen

Supports Wake-on: pg
Wake-on: g
Leider hilft dieser Schritt auch nicht. Nach vielen Recherchen im Internet habe ich auch alle Adapter, die in /proc/acpi/wakeup gelistet sind auf enabled gesetzt. Auch das ändert nichts an der Tatsache.
Was mich irritiert ist, dass in /proc/acpi/wakeup sämtliche Geräte auf den Sleep-State S4 gesetzt sind, was doch für hibernation (suspend to disk) steht, was für eine LiveCD ja (zumindest sicher nicht ohne Weiteres) nicht wirklich "sinnvoll" ist.

Ich besitze ein ASUS Mainboard (genaue Typbezeichnung, wenn nötig, müsste ich noch nachschlagen) und eine Onboard-Netzwerkkarte: Marvel Yukon Ethernet Adapter. Der von Debian verwendete Netzwerktreiber heißt sky2.

Ich würde mich sehr freuen, wenn jemand eine Idee hätte, wie ich der Sache auf die Spur kommen könnte.
Yoga.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von syssi » 22.02.2013 12:20:21

Es waere noch interessant, wer deine Netzwerkkarte managt. Wird die Karte ueber die /etc/network/interfaces konfiguriert oder nutzt du den Network-Manager? Jenachdem solltest du einmal unter /usr/lib/pm-utils/sleep.d schauen, was alles ausgefuehrt wird, wenn sich dein Geraet schlafen liegt. Gefaehrlich ist, wenn dort die Konfiguration der Netzwerkkarte verworfen wird.

Aehnliches passiert, wenn man den Rechner herunterfaehrt. Dabei sorgt /etc/init.d/halt dafuer, dass die Netzwerkkarte beim hunterfahren deaktiviert wird. Moechte man anschliessend aber (im Standby) auf magische Pakete lauschen, dann sollte die Netzwerkkarte weiterhin aktiv bleiben. Dies erreicht man, indem man "NETDOWN=no" in der /etc/default/halt hinzufuegt.

Gruss syssi

Yoga
Beiträge: 5
Registriert: 22.02.2013 11:16:47

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von Yoga » 22.02.2013 17:04:49

Ich benutze bisher den Network-Manager, der auch recht gut funktioniert.
Ich könnte aber auch auf /etc/network/interfaces umsteigen, wenn der NetworkManager Probleme verursachen sollte.

Wenn ich in das sleep.d Verzeichnis wechsle

Code: Alles auswählen

cd /usr/lib/pm-utils/sleep.d/
ls
erscheinen folgende Skripts

Code: Alles auswählen

000kernel-change
55NetworkManager
90clock
98video-quirk-db-handler
00logging
60_wpa_supplicant
94cpufreq
99video
00powersave
75modules
95led
Nun bin ich noch recht neu, was Linux angeht, was bedeuten die Zahlen am Beginn des Skriptnamens und wo sollte ich am besten nachschauen? Eine verdächtige Datei wäre ja z.B.

Code: Alles auswählen

cat 55NetworkManager
mit folgendem Inhalt:

Code: Alles auswählen

#!/bin/sh
# If we are running NetworkManager, tell it we are going to sleep.
# TODO: Make NetworkManager smarter about how to handle sleep/resume
#       If we are asleep for less time than it takes for TCP to reset a
#       connection, and we are assigned the same IP on resume, we should
#       not break established connections.  Apple can do this, and it is
#       rather nifty.

. "${PM_FUNCTIONS}"

suspend_nm()
{
        # Tell NetworkManager to shut down networking
        printf "Having NetworkManager put all interaces to sleep..."
        dbus_send --print-reply --system                         \
                --dest=org.freedesktop.NetworkManager  \
                /org/freedesktop/NetworkManager        \
                org.freedesktop.NetworkManager.sleep && \
            echo Done. || echo Failed.
}

resume_nm()
{
        # Wake up NetworkManager and make it do a new connection
        printf "Having NetworkManager wake interfaces back up..."
        dbus_send --print-reply --system                        \
                --dest=org.freedesktop.NetworkManager \
                /org/freedesktop/NetworkManager       \
                org.freedesktop.NetworkManager.wake && \
            echo Done. || echo Failed.
}

case "$1" in
        hibernate|suspend)
                suspend_nm
                ;;
        thaw|resume)
                resume_nm
                ;;
        *) exit $NA
                ;;
esac
Oder

Code: Alles auswählen

cat 00powersave
zeigt:

Code: Alles auswählen

#!/bin/sh

. "${PM_FUNCTIONS}"

command_exists pm-powersave || exit $NA

case $1 in
    suspend|hibernate) pm-powersave false ;;
    resume|thaw)       pm-powersave ;;
    *) exit $NA ;;
esac
exit 0
sowie

Code: Alles auswählen

cat 75modules 
#!/bin/sh
# Unload requested modules.

. "${PM_FUNCTIONS}"

suspend_modules()
{
        [ -z "$SUSPEND_MODULES" ] && return $NA
        for x in $SUSPEND_MODULES ; do
                printf "Unloading kernel module %s..." "$x"
                modunload $x && echo Done. || echo Failed.
        done
        return 0
}

resume_modules()
{
        modreload
        echo "Reloaded unloaded modules."
}

case "$1" in
        hibernate|suspend)
                suspend_modules
                ;;
        thaw|resume)
                resume_modules
                ;;
        *) exit $NA
                ;;
esac
Ich kann leider mit den ganzen Prozeduren nicht allzu viel anfangen. Ist dort irgendwas Relevantes enthalten?

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von syssi » 22.02.2013 17:25:13

Die Zahl sorgt lediglich dafuer, dass die Scripts ein einer definierten Reihenfolge abgearbeitet werden. Ob der Network-Manager die Ursache des Problems ist, kann ich nicht sagen. Einmal testweise auf /etc/network/interfaces umsteigen sollte nicht schaden. Wenn sich die Umgebung deines PCs nie aendert, dann wuerde ich es sogar dabei belassen. Nach der Deinstallation vom NetworkManager verschwindet auch das Skript aus dem pm-utils-Verzeichnis.

Das Programm "pm-powersave" kannst du einfach mal als Root in der Konsole aufrufen. 00powersave macht nichts anderes. Schau einfach, was es ausgibt und ob deine Netzwerkkarte irgendwie vom Stromsparen betroffen ist. Ich glaube nicht.

Manchmal legt man im Verzeichnis /etc/pm/sleep.d/ eine Blacklist-Daten an, in welche man boese Module schreibt, welche das Einschlafen oder Aufwachen stoeren. Diese werden mit Hilfe des Skripts (75modules) daraufhin entladen und beim aufwachen wieder geladen. Auf diese Weise versucht man Probleme zu umschiffen. Per Default tut das Skript glaube ich sogut wie nichts.

Gruss syssi

Yoga
Beiträge: 5
Registriert: 22.02.2013 11:16:47

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von Yoga » 25.02.2013 13:57:21

Nach dem Aufruf von

Code: Alles auswählen

sudo aptitude remove network-manager
verschwindet zwar der Network Manager aus der Taskleiste. Das Skript 55NetworkManager war dennoch weiterhin zu finden. Ich habe es daraufhin testweise manuell gelöscht.
Wenn ich den PC nun in den Standby schicke, kommt er automatisch nach 8 Sekunden wieder (laut /var/log/pm-suspend)

Um herauszufinden, welches Gerät dieses eigenartige Verhalten verursacht, habe ich nacheinander alle Geräte in /proc/acpi/wakeup wieder auf disabled gesetzt, bis auf das Gerät, dass angeblich Teil meiner Netzwerkkarte ist (pci:0000:00:1c.1).
P0P1 S4 *disabled pci:0000:00:01.0
P0P3 S4 *disabled pci:0000:00:1e.0
P0P4 S4 *disabled pci:0000:00:1c.0
P0P5 S4 *enabled pci:0000:00:1c.1
P0P6 S4 *disabled
P0P7 S4 *disabled
PS2K S4 *disabled pnp:00:0a
PS2M S4 *disabled pnp:00:0b
UAR1 S4 *disabled pnp:00:0d
USB1 S4 *disabled pci:0000:00:1d.0
USB2 S4 *disabled pci:0000:00:1d.1
USB3 S4 *disabled pci:0000:00:1d.2
USB4 S4 *disabled pci:0000:00:1d.3
EUSB S4 *disabled pci:0000:00:1d.7
MC97 S4 *disabled
Beim disable von EUSB bleibt der PC im Suspend, wacht aber immer noch nicht durch ein Magic Paket wieder auf :(

Wie genau rufe ich

Code: Alles auswählen

pm-powersave
auf? Aus der Hilfe selbst werde ich nicht wirklich schlau.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von syssi » 25.02.2013 15:17:52

Als Root in der Console. Es klappert seine Konfiguration durch und macht diverse Einstellungen. Beim Aufruf ist es sehr bespraechig, so dass man nachvollziehen kann, was es tut.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von rendegast » 25.02.2013 15:21:04

mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Yoga
Beiträge: 5
Registriert: 22.02.2013 11:16:47

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von Yoga » 25.02.2013 16:18:35

D.h. ich sollte die Datei wiederherstellen?
Als Root in der Console. Es klappert seine Konfiguration durch und macht diverse Einstellungen. Beim Aufruf ist es sehr bespraechig, so dass man nachvollziehen kann, was es tut.
Hmm.. gebe ich

Code: Alles auswählen

sudo pm-powersave
ein, so erscheint gar nichts (auch keine Fehlermeldung). Aus

Code: Alles auswählen

sudo pm-powersave --help
werde ich auch nicht so recht schlau. Gibt es sowas wie einen verbose-Modus?

Vielen Dank,
Yoga.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von syssi » 25.02.2013 16:56:32

"pm-powersave --help" ist der Verbose-Mode. ;-)

Yoga
Beiträge: 5
Registriert: 22.02.2013 11:16:47

Re: Wake on Lan (WOL) aus Suspend to RAM (S3) mit Debian Whe

Beitrag von Yoga » 26.02.2013 14:51:32

Das ist die Ausgabe:

Code: Alles auswählen

$sudo pm-powersave --help
/usr/sbin/pm-powersave: Valid options are:
false or ac = turn powersaving features off.
true or battery = turn powersaving features on.
help = get detailed help.

You can get more detailed information by running pm-powersave --help
--------
/usr/lib/pm-utils/power.d/intel-audio-powersave: Intel Audio powersave parameters.

This hook has 1 tuneable parameter. 
INTEL_AUDIO_POWERSAVE = controls whether we will try to save power on battery.
Defaults to true.

--------
/usr/lib/pm-utils/power.d/laptop-mode: Laptop mode tuning parameters.
This hook controls how agressive the system is at trying to avoid
writing to disk.  The longer the disk is idle, the more power you can save.

This hook is only active on battery power, and it restores these values
to kernel defaults when on AC power.

It has 4 tuneable parameters: 
LAPTOP_MODE = value for laptop_mode on battery.
Defaults to 5, which enables laptop mode and forces the system to wait 
5 seconds whenever something asks to write to disk to flush out as much
data as we can.

LAPTOP_DIRTY_RATIO = the ratio of dirty memory to all memory that 
processes start doing their own writeout.  
Defaults to 60, which means that the kernel will not start forcing process
to write out file information that has been changed but not saved until 60%
of usable system memory is filled with dirty information.

LAPTOP_DIRTY_BG_RATIO = The ratio of dirty memory to all memory that 
pdflush will wake up and start writing to disk.  
Defaults to 40, which means that the kernel will wake up a helper process
to try and write out dirty memory once 40% of usable system memory is dirty.

LAPTOP_DIRTY_WRITEBACK = The number of centiseconds between periodic
wakeups of the pdflush daemons.  
Defaults to 60000 (10 minutes), which menas that the kernel will flush dirty
memory every 10 minutes if dirty memory never hits 40% of system memory.

/usr/lib/pm-utils/power.d/sata_alpm: SATA link power management

This hook tries to save power by allowing SATA controllers to
reduce power usage when the SATA subsystem is otherwise idle.

This adds a little bit of latency to drive accesses in
exchange for moderate power savings if you are not using the drive.

This hook has 1 parameter:
SATA_ALPM_ENABLE = whether to use SATA ALPM on battery.
Defaults to "false".

Antworten