Im nächsten Schritt werden ACPI Wakeup und WOL konfiguriert und getestet.
ACPI Wakeup steuert, in meinem Fall, das Starten des PCs über die Hardware Uhr (RTC) des Mainboards. So kann der VDR nach setzen eines Timers automatisch starten und muss nicht ständig laufen. Auch wenn das den Geldbeutel schont, kommt es hin und wieder vor, dass man den VDR „wecken“ muss. Zu diesem Zweck setze ich WakeOnLan (WOL) ein. Die Konfiguration beider Funktionen beschreibe ich in diesem Artikel.
04. ACPI Wakeup und WOL
Der VDR unterstützt ja bekanntlich das setzen von Timern und damit verbundenes Aufwachen (Wakeup) des PCs. Dafür mussten bei meinem ASRock Board und auch im OS einige Anpassungen vorgenommen werden.
Anpassungen im BIOS
Im Bios musste ich folgende Einstellungen im Menu „ACPI Configuration“ tätigen:
- ACPI HPET Table -> DISABLE
- PCI Devices Power On -> ENABLE (für WakeOnLAN)
- RTC Alarm Power On -> BY OS (für VDR WakeUp)
Anpassungen im OS
Das ACPI Wakeup funktioniert zuverlässig, wenn die Hardwareuhr (RTC) auf UTC läuft. Somit hat man keine Probleme mit der Sommer- Winterzeit. Konfiguriert wird das ganze in /etc/default/rcS:
sudo nano /etc/default/rcS # Hier sind folgende Zeilen interessant und wie folgt zu editieren: # assume that the BIOS clock is set to UTC time (recommended) UTC=yes # be more verbose during the boot process VERBOSE=no # automatically repair filesystems with inconsistencies during boot FSCKFIX=no # RTC beim Runterfahren syncen HWCLOCKACCESS=yes HWCLOCKPARS="--directisa"
UTC=yes setzt die RTC auf UTC. HWCLOCKACCESS=yes sorgt dafür, dass die Zeit mit dem Bios abgeglichen wird und HWCLOCKPARS=“–directisa“ sorgt dafür, dass es beim Booten des OS keine Fehler beim setzen der Uhrzeit entstehen.
Es sollte nach einem Reboot natürlich geprüft werden, ob die RTC auch wirklich in UTC läuft.
sudo hwclock --debug hwclock von util-linux 2.20.1 Benutze /dev interface to clock. Die Hardwareuhr läuft vermutlich in UTC. Warte auf Uhrtick… … erhielt Uhrtick Zeit gelesen aus Hardwareuhr: 2013/05/13 06:56:46 Zeit der Hardwareuhr: 2013/05/13 06:56:46 = 1368428206 Sekunden seit 1969 Mo 13 Mai 2013 08:56:46 CEST -0.621170 Sekunden
Wie man hier sieht, besteht ein Zeitunterschied von 2 Stunden zwischen Hardware- und Systemzeit. Somit sind wir hier fertig.
05. Shutdown über die Konsole
Hier habe ich mir etwas die Zähne ausgebissen (und tue es eigentlich noch immer). Das Problem am Shutdown über die Konsole ist, dass eingestellte Timer nicht geschrieben werden. Somit wacht der PC auch nicht zur gewünschten Zeit auf. Das lieg darin, dass die Scripte „shutdown“, „halt“ und „poweroff“ die Timer nicht in die Datei /sys/class/rtc/rtc0/wakealarm schreiben. Abhilfe schaft das Herunterfahren des PC mit dem Befehl svdrpsend HITK Power. Das simuliert dem PC, dass die Powertaste auf der Fernbedienung gedrückt wurde. Ich habe mir ein kleines Script geschrieben und in /usr/bin/ gelegt:
cd /usr/local/bin/ sudo touch poweroffvdr.sh # nun der Inhalt svdrpsend HITK Power # Jetzt abspeichern (STRG X) sudo chmod +x poweroffvdr.sh
Damit das Scipt auch greift, wenn man in der Konsole angemeldet ist, muss der Lifeguard im Webinterface oder die lifeguard.conf so angepasst werden, dass ssh deaktiviert ist.
Als Test habe ich mal einen Timer für den 13.05.2013 um 21:08Uhr im Webinterface gesetzt.
Starten wir nun den PC mal über unser Script neu und schauen, ob danach der Timer gesetzt wurde:
sudo cat /proc/driver/rtc rtc_time : 07:23:45 rtc_date : 2013-05-13 alrm_time : 19:08:00 alrm_date : 2013-05-13 alarm_IRQ : yes alrm_pending : no update IRQ enabled : no periodic IRQ enabled : no periodic IRQ frequency : 1024 max user IRQ frequency : 64 24hr : yes ....Ausgabe gekürzt
In Zeile 2 und 4 sieht man die aktuelle UTC Zeit und die Zeit, wann der PC aufwachen wird. Nicht wundern, die Zeit ist in UTC, also zwei, bzw. eine Stunde vor der aktuellen Uhrzeit auf eurem System.