Ubuntu HD VDR mittels TechnoTrend S2-6400 - VDR
Downloadverzeichnis vorbereiten
mkdir -p /data/installfiles/vdr
Installationsmedien herunterladen
cd /data/installfiles/vdr wget ftp://ftp.tvdr.de/vdr/vdr-2.0.4.tar.bz2
vdruser in die Gruppe video aufnehmen
sudo adduser vdruser video sudo adduser vdruser audio
Danach müsst Ihr euch erneut am System anmelden damit die neue Gruppenzugehörigkeit "angezogen" wird.
Installation VDR
VDR Verzeichnis vorbereiten und Installationsmedien entpacken
sudo su -
cd /usr/local/src tar -xjf /data/installfiles/vdr/vdr-2.0.4.tar.bz2 ln -s vdr-2.0.4/ vdr
Shutdownskript erstellen und ablegen
vi /usr/local/bin/vdrpoweroff.sh
#!/bin/bash sudo /sbin/poweroff
und anschließend das Skript ausführbar machen:
chmod +x /usr/local/bin/vdrpoweroff.sh
Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen
Damit der Benutzer vdruser die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.
visudo
vdruser ALL=(ALL) NOPASSWD: /usr/local/bin/vdrpoweroff.sh,/sbin/poweroff
Installation VDR
cd /usr/local/src/vdr make REMOTE=LIRC && make install
exit
Videoverzeichnis anpassen
In diesem Verzeichnis werden später die VDR Aufnahmen abgelegt. Da ich mich an den Standardpfad für das Videroverzeichnis des VDR halten möchte, aber mein vorhander Festplattenspeicher in einem anderen Verzeichnis vorhanden ist, ist das setzen eines Link nötig.
mkdir -p /data/vdrrecords sudo rm -r /srv/vdr/video sudo ln -s /data/vdrrecords/ /srv/vdr/video
VDR mittels runvdr starten
Das Skript runvdr wird benötigt um den VDR zu starten.
runvdr vorbereiten
sudo cp /usr/local/src/vdr/runvdr.template /usr/local/bin/runvdr
runvdr anpassen
Achtung! Die erste Zeile im Skript muss von #!/bin/sh nach #!/bin/bash angepasst werden.
sudo vi /usr/local/bin/runvdr
#!/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.template 2.2 2011/04/17 12:34:30 kls Exp $ export LANG=de_DE.utf8 export LC_COLLATE=de_DE.utf8 VDRPRG="/usr/local/bin/vdr" VDROPTIONS="-w 60 -u vdruser -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh" # For other options see manpage vdr.1 VDRPLUGINS="-P dvbhddevice" # You will need to select your output device plugin if you want # to use VDR to watch video. For instance, for a "Full Featured" # SD DVB card that would be # VDRPLUGINS="-P dvbsddevice" # For a "Full Featured" HD DVB card you could use # VDRPLUGINS="-P dvbhddevice" # There are also other output device plugins available, see # http://www.vdr-wiki.de/wiki/index.php/Plugins. VDRCMD="$VDRPRG $VDROPTIONS $VDRPLUGINS $*" 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() { return 0 } # Unload all DVB driver modules loaded in LoadDriver(): function UnloadDriver() { return 0 } # Load driver if it hasn't been loaded already: if ! DriverLoaded; then LoadDriver fi while (true) do 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
runvdr Skript ausführbar machen
sudo chmod +x /usr/local/bin/runvdr
Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen
Damit der Benutzer vdruser die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.
sudo visudo
vdruser ALL=(ALL) NOPASSWD: /usr/local/bin/runvdr,/usr/local/bin/vdr,/usr/bin/killall
Falls nur ein Tuner der TV Karte genutzt wird
Achtung! Falls nur 1 SAT-Kabel an die TV Karte angeschlossen ist kann nur 1 Tuner verwendet werden. Deshalb muss der zweite Tuner für den VDR deaktiviert werden.
Hier die VDR Parameter um einen der Tuner zu deaktivieren:
-D NUM, --device=NUM use only the given DVB device (NUM = 0, 1, 2...) there may be several -D options (default: all DVB devices will be used)
Das "runvdr" Skript könnte folgendermaßen erweitert werden:
sudo vi /usr/local/bin/runvdr
VDROPTIONS="-w 60 -D0 -u vdruser -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh"
somit wird nur 1 Tuner der TV-Karte genutzt.
VDR auf non-root Benutzer umstellen
sudo chown vdruser.vdruser -R /usr/local/share/vdr sudo chown vdruser.vdruser -R /usr/local/bin sudo chown vdruser.vdruser -R /usr/local/include/vdr sudo chown vdruser.vdruser -R /usr/local/lib/vdr sudo chown vdruser.vdruser -R /usr/local/src/vdr* sudo chown vdruser.vdruser -R /srv/vdr sudo chown vdruser.vdruser -R /var/cache/vdr sudo chown vdruser.vdruser -R /var/lib/vdr/
remote.conf erstellen
cd /var/lib/vdr/ vi remote.conf
KBD.Up 00000000001B4F41 KBD.Down 00000000001B4F42 KBD.Menu 0000001B5B31397E #F8 KBD.Ok 000000000000000D #Enter KBD.Back 000000001B5B347E #Backspace KBD.Left 00000000001B4F44 KBD.Right 00000000001B4F43 KBD.Red 00000000001B4F50 #F1 KBD.Green 00000000001B4F51 #F2 KBD.Yellow 00000000001B4F52 #F3 KBD.Blue 00000000001B4F53 #F4 KBD.0 0000000000000030 KBD.1 0000000000000031 KBD.2 0000000000000032 KBD.3 0000000000000033 KBD.4 0000000000000034 KBD.5 0000000000000035 KBD.6 0000000000000036 KBD.7 0000000000000037 KBD.8 0000000000000038 KBD.9 0000000000000039 KBD.Power 0000001B5B32347E #F12 KBD.Volume+ 000000000000002B #+ KBD.Volume- 000000000000002D #- KBD.Mute 0000001B5B32307E #F9
svdrphosts.conf anpassen
cd /var/lib/vdr/ vi svdrphosts.conf
# svdrphosts This file describes a number of host addresses that # are allowed to connect to the SVDRP port of the Video # Disk Recorder (VDR) running on this system. # Syntax: # # IP-Address[/Netmask] # 127.0.0.1 # always accept localhost #192.168.100.0/24 # any host on the local net #204.152.189.113 # a specific host #0.0.0.0/0 # any host on any net (USE THIS WITH CARE!) 192.168.0.0/24 # Euer Netzwerk
VDR in den Autostart
Skript erstellen
sudo vi /etc/init.d/vdr
#! /bin/sh # # VDR initscript # ### BEGIN INIT INFO # Provides: VDR # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: VDR # Description: Start Video Disc Recorder ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="Video Disc Recorder" NAME=vdr SCRIPTNAME=/etc/init.d/$NAME set -e case "$1" in start) echo -n "Starting $DESC: " sudo /usr/local/bin/runvdr & echo "$NAME." ;; stop) echo -n "Stopping $DESC: " sudo killall vdr && sudo killall runvdr echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " $0 stop sleep 1 $0 start ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Skript ausführbar machen
sudo chmod +x /etc/init.d/vdr
Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen
Damit der Benutzer vdruser die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.
sudo visudo
vdruser ALL=(ALL) NOPASSWD: /etc/init.d/vdr
VDR in den Autostart aufnehmen
sudo update-rc.d vdr defaults 99 99
VDR aus dem Autostart entfernen
Falls das Skript mal nicht funktionieren sollte kann man dieses wieder aus dem Autostart entfernen:
sudo update-rc.d -f vdr remove
VDR auf Lauffähigkeit überprüfen
VDR manuell starten und Log überprüfen
Am besten Ihr öffnet zwei SSH Sessions auf euren VDR.
SSH Session 1
Hier wird das VDR Log geöffnet:
tail -f /var/log/syslog
SSH Session 2
Hier wird der VDR manuell gestartet:
sudo /usr/local/bin/runvdr
oder mittels Autostartskript
sudo /etc/init.d/vdr start
VDR Logausgabe
Jetzt könnt Ihr auf der "SSH Session 1" genau mitverfolgen was der VDR macht. Wenn der VDR ordnungsgemäß läuft sollte es so aussehen:
Oct 18 09:13:06 vdr01 vdr: [10651] VDR version 2.0.4 started Oct 18 09:13:06 vdr01 vdr: [10651] switched to user 'vdruser' Oct 18 09:13:06 vdr01 vdr: [10651] codeset is 'UTF-8' - known Oct 18 09:13:06 vdr01 vdr: [10651] found 29 locales in /usr/local/share/locale Oct 18 09:13:06 vdr01 vdr: [10651] loading plugin: /usr/local/lib/vdr/libvdr-dvbhddevice.so.2.0.0 Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/setup.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/sources.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/diseqc.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/scr.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/channels.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/svdrphosts.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/remote.conf Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/keymacros.conf Oct 18 09:13:06 vdr01 vdr: [10651] registered source parameters for 'A - ATSC' Oct 18 09:13:06 vdr01 vdr: [10651] registered source parameters for 'C - DVB-C' Oct 18 09:13:06 vdr01 vdr: [10651] registered source parameters for 'S - DVB-S' Oct 18 09:13:06 vdr01 vdr: [10651] registered source parameters for 'T - DVB-T' Oct 18 09:13:06 vdr01 vdr: [10653] video directory scanner thread started (pid=10651, tid=10653, prio=high) Oct 18 09:13:06 vdr01 vdr: [10652] video directory scanner thread started (pid=10651, tid=10652, prio=high) Oct 18 09:13:06 vdr01 vdr: [10651] probing /dev/dvb/adapter0/frontend0 Oct 18 09:13:06 vdr01 vdr: [10653] video directory scanner thread ended (pid=10651, tid=10653) Oct 18 09:13:06 vdr01 vdr: [10652] video directory scanner thread ended (pid=10651, tid=10652) Oct 18 09:13:06 vdr01 vdr: [10654] epg data reader thread started (pid=10651, tid=10654, prio=high) Oct 18 09:13:06 vdr01 vdr: [10654] reading EPG data from /var/cache/vdr/epg.data Oct 18 09:13:06 vdr01 vdr: [10651] creating cDvbHdFfDevice Oct 18 09:13:06 vdr01 vdr: [10651] new device number 1 Oct 18 09:13:06 vdr01 vdr: [10651] DVB API version is 0x050A (VDR was built with 0x0504) Oct 18 09:13:06 vdr01 vdr: [10651] frontend 0/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard") Oct 18 09:13:06 vdr01 vdr: [10656] tuner on frontend 0/0 thread started (pid=10651, tid=10656, prio=high) Oct 18 09:13:06 vdr01 vdr: [10657] section handler thread started (pid=10651, tid=10657, prio=low) Oct 18 09:13:06 vdr01 vdr: [10656] cTimeMs: using monotonic clock (resolution is 1 ns) Oct 18 09:13:06 vdr01 vdr: [10654] epg data reader thread ended (pid=10651, tid=10654) Oct 18 09:13:06 vdr01 vdr: [10651] probing /dev/dvb/adapter1/frontend0 Oct 18 09:13:06 vdr01 vdr: [10651] creating cDvbDevice Oct 18 09:13:06 vdr01 vdr: [10651] new device number 2 Oct 18 09:13:06 vdr01 vdr: [10651] frontend 1/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard") Oct 18 09:13:06 vdr01 vdr: [10659] tuner on frontend 1/0 thread started (pid=10651, tid=10659, prio=high) Oct 18 09:13:06 vdr01 vdr: [10651] found 2 DVB devices Oct 18 09:13:06 vdr01 vdr: [10660] section handler thread started (pid=10651, tid=10660, prio=low) Oct 18 09:13:06 vdr01 vdr: [10651] initializing plugin: dvbhddevice (2.0.2): HD Full Featured DVB device Oct 18 09:13:06 vdr01 vdr: [10651] setting primary device to 1 Oct 18 09:13:06 vdr01 vdr: [10651] assuming manual start of VDR Oct 18 09:13:06 vdr01 vdr: [10651] SVDRP listening on port 6419 Oct 18 09:13:06 vdr01 vdr: [10651] setting current skin to "lcars" Oct 18 09:13:06 vdr01 vdr: [10651] loading /var/lib/vdr/themes/lcars-default.theme Oct 18 09:13:06 vdr01 vdr: [10651] starting plugin: dvbhddevice Oct 18 09:13:06 vdr01 vdr: [10651] remote control LIRC - keys known Oct 18 09:13:06 vdr01 vdr: [10651] switching to channel 1 Oct 18 09:13:06 vdr01 vdr: [10661] LIRC remote control thread started (pid=10651, tid=10661, prio=high) Oct 18 09:13:06 vdr01 vdr: [10651] setting watchdog timer to 60 seconds Oct 18 09:13:06 vdr01 vdr: [10651] OSD size changed to 1920x1080 @ 1 Oct 18 09:13:07 vdr01 vdr: [10651] max. latency time 1 seconds
Die ERROR Meldungen im Log sind an dieser Stelle normal da ich kein LIRC verwende.
System neu starten und prüfen ob der VDR automatisch gestartet wird
Hiermit ist die VDR Installation grundsätzlich abgeschlossen. Nach einem Systemneustart sollte der VDR automatisch gestartet werden. Das könnt Ihr wie oben beschrieben im VDR Log sehen.
sudo init 6