acpi-wakeup ändern

  • Hallo,


    wie viele andere auch habe ich große Schwierigkeiten mit den Scripten aus dem Wiki für ACPI-Wakeup. Ich h abe stundenlang probiert (und gewartet), die Biester wollten einfach nicht aufwachen, was ich auch geändert habe. Dann bin ich auf "rtcwake" gestoßen, und es klappt bei beiden VDR-PC's auf Anhieb.


    Das Script /usr/share/vdr/shutdown-hooks/S90.acpiwakeup ist hoffnungslos veraltet.


    1. Wer hat heute noch einen Kernel 2.6.22 bzw. 2.6.23 oder so? Inzwichen sind wir bei 4.0.x. Die Abfrage ist überflüssig.
    2. Das Schreiben der Aufwachzeit in /sys/class/rtc/rtc0/wakealarm funktioniert nicht zuverlässig, wie man sehen kann.


    Meine Idee wäre, das ganze Shutdown des VDR umzuschreiben unter Verwendung von rtcwake. Siehe https://wiki.ubuntuusers.de/rtcwake/


    Man kann die Uhrzeit etc. übergeben wie in dem Shutdown-Hook. Ich würde gern das Script ändern, durchschaue aber die Logik nicht ganz und kann auch nicht programmieren ;( .
    Vielleicht könnte sich jemand mit mehr Erfahrung dieses Problems annehmen, evtl. auch Herr T. Grimm.


    Ich würde mich sehr über Ideen freuen, auch über Hinweise, wie das Setzen des Timers in den VDR eingebunden ist. :] Z. B. welches Programm (/sbin/shutdown??) fährt den VDR und/oder den PC herunter und mit welchen Parametern.
    Danke
    GBruno

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von GBruno ()

  • Ich würde mich sehr über Ideen freuen, auch über Hinweise, wie das Setzen des Timers in den VDR eingebunden ist. Z. B. welches Progarmm fährt den VDR und/oder den PC herunter und mit welchen Parametern.

    Bei den VDR-Paketen für Debian und Ubuntu ist das folgendermaßen gelöst:
    Der VDR bekommt den Shutdownwrapper als Shutdown-Programm übergeben (gemäß https://projects.vdr-developer…vdr.git/tree/INSTALL#n193 ): --shutdown=/usr/lib/vdr/vdr-shutdown.wrapper
    Der vdr-shutdown.wapper ist ein in C-Geschriebenes Programm (vgl. https://github.com/flensrocker…an/vdr-shutdown-wrapper.c), bei dem vom Paket bei der Installation das Setuid-Bit gesetzt wird (https://github.com/flensrocker…/debian/vdr.postinst#L100), d.h. das Programm darf vom User vdr ausgeführt werden, läuft aber selbst mit root-Rechten. Diese Programm ruft dann /usr/lib/vdr/vdr-shutdown auf und übergibt ihm alle Argumente, die es vom VDR bekommen hat.
    vdr-shutdown durchläuft dann die Shutdown-Hooks (vgl. https://github.com/flensrocker…debian/README.Debian#L145 ) und ruft damit auch die Skripte von acpiwakeup auf. Wenn die Shutdown-Hooks durchgelaufen sind, ohne dass eines der Skripte einen Exit-Code > 0 generiert hat, wird das SHUTDOWNCMD ausgeführt, das dann den Rechner herunterfährt.


    Eigentlich (TM) sollte das so immer noch funktionieren (zumindest tut es das unter yaVDR).


    2. Das Schreiben der Aufwachzeit in /sys/class/rtc/rtc0/wakealarm funktioniert nicht zuverlässig, wie man sehen kann.

    Was sind die genauen Bedingungen, unter denen es nicht funktioniert? Der Timer muss weiter in der Zukunft liegen als die Brückenzeit zwischen den Timern des VDR (http://vdr-wiki.de/wiki/index.php/Benutzerhandbuch#Sonstiges) und der VDR muss den Shutdown initiieren, wenn man das System am VDR vorbei herunterfährt, werden die Skripte nicht durchlaufen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo seahawk,


    Danke für die schnelle Antwort :] . Deine Links muss ich mir erst einmal in Ruhe ansehen.


    Zitat

    2. Das Schreiben der Aufwachzeit in /sys/class/rtc/rtc0/wakealarm funktioniert nicht zuverlässig, wie man sehen kann.

    Da habe ich mich mal wieder unklar ausgedrückt: das Schreiben geht schon, wenn man root-Rechte hat, aber das Aufwachen klappt nicht, da kann ich machen, was ich will. Es liegt wohl daran, dass kein alarm-IRQ gesetzt wird, habe ich den verschiedenen Beiträgen zu dem Thema entnommen. Bei manchen klappt es, bei mir nicht!


    Ich habe ein relativ neues Mainboard (2012), das wohl noch nicht getestet wurde.
    Ich habe übrigens mal versuchsweise das Script als sh-Datei laufen lassen: da gibt es 2 Fehlermeldungen, wenn keine Aufwachzeit gesetzt ist, und zwar in den Zeilen:

    Code
    1. if [ $TIMER -eq 0 ] || [ $TIMER -gt 0 -a $REGULAR_TIMER -lt $TIMER ] ; then


    und

    Code
    1. if [ $MIN_START_AHEAD -gt $TIMER ]; then


    Da wird -eq und -gt angemeckert. Ist das veraltet, oder was ist der Grund?
    Kannst Du mir konkret sagen, in welchem Format die Aufwachzeit an das S90.acpiwakeup übergeben wird?
    Aber erstmal Danke, ich melde mich wieder, oder Du, wenn Dir noch etwas einfällt.

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

  • Ich habe übrigens mal versuchsweise das Script als sh-Datei laufen lassen: da gibt es 2 Fehlermeldungen, wenn keine Aufwachzeit gesetzt ist [...]

    Da wird -eq und -gt angemeckert. Ist das veraltet, oder was ist der Grund?

    Du hast das Skript vermutlich ohne Argumente aufgerufen, dann gibt es keine Zahlen zum Vergleichen...

    Kannst Du mir konkret sagen, in welchem Format die Aufwachzeit an das S90.acpiwakeup übergeben wird?


    Das wird in https://projects.vdr-developer…vdr.git/tree/INSTALL#n193 genau beschrieben - falls es keinen Aufweckzeitpunkt gibt und der Benutzer den Shutdown ausgelöst hat, liefert der VDR so etwas an das Skript (die doppelten Anführungszeichen symbolisieren einen leeren String):

    Code
    1. 0 0 0 "" 1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke!


    Aber ich verstehe es nicht so ganz.


    Code
    1. The first one is the time (in UTC) of the next timer event or plugin wakeup
    2. time (as a time_t type number) ...


    Ich wollte eigentlich wissen, wie der Datum-String aussieht: z. B. dd-mm-yyyy-hh:MM:ss (02-06-2016-20:15:00) oder (wie bei dem date-Befehl mmddHHMM (ohne Jahr und Sekunde) (06022015) oder anders. Hängt das von der
    time_t type number ab? Und wo finde ich die mit Legende? In vdr.c ist sie nicht. Leider habe ich auf meinem Arbeitszimmer-PC kein VDR-ACPI-addon, kann es auch nicht installieren, weil es in Synaptic nicht auftaucht. ;( So kann ich es hier nicht testen, und im Wohnzimmer ist es viel zu unbequem wegen der Sitzhaltung. Bitte um Verständnis.

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

  • Das ist ein ganz normaler Unix-Timestamp (vgl. z.B. http://www.cplusplus.com/reference/ctime/time_t/ also Sekunden seit 1.1.1970 00:00 UTC) - den kann man z.B. so für einen Zeitpunkt 30 Minuten in der Zukunft erzeugen:

    Code
    1. date -d "now + 30 min" +%s

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Vielen Dank! Das ist ja prima. :] Dann kann ich den Wert direkt mit dem Parameter -t / --time an rtcwake übergeben. Die ganze umständliche Mimik mit der Umwandlung braucht man dann nicht. Ich werde es heute gleich probieren und hoffe, dass es klappt.
    Grüße


    GBruno

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

  • Hallo,


    jetzt habe ich den ganzen Vormittag gebastelt und ein Script geschrieben. Schwierig, wenn man sich mit der Syntax nicht auskennt.


    Ich teste es mit

    Code
    1. A_S90.acpiwakeup.modifiziert (mein provisorischer Dateiname) $(date -d "now + 30 min" +%s)

    , wie Du vorgeschlagen hast
    wobei ich die Datumszahl mit date -d +%s ermittle.
    Es läuft noch nicht richtig, gibt keine Aufwachzeit aus :wand , jedenfalls nicht ohne laufenden VDR. Ich werde es heute nachmittag mal am lebenden Objekt testen. Erstmal bin ich müde. :sleep


    Grüße
    GBruno

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von GBruno ()

  • Hallo seahawk,


    Hier mein geändertes Script, das im "Trockenen" macht, was es soll:



    Aufruf mit den Parametern $(date -d "now + 30 min" +%s), wie erwähnt. Morgen werde ich es in meinen Wohnzimmer-PC einbauen, mal sehen, was passiert.
    Nochmal vielen Dank für Deine Hilfe!!
    GBruno

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von GBruno ()

  • Hallo seahawk,


    es hat einige Zeit gedauert, und ich habe nach der Vorlage von einem Wiki: http://www.vdr-wiki.de/wiki/index.php/Debian_-_ACPI_Wakeup_mit_sysvinit_oder_systemd
    (hat einige Fehler :( ) ein neues Script erstellt:



    Weil es erst lange nicht funktionierte, lasse ich alle wichtigen Ausgaben des Scripts in eine log-Datei schreiben, wie man sieht. Die sieht dann ungefähr so aus:


    Das Feature mit der "Regular Time" habe ich weggelassen. Ich brauche es nicht, außerdem war es sehr fehlerhaft. Bei mir läuft es mit UTC-Zeit und nur einem Timer. Mit local time und/oder mehreren Timern habe ich es noch nicht probiert. Das ist alles sehr aufwändig. Wenn jemand eigene Erfahrungen hat, würde ich mich freuen, wenn er sie hier mitteilen würde. Das Script ist halt noch lange nicht fertig. Die Log-Datei wird natürlich sehr lang, wenn es läuft, kann man ja einiges deaktivieren, v. a. den Parameter -v beim rtcwake-Befehl.
    Grüße
    GBruno

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

    Dieser Beitrag wurde bereits 4 Mal editiert, zuletzt von GBruno ()

  • Bei den Kommentaren für die Argumente ab $3 bist du etwas durcheinander gekommen:

    Code
    1. # $3 : Next timer title
    2. # $4 : Shutdown forced


    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Sorry, ich habe das unbesehen aus dem Script auf der genannten Wiki-Seite übernommen. Ich denke aber, dass das nichts macht, weil sowieso nur der erste Parameter $1 ausgewertet wird, in manchen Scripts (ich habe eine Menge gelesen) auch der zweite $2.
    Um Klarheit zu haben, lasse ich ja alle Parameter in meine Log-Datei ausgeben. Da hätte es mir auffallen müssen:

    Code
    1. Argumente: $1: 1465844100 $2: 1676 $3: 4 $4: HISTOIRES D'ARBRES-EP03 $5: 0


    Hast Du es vielleicht mal getestet? Oder hast Du ein besseres Script, das funktioniert?
    MfG
    GBruno

    Hardware:
    Desktop: Intel Core i5, 4x3,2 GHz, ASUS-Mainboard HL 97 plus, Festplatte Hybrid-S-ATA 2TB, 16 GB RAM, Haupaugge WinTV HVR 1100 (DVB-T), LG-4120B Brenner, VDR 2.0.3 von Ubuntu 14.04.1),
    Wohnzimmer: ASUS-Mainboard F2A85-V Pro, AMD A10 (?), 1T B-HD, 8 GB Speicher, Technotrend 4100 Budget (DVB-S), Prozessor-Grafik HD7660D, VDR 2.0.3 von XUbuntu 14.04.1).

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von GBruno ()