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 |