Um einen Video Disk Recorders (VDR) sofort nach dem Start mit der Fernbedienung zu steuern, ist es notwendig ihn automatisch zu starten. Außerdem sollte er für gesetzte Timer automatisch aufwachen, um diese aufzunehmen. Ich verwende dazu jeweils ein Start-Skript für VDR und Xine, zusätzlich noch ein Shutdown-Skript für VDR.
Shutdown-Skript
Shutdown-Skript erstellen
1 |
vi /usr/src/VDR/shutdown.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
#!/bin/sh # # shutdown.sh # wake up method ('off','acpi','nvram','suspend') WAKEUP_METHOD="acpi" # read board configuration from specified configuration file (e.g: "/etc/nvram-wakeup.conf") NVRAM_CONFIG="" # specify the iw (infowriter) name. (e.g: gigabyte_5aa) NVRAM_IWNAME="" # try "nvram-wakeup --help" NVRAM_OPT="--syslog" # Which boot manager are you using? (grub/lilo) BOOT_MANAGER="grub" TIMER=$1 LILOCNF=/etc/lilo.conf GRUBCNF=/boot/grub/menu.lst ACPIALARM=/proc/acpi/alarm case ${#TIMER}-${WAKEUP_METHOD:-off} in 10-acpi) test -e $ACPIALARM case $? in 0) date -d "1970-01-01 UTC $(($TIMER-120)) seconds" +"%Y-%m-%d %R:%S" > $ACPIALARM sudo poweroff exit 0 ;; *) logger -t ${0##*/} "ARG -> missing $ACPIALARM" ;; esac ;; 10-nvram) eval test $(echo $NVRAM_OPT | egrep -q directisa || echo "-e /dev/nvram -a") -e /dev/rtc -a -e /dev/mem case $? in 0) which nvram-wakeup >/dev/null 2>&1 case $? in 0) sudo nvram-wakeup -s $TIMER $NVRAM_OPT ${NVRAM_CONFIG:+-C $NVRAM_CONFIG} ${NVRAM_IWNAME:+-I $NVRAM_IWNAME} case ${BOOT_MANAGER:-lilo} in grub) REBOOT_LINE=`grep -s ^title "$GRUBCNF" | grep -i -n poweroff | { IFS=: read a b ; echo $a ; }` test -n "$REBOOT_LINE" case $? in 0) which grub-set-default >/dev/null 2>&1 case $? in 0) which grubonce >/dev/null 2>&1 case $? in 0) sudo grubonce $((REBOOT_LINE-1)) ;; *) sudo grub-set-default $((REBOOT_LINE-1)) ;; esac ;; *) echo -e "savedefault --default=$((REBOOT_LINE-1)) --once\nquit" | sudo grub --batch ;; esac ;; *) logger -t ${0##*/} "ARG -> missing poweroff entry in $GRUBCNF" ;; esac ;; lilo) REBOOT_ENTRY=`grep -s -i label.*poweroff "$LILOCNF" | { IFS== read a b ; echo $b ; }` test -n "$REBOOT_ENTRY" case $? in 0) sudo lilo -R $REBOOT_ENTRY ;; *) logger -t ${0##*/} "ARG -> missing poweroff entry in $LILOCNF" ;; esac ;; esac sudo shutdown -r now exit 0 ;; *) logger -t ${0##*/} "ARG -> missing nvram-wakeup" ;; esac ;; *) logger -t ${0##*/} "ARG -> missing $(echo $NVRAM_OPT | egrep -q directisa || echo /dev/nvram -o) /dev/rtc -o /dev/mem" ;; esac ;; 10-suspend) test -e $ACPIALARM -a -e /sys/power/state case $? in 0) date -d "1970-01-01 UTC $((TIMER-120)) seconds" +"%Y-%m-%d %R:%S" > $ACPIALARM echo mem > /sys/power/state sudo reboot exit 0 ;; *) logger -t ${0##*/} "ARG -> missing $ACPIALARM -o /sys/power/state" ;; esac ;; 10-off) logger -t ${0##*/} "MESG -> no wakeup method" ;; 1-*) logger -t ${0##*/} "MESG -> no timer" ;; esac sudo shutdown -h now exit $? |
Runvdr
Runvdr bearbeiten
1 |
vi /usr/src/VDR/runvdr |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
#!/bin/bash # runvdr: Loads the DVB driver and runs VDR # # If VDR exits abnormally, the driver will be reloaded # and VDR restarted. # # In order to actually use this script you need to implement # the functions DriverLoaded(), LoadDriver() and UnloadDriver() # and maybe adjust the VDRPRG and VDRCMD to your particular # requirements. # # Since this script loads the DVB driver, it must be started # as user 'root'. Add the option "-u username" to run VDR # under the given user name. # # Any command line parameters will be passed on to the # actual 'vdr' program. # # See the main source file 'vdr.c' for copyright information and # how to reach the author. # # $Id: runvdr 2.0 2006/05/14 16:02:05 kls Exp $ export LANG=de_DE export LC_COLLATE=de_DE VDRDIR="/usr/src/VDR" VDRPRG="./vdr" VDRCMD="$VDRPRG -t /dev/tty8 -w 60 -c /etc/vdr -E /var/vdr --vfat \ -P 'xine -r' -P streamdev-server -P streamdev-client \ -P epgsearch -P live -P 'dvd -C /dev/dvd' \ -P 'osdteletext -d /tmp/vtx' \ -P 'remote -i /dev/input/remote' \ -s /usr/src/VDR/shutdown.sh $*" KILL="/usr/bin/killall -q -TERM" # Detect whether the DVB driver is already loaded # and return 0 if it *is* loaded, 1 if not: function DriverLoaded() { return 1 } # Load all DVB driver modules needed for your hardware: function LoadDriver() { modprobe dvb_ttpci modprobe budget_ci } # Unload all DVB driver modules loaded in LoadDriver(): function UnloadDriver() { modprobe -r budget_ci modprobe -r dvb_ttpci modprobe -r stv0299 modprobe -r lnbp21 } # Load driver if it hasn't been loaded already: if ! DriverLoaded; then LoadDriver fi while (true) do cd $VDRDIR eval "$VDRCMD" if test $? -eq 0 -o $? -eq 2; then exit; fi echo "`date` reloading DVB driver" $KILL $VDRPRG sleep 10 UnloadDriver LoadDriver echo "`date` restarting VDR" done |
Start-Skript
Start-Skript anlegen
1 |
vi /etc/init.d/vdr |
1 2 3 |
#!/bin/bash /usr/src/VDR/runvdr & |
1 |
chmod +x /etc/init.d/vdr |
1 |
update-rc.d vdr defaults |
1 2 3 4 5 6 7 8 |
Adding system startup for /etc/init.d/vdr ... /etc/rc0.d/K20vdr -> ../init.d/vdr /etc/rc1.d/K20vdr -> ../init.d/vdr /etc/rc6.d/K20vdr -> ../init.d/vdr /etc/rc2.d/S20vdr -> ../init.d/vdr /etc/rc3.d/S20vdr -> ../init.d/vdr /etc/rc4.d/S20vdr -> ../init.d/vdr /etc/rc5.d/S20vdr -> ../init.d/vdr |
Start-Skript für Xine anlegen
1 |
vi /usr/src/VDR/xinestart.sh |
1 2 3 |
#!/bin/sh xine -pqhf --no-splash --post vdr_video --post vdr_audio --post upmix_mono "vdr:/tmp/vdr-xine/stream#demux:mpeg_pes" |
1 |
chmod +x /usr/src/VDR/xinestart.sh |
1 |
vi ~/.config/autostart/xinestart.desktop |
1 2 3 4 5 6 7 8 9 10 |
[Desktop Entry] Type=Application Encoding=UTF-8 Version=1.0 Name=Xine-Starter Name[de_DE]=Xine-Starter Comment[de_DE]=Startet Xine Comment=Startet Xine Exec=sh /usr/src/VDR/xinestart.sh X-GNOME-Autostart-enabled=true |