System Autowakeup für VDR Aufnahmen via ACPI Wakeup unter Kodibuntu 14.04.1 lts
Inhalt
Inhalt
Beschreibung
Dieser Artikel beschreibt die Einrichtung des automatischen Rechnersstarts via ACPI Wakeup.
Hersteller | ohne |
Autor(en) | ohne |
Lizenz | GNU / GPL / Opne Source |
OS | Linux – kodibuntu 14.04.1 lts / Ubuntu Studio 14.04.3 Trusty Tahr LTS |
Kernel | 3.13.0-45-lowlatency #74-Ubuntu SMP PREEMPT Tue Jan 13 19:53:35 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux |
Funktion | io / nio |
Status | open / closed |
Installationsumgebung / -Voraussetzung
Getestet wurde die Hardware/Software: …
mit der/den VDR Versionen: …
unter der/den Ubuntu Version(en): 14.04.1 lts …
Die Installation/Konfiguration benötigt …
Installation
Timer für Autowakeup über ACPI einrichten funktioniert nicht mit allen Rechnern und BIOS Versionen und es können eine Menge Faktoren den Start des Rechners verhindern. Sollte es nicht funktionieren ist es hilfreich das VDR-Wiki, die Howtos von MythTV, YaVDR bzw. das VDR-Forum zu durchsuchen. Viele der Probleme sind dort beschrieben und sind trotz dessen alters immer noch hilfreich.
http://www.vdr-wiki.de/wiki/index.php/ACPI_Wakeup
/Ubuntu_HD_VDR_mittels_TechnoTrend_S2-6400_-_ACPI_Shutdown/Wakeup
http://www.vdr-portal.de/board60-linux/board62-software/board95-xbmc/p814067-xbmc-shutdown-mit-aufwachfunktion-von-vdr/#post814067
http://www.mythtv.org/wiki/ACPI_Wakeup
http://forum.ubuntuusers.de/topic/vdr-shutdown-optionen/
http://www.linux.com/learn/docs/672849-wake-up-linux-with-an-rtc-alarm-clock
http://vdr-wiki.de/wiki/index.php/YaVDR/FAQ#ACPI_Wakeup
Mainboard / Installation und System auf ACPI WakeUp Funktion prüfen
sudo grep -i rtc /var/log/dmesg [ 0.096000] RTC time: 22:44:26, date: 01/02/15 [ 0.910400] rtc_cmos 00:02: RTC can wake from S4 [ 0.910541] rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0 [ 0.910564] rtc_cmos 00:02: alarms up to one month, 114 bytes nvram [ 0.921373] rtc_cmos 00:02: setting system clock to 2015-01-02 22:44:27 UTC (1420238667)
Da sämtliche Zeiten in Sekunden ab dem 01.01.1970 UTC Zeit berechnet werden, prüfen ob das System und die Hardware Uhr auch auf UTC eingestellt sind.
Wenn UTC eingestellt ist, trifft folgendes zu:
- Im BIOS wird UTC Zeit statt der lokalen Zeit angezeigt
- In /etc/default/rcS ist eingetragen
- UTC=yes
cat /etc/default/rcS | grep UTC=
- UTC=yes
- Ein sudo hwclock –debug gibt aus:
- Hardware clock is on UTC time
- Assuming hardware lock is kept in UTC time
sudo hwclock --debug | grep UTC
Damit die User vdr und xbmc die Hardwareuhr via sudo ohne Passwort Eingabe umstellen dürfen, müssen diese in der sudoers berechtigt werden
sudo visudo # Allow members of group sudo to execute any command vdr ALL = NOPASSWD: ALL xbmc ALL = NOPASSWD: ALL
Löschen bereits gesetzter Timer
Ist bereits ein wakealarm gesetzt worden, so muss dieser vorher wieder gelöscht werden. Dies geschieht indem ein Event in der Vergangenheit gesetzt wird
sudo bash -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
Test der WakeUp Funktion
indem ein Timer in 2 Minuten gesetzt wird
sudo bash -c "echo `date '+%s' -d '+ 2 minutes'` > /sys/class/rtc/rtc0/wakealarm"
Auslesen gesetzter Timer aus dem OS
sudo cat /sys/class/rtc/rtc0/wakealarm
Auslesen gesetzter Timer aus dem BIOS
sudo cat /proc/driver/rtc
Konfiguration
Runlevelscript für Auslesung VDR Timer bei Neustart oder Shutdown anlegen
(Funktioniert nur bei älteren Systemen welche die Runlevel der Reihe nach abarbeiten!)
sudo vim /etc/init.d/setAcpiWakeup
#!/bin/bash ### BEGIN INIT INFO # Provides: wakeup # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: 0 6 # Short-Description: Setting WakeUp Events in BIOS ### END INIT INFO #sudo hwclock --systohc --localtime # Hardware Uhr auf localtime sudo hwclock --systohc --utc # Hardware Uhr auf UTC DEV=/sys/class/rtc/rtc0/wakealarm TIMER=$(/usr/bin/svdrpsend -d localhost NEXT abs|grep 250 |cut -f3 -d' '|tr -d '\r') case $1 in start) echo echo 'SMURF :-) !!!' echo ;; stop) if [[ '$TIMER' =~ " " ]]; then bash -c "echo 0 > $DEV" && echo No VDR Timer exist, proceed with shutdown && exit else DATE=/bin/date if [[ $DATE =~ "CEST" ]]; then #WAKEUPTIME=`echo "$TIMER + 2 * 60 * 60 -300" | bc`; WAKEUPTIME=`echo "$TIMER + 60 * 60 -300" | bc`; else #WAKEUPTIME=`echo "$TIMER + 60 * 60 -300" | bc`; WAKEUPTIME=`echo "$TIMER -300" | bc`; fi echo 0 > $DEV bash -c "echo "$WAKEUPTIME > $DEV"" bash -c "echo "$WAKEUPTIME > $DEV"" # Manche Mainboards benötigen die Weckzeit zweimal #echo $TIMER > $DEV echo BIOS Event set to: cat /proc/driver/rtc echo echo Next Startup Event set in: cat /sys/class/rtc/rtc0/wakealarm echo "seconds since UTC midnight 1 January 1970 :-)" echo fi ;; status) echo echo BIOS Event actual set to: cat /proc/driver/rtc echo echo Next Startup Event set in: cat /sys/class/rtc/rtc0/wakealarm echo "seconds since UTC midnight 1 January 1970 :-)" echo exit 0 ;; clear) echo echo Clearing BIOS Event... bash -c "echo 0 > /sys/class/rtc/rtc0/wakealarm" echo echo BIOS Event cleared: cat /proc/driver/rtc echo echo Next Startup Event set in: sudo cat /sys/class/rtc/rtc0/wakealarm echo "seconds since UTC midnight 1 January 1970 :-)" exit 0 ;; *) echo "Usage: /etc/init.d/setAcpiWakeup.sh {start|stop|status|clear}" exit 1 ;; esac
Event Status anzeigen
sudo /etc/init.d/setAcpiWakeup status
Event Status setzen auf nächsten Start 5 Min vor VDR Timer
sudo /etc/init.d/setAcpiWakeup stop
Event Status löschen
sudo /etc/init.d/setAcpiWakeup clear
Event Status starten (nur für Schlümpfe .-)
sudo /etc/init.d/setAcpiWakeup start
Script ausführbar machen und in den Runlevel 6 (Rebot) und 0 (Shutdown) verlinken
sudo chmod +x /etc/init.d/setAcpiWakeup sudo ln -s /etc/init.d/setAcpiWakeup /etc/rc6.d/K01setAcpiWakeup sudo ln -s /etc/init.d/setAcpiWakeup /etc/rc0.d/K01setAcpiWakeup
Die Berechtigungen an der Hardware-Uhr-Datei werden bei jedem Start zurückgesetzt, daher müssen diese bei jedem Start neu gesetzt werden
sudo vim /etc/init/set_perm_wakealarm.conf start on startup task script chmod 777 /sys/class/rtc/rtc0/wakealarm end script
Verhindern dass die Hardwareuhr auf OS Zeit gesetzt wird
sudo mv /etc/init/hwclock-save.conf ~/Downloads/
Zum Test wird ein Timer in den nächsten Min gesetzt, das System neu gestartet und das BIOS ausgelesen.
Einfaches Script für setzen eines WakeUpEvents über Kodi
Anlagen des Scripts
sudo vim /usr/bin/setwakeup.sh #!/bin/sh #$1 is the first argument to the script. It is the time in seconds since 1970 #this is defined in mythtv-setup with the time_t argument echo 0 > /sys/class/rtc/rtc0/wakealarm #this clears your alarm. echo $1 > /sys/class/rtc/rtc0/wakealarm #this writes your alarm
Script ausführbar machen
sudo chmod +x /usr/bin/setwakeup.sh
Sicherstellen dass Kodi User das Script ohne Passwort aufrufen dürfen
sudo visudo # Members of the admin group may gain root privileges %xbmc ALL = NOPASSWD: /usr/bin/setwakeup.sh, /usr/sbin/pm-suspend
Nun im Kodi unter Optionen > LiveTV > Einergiesparen in der Option Setze den Weckbefehl (cmd [timestamp]) den Scriptnamen mit vorrangestellten sudo eintragen
sudo setwakeup.sh
Beim neu- oder herunterfahren des Rechners ruft kodi nun das Script gefolgt von egültigen TimCode. Der Timecode berechnet sich aus der eingestellten Zeit Vor der der Aufnahme aufwachen xx min.
http://kodi.wiki/view/Settings/Live_TV#Power_saving
Troubleshooting
- Bei manchen Boards muss der HPET (High Precision Event Timer) der CPU deaktiviert im BIOS werden. Sollte das nicht helfen kann ein übergeben des Parameters hpet=disable an den Kernel (via Grub) helfen. Beim ASUS P6H68 reichte eine deaktivierung im BIOS aus.
- Unter Ubuntu wird die Zeit der Hardwareuhr bei jedem Herunterfahren des Systems auf die Zeit des OS gesetzt. Dies muss deaktiviert werden, da ansonsten die Zeiten nicht stimmen.
grep "hwclock-save" /etc/init/* sudo mv /etc/init/hwclock-save.conf ~/Downloads/
Fazit
Das Erstellen eines Events beim runterfahren des Systems über das Runlevel ist in aktuellen Ubuntu Versionen problematisch, da der VDR bereits beendet ist wenn das Script versucht den Timer auszulesen. Teilweise funktioniert das, eben immer dann wenn der VDR “zufällig” noch läuft.
ToDo
- Script läuft nur händisch, läuft VDR beim runterfahren auch noch um den Timer auszulesen?
- Scipt schreiben für wakeup via kodi
- …
Quellen
- http://www.vdr-wiki.de/wiki/index.php/ACPI_Wakeup
- /Ubuntu_HD_VDR_mittels_TechnoTrend_S2-6400_-_ACPI_Shutdown/Wakeup
- http://www.vdr-portal.de/board60-linux/board62-software/board95-xbmc/p814067-xbmc-shutdown-mit-aufwachfunktion-von-vdr/#post814067
- http://www.mythtv.org/wiki/ACPI_Wakeup
- http://forum.ubuntuusers.de/topic/vdr-shutdown-optionen/
- http://www.linux.com/learn/docs/672849-wake-up-linux-with-an-rtc-alarm-clock
http://vdr-wiki.de/wiki/index.php/YaVDR/FAQ#ACPI_Wakeup - http://www.kodinerds.net/index.php/Thread/24008-Aufwachen-aus-Standby-f%C3%BCr-vorprogrammierte-Aufnahmen/?postID=94569#post94569
- http://kodi.wiki/view/Settings/Live_TV#Power_saving
Hinterlasse eine Antwort