Ubuntu HD VDR mittels SoftHDDevice und VDPAU/VDR

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Installation VDR

Downloadverzeichnis vorbereiten

mkdir -p /data/installfiles/vdr

Installationsmedien herunterladen

cd /data/installfiles/vdr
wget ftp://ftp.tvdr.de/vdr/vdr-2.2.0.tar.bz2

vdruser in die Gruppe video und audio aufnehmen

sudo adduser vdruser video
sudo adduser vdruser audio

Danach müsst Ihr euch erneut am System anmelden damit die neue Gruppenzugehörigkeit für den vdruser angezogen wird. Alternativ einfach einen Neustart durchführen.

VDR entpacken, vorbereiten und installieren

cd /usr/local/src
sudo tar -xjf /data/installfiles/vdr/vdr-2.2.0.tar.bz2 
sudo ln -s vdr-2.2.0/ vdr

Shutdownskript erstellen und ablegen

sudo vi /usr/local/bin/vdrpoweroff.sh
#!/bin/bash
sudo /sbin/poweroff

und anschließend das Skript ausführbar machen:

sudo 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.

sudo visudo
vdruser ALL=(ALL) NOPASSWD: /sbin/poweroff,/usr/local/bin/vdrpoweroff.sh

VDR Installation starten

cd /usr/local/src/vdr
sudo make REMOTE=LIRC && sudo make install

Videoverzeichnis anpassen

In das Videoverzeichnis werden später die TV Aufnahmen vom VDR abgelegt. Da ich mich an den Standardpfad für das Videroverzeichnis des VDR halten möchte, mein vorhander Festplattenspeicher aber auf einer anderen Partition liegt, setzen wir einen Link.

mkdir -p /data/vdrrecords
sudo rm -r /srv/vdr/video
sudo ln -s /data/vdrrecords/ /srv/vdr/video

Somit werden die VDR Aufnahmen in das Standardverzeichnis /srv/vdr/video geschrieben, landen aber auf der Festplattenpartition mit dem dafür vorgesehen Speicherplatz.

VDR mittels runvdr starten

Um den VDR zu starten verwende ich das mittgelieferte runvdr Skript.

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 3.1 2015/02/05 10:28:53 kls Exp $

export LANG=de_DE.utf8
export LC_COLLATE=de_DE.utf8
export VDR_CHARSET_OVERRIDE=ISO-8859-9

VDRPRG="/usr/local/bin/vdr"

VDROPTIONS="-w 0 -u vdruser -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh"
# For other options see manpage vdr.1

VDRPLUGINS=""
# 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:
DriverLoaded()
{
  return 1
}

# Load all DVB driver modules needed for your hardware:
LoadDriver()
{
  return 0
}

# Unload all DVB driver modules loaded in LoadDriver():
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

Optional: Tuner auf der TV Karte konfigurieren

Achtung! Falls nicht alle Tuner an der TV Karte angeschlossen bzw. benutzt werden, muss dies im VDR konfiguriert 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 wenn nur zwei der vier vorhandenen Tuner verwendet werden:

sudo vi /usr/local/bin/runvdr
VDROPTIONS="-w 0 -D0 -D1 -u vdruser -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh"

somit werden nur der Tuner 0 und Tuner 1 der TV-Karte verwendet.

Optional: remote.conf erstellen

Die Datei muss nicht manuell erstellt werden. Startet der VDR ohne diese Datei wird automatisch ein Anlernmenü am TV gestartet. Nach Konfiguration über das Anlernmenü wird automatisch eine remote.conf erzeugt.

sudo vi /var/lib/vdr/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

remote.conf für IRTrans erweitern

Ihr könnt euch die remote.conf mittels VDR über das OSD-Anlernprogramm erstellen. Wenn Ihr euch die remote.conf manuell erstellen möchtet müssen die VDR-LIRC Kommandos mit den Tasten aus der obigen IRTrans Konfigurationsdatei zugeordnet werden. Achtung! Die Namen sind Case Sensitive.

sudo vi /var/lib/vdr/remote.conf
LIRC.Up         up
LIRC.Down       down
LIRC.Menu       menu
LIRC.Ok         ok
LIRC.Back       exit
LIRC.Left       left
LIRC.Right      right
LIRC.Red        red
LIRC.Green      green
LIRC.Yellow     yellow
LIRC.Blue       blue
LIRC.0          0
LIRC.1          1
LIRC.2          2
LIRC.3          3
LIRC.4          4
LIRC.5          5
LIRC.6          6
LIRC.7          7
LIRC.8          8
LIRC.9          9
LIRC.Info       info
LIRC.Play       play
LIRC.Pause      pause
LIRC.Stop       stop
LIRC.Record     rec
LIRC.FastFwd    fwd
LIRC.FastRew    rew
LIRC.Next       skip
LIRC.Prev       replay
LIRC.Power      power
LIRC.Channel+   ch+
LIRC.Channel-   ch-
LIRC.PrevChannel prev
LIRC.Volume+    vol+
LIRC.Volume-    vol-
LIRC.Mute       mute
LIRC.Audio      audio
LIRC.Subtitles  subtitle
LIRC.Schedule   guide
LIRC.Channels   channels
LIRC.Timers     timer
LIRC.Recordings recordings
LIRC.Setup      setup
LIRC.Commands   commands
LIRC.User1      user1
LIRC.User2      user2
LIRC.User3      user3
LIRC.User4      user4
LIRC.User5      user5
LIRC.User6      user6
LIRC.User7      user7
LIRC.User8      user8
LIRC.User9      user9

svdrphosts.conf anpassen

sudo vi /var/lib/vdr/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 auf non-root vdruser umstellen

sudo chown -R vdruser.vdruser /var/lib/vdr /var/cache/vdr

VDR auf Lauffähigkeit überprüfen

Achtung! Bisher kann noch kein TV Bild angezeigt werden da noch kein Ausgabedevice Plugin eingerichtet ist. Die ERROR Meldungen sind hier vorerst normal. Am besten Ihr öffnet zwei SSH Sessions, wie folgt, auf eurem VDR.

SSH Session 1

Hier wird das syslog geöffnet um die VDR Meldungen beim starten zu sehen:

tail -f /var/log/syslog

SSH Session 2

Hier wird der VDR manuell gestartet:

/usr/local/bin/runvdr

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:

Jan 31 16:40:17 vdr vdr: [4320] VDR version 2.1.9 started
Jan 31 16:40:17 vdr vdr: [4320] switched to user 'vdruser'
Jan 31 16:40:17 vdr vdr: [4320] codeset is 'UTF-8' - known
Jan 31 16:40:17 vdr vdr: [4320] found 28 locales in /usr/local/share/locale
Jan 31 16:40:17 vdr vdr: [4320] creating directory /var/lib/vdr/themes
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/sources.conf
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/diseqc.conf
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/scr.conf
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/channels.conf
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/svdrphosts.conf
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/remote.conf
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/keymacros.conf
Jan 31 16:40:17 vdr vdr: [4320] registered source parameters for 'A - ATSC'
Jan 31 16:40:17 vdr vdr: [4320] registered source parameters for 'C - DVB-C'
Jan 31 16:40:17 vdr vdr: [4320] registered source parameters for 'S - DVB-S'
Jan 31 16:40:17 vdr vdr: [4320] registered source parameters for 'T - DVB-T'
Jan 31 16:40:17 vdr vdr: [4322] video directory scanner thread started (pid=4320, tid=4322, prio=high)
Jan 31 16:40:17 vdr vdr: [4323] epg data reader thread started (pid=4320, tid=4323, prio=high)
Jan 31 16:40:17 vdr vdr: [4323] epg data reader thread ended (pid=4320, tid=4323)
Jan 31 16:40:17 vdr vdr: [4321] video directory scanner thread started (pid=4320, tid=4321, prio=high)
Jan 31 16:40:17 vdr vdr: [4320] probing /dev/dvb/adapter0/frontend0
Jan 31 16:40:17 vdr vdr: [4320] creating cDvbDevice
Jan 31 16:40:17 vdr vdr: [4320] new device number 1
Jan 31 16:40:17 vdr vdr: [4320] DVB API version is 0x050A (VDR was built with 0x050A)
Jan 31 16:40:17 vdr vdr: [4320] frontend 0/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard")
Jan 31 16:40:17 vdr vdr: [4325] frontend 0/0 tuner thread started (pid=4320, tid=4325, prio=high)
Jan 31 16:40:17 vdr vdr: [4320] cTimeMs: using monotonic clock (resolution is 1 ns)
Jan 31 16:40:17 vdr vdr: [4320] probing /dev/dvb/adapter1/frontend0
Jan 31 16:40:17 vdr vdr: [4320] creating cDvbDevice
Jan 31 16:40:17 vdr vdr: [4320] new device number 2
Jan 31 16:40:17 vdr vdr: [4326] device 1 section handler thread started (pid=4320, tid=4326, prio=low)
Jan 31 16:40:17 vdr vdr: [4320] frontend 1/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard")
Jan 31 16:40:17 vdr vdr: [4320] probing /dev/dvb/adapter2/frontend0
Jan 31 16:40:17 vdr vdr: [4320] creating cDvbDevice
Jan 31 16:40:17 vdr vdr: [4320] new device number 3
Jan 31 16:40:17 vdr vdr: [4329] device 2 section handler thread started (pid=4320, tid=4329, prio=low)
Jan 31 16:40:17 vdr vdr: [4328] frontend 1/0 tuner thread started (pid=4320, tid=4328, prio=high)
Jan 31 16:40:17 vdr vdr: [4320] frontend 2/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard")
Jan 31 16:40:17 vdr vdr: [4331] frontend 2/0 tuner thread started (pid=4320, tid=4331, prio=high)
Jan 31 16:40:17 vdr vdr: [4320] probing /dev/dvb/adapter3/frontend0
Jan 31 16:40:17 vdr vdr: [4320] creating cDvbDevice
Jan 31 16:40:17 vdr vdr: [4320] new device number 4
Jan 31 16:40:17 vdr vdr: [4332] device 3 section handler thread started (pid=4320, tid=4332, prio=low)
Jan 31 16:40:17 vdr vdr: [4320] frontend 3/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard")
Jan 31 16:40:17 vdr vdr: [4320] found 4 DVB devices
Jan 31 16:40:17 vdr vdr: [4334] frontend 3/0 tuner thread started (pid=4320, tid=4334, prio=high)
Jan 31 16:40:17 vdr vdr: [4320] setting primary device to 1
Jan 31 16:40:17 vdr vdr: [4320] device 1 has no MPEG decoder
Jan 31 16:40:17 vdr vdr: [4320] assuming manual start of VDR
Jan 31 16:40:17 vdr vdr: [4335] device 4 section handler thread started (pid=4320, tid=4335, prio=low)
Jan 31 16:40:17 vdr vdr: [4320] SVDRP listening on port 6419
Jan 31 16:40:17 vdr vdr: [4320] setting current skin to "lcars"
Jan 31 16:40:17 vdr vdr: [4320] loading /var/lib/vdr/themes/lcars-default.theme
Jan 31 16:40:17 vdr vdr: [4320] remote control LIRC - keys known
Jan 31 16:40:17 vdr vdr: [4320] remote control KBD - keys known
Jan 31 16:40:17 vdr vdr: [4337] KBD remote control thread started (pid=4320, tid=4337, prio=high)
Jan 31 16:40:17 vdr vdr: [4336] LIRC remote control thread started (pid=4320, tid=4336, prio=high)
Jan 31 16:40:17 vdr vdr: [4320] OSD size changed to 720x480 @ 1
Jan 31 16:40:17 vdr vdr: [4320] ERROR: no OSD provider available - using dummy OSD!
Jan 31 16:40:20 vdr vdr: [4322] video directory scanner thread ended (pid=4320, tid=4322)
Jan 31 16:40:21 vdr vdr: [4321] video directory scanner thread ended (pid=4320, tid=4321)

Achtung! Ein TV Bild wird noch nicht angezeigt da noch kein VDR Ausgabedevice Plugin eingerichtet ist.

Linksammlung

  1. Video Disk Recorder
  2. VDR FTP-Server
  3. VDR Portal