http://www.mythtv.org/wiki/ACPI_Wakeup
bin aber schon an dem Punkt "Manually test wakup" gescheitert - er fuhr zwar runter aber nicht wieder hoch *grmpff* Habe im BIOS probehalber alles eingeschaltet - aber es tat sich nix, außer einem schönen kleinen Nebeneffekt: Immer wenn ich nun den Schalter der Steckerleiste anschalte, fährt der Rechner automatisch hoch :-)
Irgendwann beim endlosen Recherchieren ("das muss doch gehen!") bin ich dann mal darauf gekommen, es mit "Standby" oder "Ruhezustand" auszuprobieren - dazu nicht mit shutdown den Rechner runterfahren, sondern mit pm-suspend bzw. pm-hibernate. Und es tat!!! Also gleich mal MythTV entsprechend dem Artikel eingerichtet.
Dumm ist nur, dass die Technotrend S2-3200 diese Modi nicht richtig unterstützt (beim Wiederhochfahren bekam das Backend keinen Lock auf irgendeinen Sender) - man muss beim hibernaten/suspenden (ich weiß, ein tolles Deutsch!) das Backend beenden und die Kernel-Module für die Karte entladen und das Ganz beim hochkommen vice versa. Dies hatte ich dann auch mit einem kleinen Skript in /usr/lib/pm-utils/sleep.d/ gelöst, welches diese Schritte enthielt und konnte selber den Rechner in den Winterschlaf schicken, er wachte zur nächsten Aufnahme auf - prima! Als ich dann allerdings probierte, dass das Backend selber entscheidet, ob es nix zu tun hat und sich dann runterfährt, blieb der Rechner mitten während des Hibernate stecken - da lief nix mehr!!! Ist im Nachhinein auch logisch, denn folgende Sachen passieren:
1. Backend entscheidet, dass es Zeit ist, herunterzufahren und ruft pm-hibernate auf.
2. pm-Hibernate ruft alle Skripte auf, die bei einem Hibernate etwas machen, darunter meins, was das Backend beenden will.
Und dabei kommt es zu einem Deadlock: Das Backend wartet darauf, das pm-hibernate sich beendet, während pm-hibernate darauf wartet, dass das Backend sich beendet. Kann ja nicht gutgehen...
Den Anfang einer Lösung habe ich hier gefunden (vielen Dank dafür!):
http://bml303.blogspot.com/2009/11/suspending-mythtv-backend.html
Hier wird vom Backend einfach nur ein Mini-Skript aufgerufen, welches ein upstart-event aufruft. Dann braucht man nur noch ein anderes Skript, was auf dieses event hin gestartet wird und das Backend beendet. Bei mir sehen die Skripte nun folgendermassen aus:
/etc/init/suspending.conf:
start on (suspending)
script
/etc/init.d/lirc stop
/etc/init.d/mysql stop
pm-hibernate
end script
/usr/lib/pm-utils/sleep.d/01mythtv:
#!/bin/bash
case "$1" in
suspend|hibernate)
;;
resume|thaw)
/etc/init.d/lirc start
/etc/init.d/mysql start
;;
*)
echo "Unhandled argument: $1"
;;
esac
/usr/bin/dosuspend.sh:
#!/bin/sh
initctl emit suspending
Zusätzlich habe ich in /etc/pm/config.d/00sleep_module die Module angegeben, die bei hibernate/suspend entladen und beim hochkommen wieder geladen werden sollen:
SUSPEND_MODULES="$SUSPEND_MODULES saa7146 budget_ci dvb-core budget-core lirc_dev lirc_i2c"
Bei den Modulen bin ich mir nicht ganz sicher, welche gebraucht werden und welche nicht, aber da es funktioniert, habe ich keinen Bock mehr, die Minimalkonfiguration herauszufinden.
Ach ja, auch sehr wichtig: über "sudo visudo" muss noch angegeben werden, welche Sachen der mythtv-User ausführen darf und da muss man alle Sachen angeben, die in den Skripten gemacht werden. Bei mir sieht die Zeile folgendermassen aus:
%mythtv ALL = NOPASSWD: /usr/bin/irexec, /usr/bin/dosuspend.sh, /usr/bin/killall, /sbin/shutdown, /bin/sh, /usr/sbin/pm-hibernate, /usr/sbin/pm-suspend, /usr/bin/setwakeup.sh, /usr/bin/mythshutdown, /sbin/rmmod, /sbin/modprobe, /etc/init.d/lirc, /etc/init.d/mysql, /bin/sleep, /usr/bin/killall
You get the idea :-D
Dann hatte ich noch das Problem, dass der Rechner zu einer Aufnahme nicht aufwachen wollte. Ich habe vermutet, dass er mit der Zeit ein Problem hatte und lasse den Zeitstempel im Bakend-Setup nicht mehr von mythshutdown setzen, sondern von setwakeup.sh (im Format time_t) -genau wie es auch im Setup von Mythwelcome steht - klappt. Bei mir sehen die Einstellungen bei Mythwelcome so aus:
Command to set wakeup time : sudo sh -c "/usr/bin/setwakeup.sh $time"
Wakeup time format : time_t
nvram-wakeup Restart command :
Command to restart : sudo shutdown -r now
Command to shutdown : sudo /usr/bin/pm-hibernate
Command to start the frontend : /usr/bin/mythfrontend
Backend-setup:
Block shutdown before client connected : unchecked
Idle shutdown timeout (secs) : 120
Max. wait for recording (min) : 15
Startup before rec. (secs) : 120
Wakeup time format : time_t
Command to set Wakeup Time : sudo sh -c "/usr/bin/setwakeup.sh $time"
Server halt command : sudo /usr/bin/dosuspend.sh
Pre Shutdown check-command : mythshutdown --check
Auf der Seite vorher
Bsckend-Leerlaufzeit vor EIT-Suche (Sek.): 120
Keine Kommentare:
Kommentar veröffentlichen