Reboot-Problem mit nvram-wakeup bei mehr als einem Timer

  • Ich habe ein Reboot-Problem mit nvram-wakeup.
    Bemerken möchte ich noch, dass ich die die Werte für mein Asus CUBX Board
    selber bestimmt habe, da diese noch nicht in nvram-wakeup 0.90 vorhanden waren.
    Mit dem neuen nvram-wakeup 0.91 habe ich das gleiche Verhalten.
    Da nach mehreren Tests mein Board nur dann aufwacht wenn zuvor ein reboot
    in den Poweroff-Kernel geschieht, habe ich b->need_reboot = ALWAYS;
    gesetzt.
    Wenn ich eine Aufnahme programmiere und den Rechner herunterfahre (mit Poweroff
    im VDR manuell ausgelöst) funktioniert alles wie erwartet:


    Der Timer wird gesetzt, nvram-wakeup gibt eine 1 zurück worauf
    das vdrshutdown-Skript einen reboot veranlaßt und der Rechner
    mit dem Poweroff-Kernel ausgeschaltet wird. Ist alles soweit wie gewünscht.
    Der Rechner startet dann auch zur eingestellten Zeit und macht die Aufnahme.


    Das Problem tritt auf, wenn mehr als eine Timer-Aufnahme programmiert ist.
    In diesem Fall läuft die 1.Aufnahme wie erwartet und oben beschrieben.
    Wenn die 1.Aufnahme aber fertig ist, fährt der Rechner ja nun automatisch
    wieder runter, doch nun gibt nvram-wakeup eine 0 (!) zurück, woraufhin nur
    ein halt ausgeführt wird und der Rechner NICHT wieder aufwacht zur 2.Aufnahme.


    Ich habe zur Überprüfung im vdrshutdown-Skript die Übergabeparameter
    in eine Logdatei geschieben und festgestellt, das die 2.Timeraufnahme
    mit allen Parametern korrekt übergeben wird.
    Aber warum denkt nvram-wakeup scheinbar, dass kein Reboot erforderlich ist ???
    Der Rechner verhält sich scheinbar wo als hätte ich b->need_reboot = ON_STAT;
    gesetzt, es ist aber definitiv b->need_reboot = ALWAYS; gesetzt worden.


    Natürlich könnte ich vdrshutdown so abändern, dass immer ein Reboot
    gemacht wird, aber das ist ja nicht der Sinn der Sache.
    nvram-wakeup soll bitte dann auch eine 1 zurückgeben wenn noch ein
    weiterer Timer programmiert ist.


    Da ich mit Linux noch nicht so fit bin würde ich die Ausgaben die
    nvram-wakeup auf die Konsole scheibt gerne zur Kontrolle in eine Logdatei
    schreiben. Wie geht das ?
    Versuche mit der Zeile
    $NVRAMCMD -ls $1 | tee --append /var/log/vdrshutdown.log
    haben leider nicht funktioniert.


    Gruss,
    Gromit

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • Hi Gromit,


    probiers mal mit:


    "$NVRAMCMD -ls $1 > /var/log/vdrshutdown.log 2>&1"


    damit sollte standart output and standart error in die angegebene Datei geschrieben werden.


    Bye
    John


    • VDR#1: CoolerMaster ATX-620, MR Fortron 350 Watt ichbinleise®, FSC 1562, Celeron 2GHz, 256 MB, HD400LD, silentmaxx HD-silencer, LG GSA-4160B, Nexus-S, IR rev.4 von hirc, One-For-All URC-7040, Debian Etch, vdr 1.6.0-8ctvdr1

    • VDR#2: passiv Gehäuse von Hewlett600, VIA MII-12000, 256 MB, HD400LD, TT 1.5, One-For-All URC-7040, Debian Etch, vdr 1.6.0-8ctvdr1

  • Danke für den Hinweis.
    Mit --debug wird nvram etwas gesprächiger. Unter /var/log/message.log
    finde ich folgende Zeilen. Obwohl ich need_reboot mit -1 (ALWAYS) angegeben habe
    sagt nvram in der letzten Zeile need_reboot: 0


    Weiß jemand Rat ?
    Wie sieht das auf anderen Systemen aus die immer einen Reboot brauchen wenn
    nach der 1.Aufnahme ein zweiter Timer gesetzt werden soll ????
    Gibt nvram dort eine 1 zurück (würde ich mal so erwarten...) ???


    Gruss.....Gromit




    Aug 27 15:25:02 linux nvram-wakeup[1625]: Opening /dev/mem in O_RDONLY mode...
    Aug 27 15:25:02 linux nvram-wakeup[1625]: _DMI_ table found: base: 0xF1F60, size: 0x546, count: 45
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Following DMI entries found:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: - Mainboard vendor: ASUSTeK Computer INC.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: - Mainboard type: <CUBX>
    Aug 27 15:25:02 linux nvram-wakeup[1625]: - Mainboard revision: REV 1.xx
    Aug 27 15:25:02 linux nvram-wakeup[1625]: - BIOS vendor: Award Software, Inc.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: - BIOS version: ASUS CUBX ACPI BIOS Revision 1008B4 (Tualatin) CMD 1.9.16
    Aug 27 15:25:02 linux nvram-wakeup[1625]: - BIOS release: 10/15/2001
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Using following bios info:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: need_reboot = -1
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_chk_h = 0x6C
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_chk_l = 0x6D
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_chk_h2 = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_chk_l2 = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_stat = 0x56
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_mon = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_date = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_wdays = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_hour = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_min = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: addr_sec = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_stat = 4
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_mon = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_date = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_wdays = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_hour = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_min = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: shift_sec = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc_time = 1
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc_date = 0x7F
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc_mon = 0x00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc_date_0_is_c0 = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc_mon_0_is_c0 = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: reset_date = 1
    Aug 27 15:25:02 linux nvram-wakeup[1625]: reset_mon = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_stat = 1
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_mon = 4
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_date = 5
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_hour = 5
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_min = 6
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_sec = 6
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_rtc_date = 6
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_rtc_mon = 5
    Aug 27 15:25:02 linux nvram-wakeup[1625]: nr_wdays = 7
    Aug 27 15:25:02 linux nvram-wakeup[1625]: bcd = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: date_no_chk = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: date_hack = 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Opening /dev/rtc in O_RDONLY mode...
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Hardware clock: 2003-08-27 15:25:02
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc.tm_isdst : 1
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtc.tm_gmtoff: 7200
    Aug 27 15:25:02 linux nvram-wakeup[1625]: diff : 0
    Aug 27 15:25:02 linux nvram-wakeup[1625]: RTC is running in localtime!
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Test (this should be the current time of the hardware clock): Wed Aug 27 15:25:02 2003
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Opening /dev/nvram in O_RDONLY mode...
    Aug 27 15:25:02 linux kernel: Non-volatile memory driver v1.2
    Aug 27 15:25:02 linux nvram-wakeup[1625]: The size of /dev/nvram is 128 bytes.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: value of the addr_stat byte is: 0x17.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: value of the rtc_date byte is: 0xA7.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: value of the addr_chk_h byte is: 0x08.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: value of the addr_chk_l byte is: 0x67.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Opening /dev/rtc in O_RDONLY mode...
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Checksum is: 0x0867.
    Aug 27 15:25:02 linux nvram-wakeup[1625]:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: All values are displayed as they are stored in the nvram/rtc.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: (and do not correspond necessarily to the system date/time)
    Aug 27 15:25:02 linux nvram-wakeup[1625]:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: WakeUp : Enabled (0x17)
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtcDate : 27 (0xA7)
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtcHour : 13
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtcMin : 39
    Aug 27 15:25:02 linux nvram-wakeup[1625]: rtcSec : 00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Checksum: 0x0867
    Aug 27 15:25:02 linux nvram-wakeup[1625]:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Enabling (0x17) WakeUp-on-RTC in nvram.
    Aug 27 15:25:02 linux nvram-wakeup[1625]: New rtcDate : 27 (0xA7)
    Aug 27 15:25:02 linux nvram-wakeup[1625]: New rtcHour : 20
    Aug 27 15:25:02 linux nvram-wakeup[1625]: New rtcMin : 09
    Aug 27 15:25:02 linux nvram-wakeup[1625]: New rtcSec : 00
    Aug 27 15:25:02 linux nvram-wakeup[1625]: New Checksum: 0x0867
    Aug 27 15:25:02 linux nvram-wakeup[1625]:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: RTC time is changed. Setting RTC alarm into /dev/rtc
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Setting RTC alarm into /dev/rtc...
    Aug 27 15:25:02 linux nvram-wakeup[1625]:
    Aug 27 15:25:02 linux nvram-wakeup[1625]: Opening /dev/rtc in O_RDONLY mode...
    Aug 27 15:25:02 linux nvram-wakeup[1625]: need_reboot: 0 ?(?(

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • Zitat

    Original von John Difool
    probiers mal mit:


    "$NVRAMCMD -ls $1 > /var/log/vdrshutdown.log 2>&1"


    damit sollte standart output and standart error in die angegebene Datei geschrieben werden.


    nein. d.h. ja.


    wegen der -l Option wird jedoch nichts nach standart output und standart error geschrieben.
    alles geht in die System-Logdatei (normalerweise /var/log/messages).

  • Zitat

    Original von gromit


    Code
    1. ...
    2. Aug 27 15:25:02 linux nvram-wakeup[1625]: need_reboot = -1
    3. ...
    4. Aug 27 15:25:02 linux nvram-wakeup[1625]:
    5. Aug 27 15:25:02 linux nvram-wakeup[1625]: RTC time is changed. Setting RTC alarm into /dev/rtc
    6. Aug 27 15:25:02 linux nvram-wakeup[1625]: Setting RTC alarm into /dev/rtc...
    7. Aug 27 15:25:02 linux nvram-wakeup[1625]:
    8. Aug 27 15:25:02 linux nvram-wakeup[1625]: Opening /dev/rtc in O_RDONLY mode...
    9. Aug 27 15:25:02 linux nvram-wakeup[1625]: need_reboot: 0
    10. ...


    aha. da haben wir das Problem. Da sich nur die Uhrzeit geaendert hat, die in deinem Fall
    via /dev/rtc geschrieben wird, haelt nvram-wakeup einen reboot nicht fuer noetig. (was ich natuerlich aendern kann)


    die Frage ist die folgende:
    Brauchst du einen Reboot, weil sonst die Wakeup Zeiten nicht uebernommen werden,

    • Brauchst du einen Reboot, weil sonst die Wakeup Zeiten nicht uebernommen werden,
    • oder Brauchst du einen Reboot, da nach einem shutdown -h der Rechner gar nicht aufwacht?


    um das zu testen mach doch bitte folgendes:

    • programmiere einen Timer. Fahre mit VDR's PowerOff runter. (der Rechner sollte rebooten und ausgehen).
    • mach den Rechner selbst an, lass ihn hoch fahren, schau etwas fern (ein paar sekunden reichen). Fahre mit VDR's PowerOff runter. (diesmal sollte er keinen reboot machen, da sich nichts geaendert hat.)
    • nun warte bis der rechner fuer den Timer angehen sollte. -- Geht der Rechner an oder nicht?
  • Hi,
    habe es getestet und der Rechner wacht nicht mehr auf,
    es trifft also Deine 2. Vermutung zu.


    Offensichtlich funktioniert das Aufwachen bei mir *nie* wenn
    mit shutdown -h now ein halt ausgeführt wird, sondern
    nur wenn mit shutdown -r now ein reboot ausgeführt und der
    Poweroff-Kernel den Rechner ausschaltet.


    Habe zur Kontrolle mal ins Bios geschaut, dort ist Tag und Uhrzeit
    richtig eingestellt gewesen, das Schreiben ins nvram bzw. rtc hat
    also geklappt.


    Bei mir muß also immer wenn ein Timer übergeben wird, ein
    reboot ausgeführt werden und nur wenn kein Timer vorhanden ist
    darf ein halt ausgeführt werden.
     ;)


    Beste Grüße,
    Gromit...

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • Nun... auf die Idee bin ich auch schon gekommen, es funktioniert dann
    auch wie gewünscht.
    Nur finde ich die Lösung etwas unschön, ist es nicht
    vielleicht eventuell möglich dies in nvram-wakeup aufzunehmen ??? *fragendguck* ?(


    z.B. Als zusätzliche Option need_reboot=ALWAYS_WHEN_TIMER
    beim Kompilieren und dann im Coding entsprechend abfragen:


    if( TIMER && (b.need_reboot == ALWAYS_WHEN_TIMER) )
    need_reboot = b.need_reboot;


    an der richtigen Stelle sollte es gewesen sein. Die Abfrage ob ein Timer übergeben wurde hab ich jetzt nicht auswendig im Kopf, deshalb muß TIMER natürlich noch ersetzt werden.


    Was meinst Du, ist das machbar ? ;)



    Gruß,
    Gromit...

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • Möglicherweise haben ja noch andere dieses Problem mit dem shutdown -h, diese könnten dann die neue Option direkt nutzen indem entsprechend kompiliert wird.
    Ansonsten muss jeder das vdrshutdown Skript abändern.
    Gut, dass ist zwar auch nicht das große Problem, aber ich zumindest finde es
    viel einfacher und intelligenter wenn dies direkt ins nvram-wakeup mit einfließt...


    c ya 2,
    Gromit

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C


  • nun, es wuerde den Sinn der Option need_reboot veraendern.
    Diese Option ist nicht dafuer da, um shutdown-Probleme zu umgehen,
    sondern dafuer, um bei Boards, die die neuen Wakeup-Daten erst nach einem
    Reboot ins BIOS uebernehmen, einen solchen Reboot durchzufuehren.


    und falls z.B. der richtige Timer schon drine steht, dann braucht nvram-wakeup
    auch nichts an den Einstellungen zu veraendern. Also braucht es auch keinen Reboot.


    Desweiteren ist dieses Problem nicht *grundsaetzlich* board-abhaengig.
    Da der PowerOff Kernel in der Lage ist, deinen PC so abzuschalten, dass dieser
    auch aufwacht, sollte es moeglich sein, auch einen Kernel fuer den laufenden
    Betrieb zu machen, der ebenfalls dazu imstande ist.


    Anderenfalls beschweren sich andere Benutzer, die das gleiche Board haben und
    einen laufenden Kernel, der den PC ausmaachen kann, dass zu viele Reboots
    benoetigt werden.


    ich denke, vdrshutdown IST die richtige Stelle, um dieses Problem zu umgehen.
    (siehe mein letztes posting)

  • OK, das leuchtet mir ein, werde weiter mein geändertes vdrshutdown
    benutzen.
    Dann muss ich nur noch herausfinden wie ich meinen Kernel so neukompiliere,
    dass das der Rechner nach dem ausschalten mit shutdown -h auch wieder aufwacht. Verwende im Moment den Standart Suse 8.2 Prof. Kernel.


    Kannst Du mir vielleicht einen Tip geben wie der Poweroff Kernel, der in nvram-wakeup enthalten ist, kompiliert wurde ??
    Damit funktionert es ja....


    Gruss,
    Gromit...

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • Zitat

    Original von gromit
    Kannst Du mir vielleicht einen Tip geben wie der Poweroff Kernel, der in nvram-wakeup enthalten ist, kompiliert wurde ??


    das war der "vanilla" 2.4.20 kernel. mit APM und ACPI eingeschaltet.


    Wenn du keine speziellen ACPI- oder APM- features verwendest, kannst du dem SuSE Kernel
    mal die option apm=off oder acpi=off uebergeben. dann wird das jeweils andere benutzt.


    ansonsten wuerde ich empfehlen, den neuesten stable kernel zu nehmen (ftp://ftp.kernel.org/pub/linux/kernel/v2.4)


    Fallst du APM benutzen willst oder musst, dann einfach damit kompillieren.


    Wenn du ACPI statt APM benutzen willst oder musst, dann solltest du erst den aktuellsten ACPI patch
    (http://sourceforge.net/project/showfiles.php?group_id=36832) nehmen.

  • Hi,


    setzte auch SuSE 8.2 mit Standardkernel ein. Bei mir liegt es am BIOS, das er einen Neustart braucht und nicht am Kernel. Aber unter mit grub reicht bei mir ein neuer Bootmenüpunkt mit dem Befehl "halt", um den Rechner wieder aufwachfähig zu machen.


    MFG Jens

  • nikej


    Hi,
    heißt das, Dein Rechner macht einen Reboot und läuft nicht in den PowerOff Kernel, sondern nur in einen anderen Menüeintrag mit 'halt' ???
    Hast Du ansonsten das gleiche Verhalten wie ich gehabt ???


    Gruss,
    Gromit....

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • ich hab keinen poweroff-kernel. Bei SuSE 8.2 grub als bootmanager installiert (default).
    in der menu.lst steht


    default=0


    linux
    kernel .....
    initrd...


    poweroff
    halt


    Mehr steht in dieser Spalte nicht drin. In der vdrshutdown steht ich


    echo | sudo /usr/sbin/grub << EOF
    savedefault --default=1 --once
    EOF


    damit startet der Rechner neu ruft poweroff auf und geht dann aus. Aus diesem Zustand wacht er bei mir dann auch wieder auf. (vorer hatte ich das selbe Problem, wie Du)


    mfg nikej

  • Es funktioniert bei mir auch nur mit 'halt' im Grubmenü anstatt dem PowerOff Kernel wie ich jetzt ausprobiert habe.
    Dann liegt es also scheinbar doch nicht an meinem Kernel, sondern an meinem BIOS.
    Gibt es vielleicht noch eine andere Möglichkeit als mit


    shutdown -h now


    den Rechner auszuschalten ?
    Oder muß ich das jetzt so hinnehmen ? Naja es funktioniert ja schon, finde es nur die dauerenden Reboots etwas unschön....


    Gruss,
    Gromit.....

    Mein Glotz-o-fon-Konservierer im Aufbau:
    vdr-2.3.1, v4l Treiber, OpenSuse 42.1, Satelco Easywatch DVB-C

  • kenne ich leider nicht. Und ich hab auch keine Idee. Ich hab schon mal einen Kernel ohne APM erstellt, da hat sich der Rechner gar nicht ausgeschaltet.
    Bei den neuen Kernels stehen zwar meist "Verbesserungen von ACPI" mit drin, aber ob diese das Problem Lösen werden, wage ich doch zu Bezweifeln.


    Das Aufwachen klappt, und ob er noch mal startet um sich abzuschalten, ist mir egal, der PC, steht eh auf dem Balkon.


    Ciao nikej