easyVDR Kopie des easyVDR-Forums zum Nachschlagen
VDR setzt keinen Aufwachtimer bei JepsenHWWakeup (provisorisch gelöst!)

easyVDR - >VARforumsname - >VDR setzt keinen Aufwachtimer bei JepsenHWWakeup (provisorisch gelöst!)

caterpillar  23.May.2008 23:23:03
Hallo Gemeinde,
Ich habe ein Problem mit der Hardware-Schaltuhr (resp. den dazugehörigen Sripten) im Zusammenhang mit dem easyVDR 0.5.0.9 / VDR 1.4.7:



Beim herunterfahren soll die Aufweckzeit in die Hardwareuhr geschrieben werden, wird sie aber nicht. Folge: VDR wacht nicht wieder auf.

Richtig angeschlossen ist die Uhr, weil die laufende Uhrzeit der Uhr beim shutdown sehr wohl auf Systemzeit aktualisiert wird.

Ich bin im bash-scripten ein absoluter Noob, aber nach ein wenig googeln habe ich herausgefunden, dass mit dem Befehl SET -vx ganz am Anfang eines BASH-Skriptes alle Zeilen und die Zwischenergebnisse von Berechnungen unds Ausgaben angezeigt werden.

Dabei habe ich die  easyvdrshutdown.sh (0.6.0) untersucht und herausgefunden, dass es in dem Abschnitt "JepsenHWWakeup" zu Prolemen bei der Ermittlung der Weckzeit gibt, konkret in den Zeilen 290/291: Hier entsteht der Fehler  date: ungültiges Datum "23 Mai 2008 2:30"

NEXTDAILYTIMER bleibt wegen des Fehlers leer, es gibt in den Zeilen 292, 305 und 308 noch Folgefehler bei den IF-Befehlen wegen des leeren NEXTDAILYTIMER ( unary operator  expected).

In Folge bleibt WAKEUPSTR leer und es wird kein Timer in die Uhr geschrieben. Die Büchse wacht nicht mehr auf.


Ich habe noch einen LinVDR 0.7 ebenfalls mit Hardware Wakeup Uhr am laufen, dort funktioniert alles. Die Codestrecke zur Hardwareuhr von Frank Jepsen ist absolut identisch und ich habe auch die einmal untersucht:

Der Unterschied ist, dass beim LinVDR in der entsprechenden Zeile der date - Befehl nicht "23 Mai 2008" sondern "23 May 2008" ergibt. Damit läuft das Ding glatt durch.

Offenbar hat mein easyvdr ein Sprachproblem. Wieso gibt es da einen Unterschied und wie bringe ich dem easyvdr die englische Zeitnotation bei?

Hat jemand einen Tipp?


Gruß aus Mainz,

Dirk





Zum Verständnis hier der Auszug aus easyvdrshutdown.sh zum easyvdr 0.5.0.9


...
247     "JepsenHWWakeup")
248       if [ -e /etc/vdr/vdr-addon-hw-wakeup.conf ]; then
249         . /etc/vdr/vdr-addon-hw-wakeup.conf
250       fi
251       # Defaults:
252       [ -z "$ENABLED" ]          && export ENABLED="no"
253       [ -z "$WAKEUP_PORT" ]      && export WAKEUP_PORT="/dev/ttyS0"
254       [ -z "$KILL_LIRC" ]        && export KILL_LIRC="no"
255       [ -z "$KILL_LCDD" ]        && export KILL_LCDD="yes"
256       [ -z "$MIN_PRE_TIMER" ]    && export MIN_PRE_TIMER=5
257       [ -z "$MAX_POWEROFF_TIME" ] && export MAX_POWEROFF_TIME=0
258       [ -z "$MAX_TRY_AGAIN" ]    && export MAX_TRY_AGAIN=0
259       # Const
260       NEVER=2147483647
261       if [ $MAX_TRY_AGAIN -gt 0 ]; then
262         # another script wants to retry shutdown later
263         ERR_MSG="Shutdown abgebrochen"
264         $SVDRPCMD MESG "$ERR_MSG" &
265
266         EXITCODE=0
267       else
268         if [ $ENABLED = "no" ]; then
269           # vdr-addon-hw-wakeup is disabled, so just exit
270           ERR_MSG="hw-wakeup functionality is disabled"
271           $SVDRPCMD MESG "$ERR_MSG - Shutdown abgebrochen" &
272           $LOGGERCMD "$ERR_MSG - Shutdown abgebrochen"
273           $LOGGERCMD "hw-wakeup functionality is disabled"
274           EXITCODE=0
275         else
276           # calculate, at what time the machine should be powered on
277           # VDR-Timer
278           NOW=$((`date +%s`))
279           #    echo "NOW          " `date -d "1970-01-01 $NOW seconds UTC" "+%H:%M %d.%m.%Y"` $NOW
280           if [ -z $TIMER ] || [ $TIMER -eq 0 ]; then
281             NEXTTIMER=$NEVER
282           else
283             NEXTTIMER=`expr $TIMER - $MIN_PRE_TIMER \* 60`
284           fi
285           #    echo "TIMER        " `date -d "1970-01-01 $NEXTTIMER seconds UTC" "+%H:%M %d.%m.%Y"` $NEXTTIMER
286           # Daily Timer
287           if [ -z $DAILY_TIMER_STD ] || [ -z $DAILY_TIMER_MIN ]; then
288             NEXTDAILYTIMER=$NEVER
289           else
290             NEXTDAILYTIMER=`date +"%d %b %Y"`
291             NEXTDAILYTIMER=`date -d "$NEXTDAILYTIMER $DAILY_TIMER_STD:$DAILY_TIMER_MIN" +%s`
292             if [ $NOW -gt $NEXTDAILYTIMER ]; then
293               NEXTDAILYTIMER=`expr $NEXTDAILYTIMER + 86400`
294             fi
295           fi
296           #    echo "DAILYTIMER    " `date -d "1970-01-01 $NEXTDAILYTIMER seconds UTC" "+%H:%M %d.%m.%Y"` $NEXTDAILYTIMER
297           # MaxPowerOff Time
298           if [ $MAX_POWEROFF_TIME -eq 0 ]; then
299             WAKEUPTIME=$NEVER
300           else
301             WAKEUPTIME=`expr $NOW + $MAX_POWEROFF_TIME \* 60`
302           fi
303           #    echo "MAXPOWEROFF  " `date -d "1970-01-01 $WAKEUPTIME seconds UTC" "+%H:%M %d.%m.%Y"` $WAKEUPTIME
304           # Who comes first?
305           if [ $WAKEUPTIME -gt $NEXTTIMER ] && [ $NEXTDAILYTIMER -gt $NEXTTIMER ]; then
306             WAKEUPTIME=$NEXTTIMER
307           else
308             if [ $WAKEUPTIME -gt $NEXTDAILYTIMER ]; then
309               WAKEUPTIME=$NEXTDAILYTIMER
310             fi
311           fi
312           #    echo "WAKEUPTIME    " `date -d "1970-01-01 $WAKEUPTIME seconds UTC" "+%H:%M %d.%m.%Y"` $WAKEUPTIME   
313           if [ $WAKEUPTIME -eq $NEVER ]; then
314             WAKEUPSTR=""
315           else
316             WAKEUPSTR=`date -d "1970-01-01 $WAKEUPTIME seconds UTC" +%H%M%d%m`
317           fi
318           TIMESTR=`date +%H%M%S%d%m%y%w`
319           # Kill LIRC
320           if [ $KILL_LIRC = "yes" ]; then
321             $LOGGERCMD "Starting Module 8250"
322             killall lircd
323             sleep 2
324             modprobe -r lirc_serial
325             sleep 4
326             modprobe 8250
327             setserial $WAKEUP_PORT uart 16550A
328             sleep 8
329           fi
330           # Kill LCDd
331           if [ $KILL_LCDD = "yes" ]; then
332             killall LCDd
333             sleep 1
334             echo -n -e "\317" > $WAKEUP_PORT
335           fi
336           $LOGGERCMD "echo ATS$WAKEUPSTR > $WAKEUP_PORT"
337           echo ATS$WAKEUPSTR > $WAKEUP_PORT
338           $LOGGERCMD "echo RTS$TIMESTR > $WAKEUP_PORT"
339           echo RTS$TIMESTR > $WAKEUP_PORT
340           EXITCODE=0
341           poweroff
342         fi
343       fi
...







Stets findet Überraschung statt, da wo man's nicht erwartet hat. W.Busch
Board: MSI K8N Neo 4H / 2 GB / Athlon 64 X2 4200|GraKa: Zotac GT220 1GB RAM|DVB-S2: DD Cine S2 V6.5|Analog: Hauppauge PVR350|Harddisk1: Seagate 500GB PATA|ST3500630A|Harddisk2: Hitachi 2TB SATA HDS722020ALA330|Brenner: LG GSA-H22N ATAPI
soulianis  24.May.2008 00:39:02
Hi Dirk,

normalerweise sollte die Sprachumgebung (LANG Environmentvariable) nicht gesetzt sein bzw. auf dem Standardwert 'C' oder 'POSIX' stehen. Hier in meiner easyVDR Installation ist sie nicht gesetzt. Hattest Du das irgendwo umkonfiguriert?

Testhalber kannst Du mal folgendes ins easyvdrshutdown.sh Skript einfügen, irgendwo am Anfang, z.B. nach dem Aufruf der sysconfig und easyvdrshutdown.conf:export LANG=C

Guck mal, ob das das Problem löst. Wenn ja, wird irgendwo LANG auf de_DE oder ähnlich gesetzt, was die eigentliche Ursache für das Problem ist.
easyVDR 0.6.10/VDR 1.4.7, Kernel 2.6.28.9 (wolf), ASUS M3N78 Mainboard (NVIDIA GeForce 8200 Chipset), AMD X2 4850e 2x2.5GHz CPU, 2GB RAM, 32 GB Super Talent Ultradrive GX MLC Solid State Disk (FTM32GX25H), 2 x 2TB WD AV-GP Platten (WD20EVDS), LG GH22NS30 SATA DVD-Brenner, TechnoTrend C-1500 DVB-C, Hauppauge PVR-150 Analog, Ausgabe über MagicDVD , atric IR-Empfänger/Einschalter, schwarzes Silverstone Lascala LC20 Gehäuse, Loewe RC4 Fernbedienung (VCR-Modus)
caterpillar  24.May.2008 15:39:43
Danke für die schnelle Antwort!!!

Ich habe es ausprobiert und damit ich das Script per On/Off-Button ausprobieren kann, habe ich es mit echo-ausgaben nur so gespickt und vor allem das Statement 341      poweroff nach 341      #poweroff auskommentiert.

Ein echo `locale` vor der fraglichen Zeile zeigt mir in jeder der ausgegebenen Variablen den Wert "de_DE@euro".

ein ...
export LANG=POSIX  oder auch export LANG=C

... wurde korrekt durch das echo `locale` ausgegeben, hat aber keine Wirkung bezüglich der Fehlermeldung gezeigt:

Die  Zeilen ...
290              NEXTDAILYTIMER=`date +"%d %b %Y"`
291              NEXTDAILYTIMER=`date -d "$NEXTDAILYTIMER $DAILY_TIMER_STD:$DAILY_TIMER_MIN" +%s`

... führen in jedem Fall, egel welcher Wert in LANG, zum Fehler ...
date: ungültiges Datum >>24 Mai 2008 2:30<<


Nach Studium der man-Pages zu date habe ich als Ergebnis von vielen Versuchen die Originalzeile 290 geändert ...
290              NEXTDAILYTIMER=`date +"%d %b %Y"`  (24 Mai 2008)
290              NEXTDAILYTIMER=`date +"%Y-%m-%d"`  (2008-05-24)
291              NEXTDAILYTIMER=`date -d "$NEXTDAILYTIMER $DAILY_TIMER_STD:$DAILY_TIMER_MIN" +%s`


... und nun klappts.

Fragt sich nur, wie lange. Nächster Kernelwechsel?

Woran es nun eigentlich liegt, weiss ich nicht. Zumal es ja in der unveränderten Form bei meinen LinVDRs funktioniert.

Aber egal - jetzt gehts erstmal. Und es gibt 'ne Menge über die bash zu lernen ...


Gruß aus Mainz,

Dirk



Stets findet Überraschung statt, da wo man's nicht erwartet hat. W.Busch
Board: MSI K8N Neo 4H / 2 GB / Athlon 64 X2 4200|GraKa: Zotac GT220 1GB RAM|DVB-S2: DD Cine S2 V6.5|Analog: Hauppauge PVR350|Harddisk1: Seagate 500GB PATA|ST3500630A|Harddisk2: Hitachi 2TB SATA HDS722020ALA330|Brenner: LG GSA-H22N ATAPI
Fireblade93  27.May.2008 00:10:21
Hi @all,

kann ich nur bestätigen,

ich hab auch ewig gesucht (hätte vorher mal lieber die Boardsuche beauftragen sollen  ;D).

Um den Fehler zu finden x Echo-Ausgaben auf Com2 umgeleitet (JepsenHWwakeup - Com1) und diese mitgeloggt.

Mit deiner Änderung Caterpillar hat es bei mir auch funktioniert. Danke.

Ich habe noch eine zusätzliche Abfrage eingebaut um dies in Zukunkft abzufangen und dem Programmierten Timer bei
solch einem Fehler den Vorrang einzuräumen.


          # Daily Timer
          if [ -z $DAILY_TIMER_STD ] || [ -z $DAILY_TIMER_MIN ]; then
            NEXTDAILYTIMER=$NEVER
          else
            NEXTDAILYTIMER=`date +"%Y-%m-%d"`
            NEXTDAILYTIMER=`date -d "$NEXTDAILYTIMER $DAILY_TIMER_STD:$DAILY_TIMER_MIN" +%s`
            if [ $NOW -gt $NEXTDAILYTIMER ]; then
              NEXTDAILYTIMER=`expr $NEXTDAILYTIMER + 86400`
            fi
          fi
neu>  ###################################################################
neu>  #Zur Fehlerkorrektur wenn das setzen des tägl. Timer schiefgeht ;-)
neu>  if [ -z $NEXTDAILYTIMER ]; then
neu>    NEXTDAILYTIMER=$NEVER
neu>  fi


Gruß Fireblade93
1x VDR SW: EasyVDR 0.5 beta4
           HW: Compaq Evo D510SFF, 2,5" 120 GB, TT FF Rev. 2.3,
           Modding: JepsenHWwakeup an Com1,
                          int. eigenes Wakeupboard mit Lüftersteuerung
1x Sagem DBox2 mit Neutrino (Danke an Worschter)
1x Samsung Media Receiver SMT-7020S noch Original ;-)
Renegade  08.Mar.2009 17:57:29
Hi Leute,

schön das mir das bei meinem Problem auch geholfen hat, VIELEN DANK!

Nur schade das es bis heute nicht gefixt wurde?!
VDR1: Silverstone HTPC, Via EPIA M10000, 512MB, PCI 2fach Riser, FF1.6 + Skystar 2, 16GB CF-Card, 160GB Daten-HDD, Wakeup Board, AVBoard, 2x40 VFD + 4x20 picoLCD, EasyVDR 0.6.06
VDR2: Eigenbau Gehäuse, Asus M4N78 Pro, 2048MB, FF1.3 (RamMod) + SkyStar 2, 10GB System-HDD, 250GB Daten-HDD, Wakeup Board, AVBoard 4x40 LCD, EasyVDR 0.6.08
Renegade  13.Sep.2009 14:26:49
Ich schon wieder ;)

Hab die Kiste neu aufgesetzt mit neuem Mainboard und Co.

Nun muss ich nur noch wieder dieses WAKEUPBOARD zum laufen kriegen.

Bestimmt stimmt da was mit der seriellen anbindung nicht, allerdings funktioniert Lirc darüber?!?!

Alle Dienste beendet und setserial /dev/ttyS0 uart 16550 gemacht, aber trotzdem kann ich nicht die Uhrzeit bzw. Wakeup-Timer setzen *grrrml*

Wie gesagt, Lirc funktioniert und auch das über die FB aufwecken funktioniert nur das setzen der Uhrzeit und Timer geht nicht.

LCDproc interessiert mich derzeit darüber nicht. Habe beim neuen Board nur noch einen Com-Port aber darüber müsste ja trotzdem Lirc und Timer funktionieren.

Habe ein neues Serielles Kabel gemacht um direkt an die Pfosten-Buchse anzuschließen.
Habe eine 1:1 belegung zwischen den beiden Pfostensteckern gemacht.

Jemand eine Idee?

VDR1: Silverstone HTPC, Via EPIA M10000, 512MB, PCI 2fach Riser, FF1.6 + Skystar 2, 16GB CF-Card, 160GB Daten-HDD, Wakeup Board, AVBoard, 2x40 VFD + 4x20 picoLCD, EasyVDR 0.6.06
VDR2: Eigenbau Gehäuse, Asus M4N78 Pro, 2048MB, FF1.3 (RamMod) + SkyStar 2, 10GB System-HDD, 250GB Daten-HDD, Wakeup Board, AVBoard 4x40 LCD, EasyVDR 0.6.08
Renegade  16.Sep.2009 20:20:21
:'(
VDR1: Silverstone HTPC, Via EPIA M10000, 512MB, PCI 2fach Riser, FF1.6 + Skystar 2, 16GB CF-Card, 160GB Daten-HDD, Wakeup Board, AVBoard, 2x40 VFD + 4x20 picoLCD, EasyVDR 0.6.06
VDR2: Eigenbau Gehäuse, Asus M4N78 Pro, 2048MB, FF1.3 (RamMod) + SkyStar 2, 10GB System-HDD, 250GB Daten-HDD, Wakeup Board, AVBoard 4x40 LCD, EasyVDR 0.6.08