Installation HD-fähiger VDR unter Debian

© Klaus Schmidinger, the screenshot for this image was taken from www.tvdr.de

Einleitung

Diese Anleitung befindet sich im Aufbau. Hier muss ich noch einiges dran arbeiten und vervollständigen. Ich denke dennoch, dass der jetzige Stand der Anleitung schon ausreicht, um hilfreiche Tipps zu liefern.

Bedient habe ich mich bei vielen Leuten, beispielsweise hier:

Allgemein sind das VDR-Portal und das VDR-Wiki meine wichtigsten Informationsquellen.

Der VDR basiert auf Debian und dem e-tobi ng-experimental Repository. Tobi ist übrigens auch der, der für die Pakete des c’t VDRs verantwortlich zeichnet. Nach mehr als vier Jahren c’t VDR bin ich immer noch zufrieden und bleibe einfach dabei. Ich habe mich damals schon für den c’t VDR unter Debian entschieden, weil ich wenig fummeln und möglichst nur fertige Pakete einsetzen möchte – ohne selbst Pakete zu schnüren und kompilieren zu müssen. Bisher ist mir das auch gelungen.

Das ng-experimental Repository existiert erst seit kurz vor der Jahreswende 2009/2010, hier wird also sicherlich noch viel passieren! ;-)

Trotzdem geht schon sehr viel:

  • SD Fernsehen
  • HD Fernsehen
  • Wiedergabe der Aufnahmen sowie AVIs, MKVs, MOVs in HD und SD
  • Wiedergabe von Musik und Bildern
  • Timerverwaltung, EPG-Programm und Fernsehen über Webbrowser

Plus die üblichen Dinge, die der VDR über Plugins noch kann. Der MPlayer funktioniert in meinem Setup nicht, ist aber an sich auch unnötig, da das xineliboutput Plugin oder auch das XBMC alles mitbringt, was der MPlayer bisher für mich erledigt hat.

Schneiden war lange Zeit ein Problem. Schnittmarken wurden über die Tasten “4” und “6” wohl verschoben, man sah aber nichts auf dem Bildschirm. Dies gehört aber der Vergangenheit an.

Ich spare mir in der folgenden Anleitung teilweise die Einzelheiten, etwas Linuxerfahrung oder teilweise auch speziell Debianerfahrung sollte man schon mitbringen. Auch erhebt die Anleitung keinen Anspruch auf Vollständigkeit, oder dass das Setup mit anderen Programmversionen oder anderer Hardware als der von mir eingesetzten Hardware genau so läuft.

Installation des Debian Grundsystems

Installation über eine NetInst-CD. Ich habe mich für Debian Squeeze (so wird die kommende Version 6.0 heissen) entschieden, die über die aktuelle 5.0.x Lenny (stable) Version installiert wird. Squeeze deswegen, weil das ng-experimental Repository von e-tobi Squeeze fast schon voraussetzt. Zumindest empfiehlt Tobi dringend ein Upgrade von Lenny nach Squeeze.

Da die amd64 Architektur inzwischen genau so gut unterstützt wird wie die klassische i386 Architektur, habe ich auch aufgrund der zum Einsatz kommenden Hardware gleich darauf gesetzt. amd64 ist übrigens auch für 64 bit Intel Prozessoren geeignet. ;-)

NetInst-CD einlegen und eine “normale” Installation machen. Die Systemplatte habe ich automatisch partitionieren lassen (alle Daten in eine Partition). sda1 ist die Systempartition im ext3 Format, sda5 ist die swap-Partition. Bei der Auswahl, was man alles installieren möchste, alles abwählen, auch das “Standard-System”. Ich installiere übrigens immer Englisch, so finden sich im Internet leichter gewisse Fehlermeldungen. In diesem Fall müssen (siehe unten) deutsche Locales noch nachinstalliert werden. Ich bin auch ein großen Freund von festen IP-Adressen, zumindest bei Servern, und einen VDR sehe ich fast als einen solchen an. Deswegen bei im lokalen Netz vorhandenen DHCP-Server während der Installation bis nach der fehlgeschlagenen automatischen Netzwerkkonfiguration das Netzwerkkabel abziehen.

Nach dem Schreiben des Bootloaders Grub in den MBR der Festplatte und dem darauf folgenden Reboot geht es dann als eingeloggter root-Benutzer zur Sache.

System SSH-fähig machen

apt-get install openssh-server

Ab jetzt geht es mit SSH weiter, am besten mit PuTTY, oder noch besser mit KiTTY, einem schicken Fork von PuTTY. Auch wieder als root einloggen…

Anpassung Paketlisten, Installation diverser Grundpakete und Grundkonfiguration

Da ich nur mit dem Midnight Commander arbeite, v.a. auch zum Editieren von Dateien (ich hasse vi!), muss dieser zuerst einmal drauf:

apt-get install mc

Da in den aktuellen Versionen vom Midnight Commander der Editor “vi” Standard ist, kann bzw. sollte ;-) dies in den Optionen auf den internen Editor umgestellt werden.

/etc/apt/sources.list editieren:

deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free
 
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
 
deb http://www.debian-multimedia.org testing main
 
deb http://e-tobi.net/vdr-experimental squeeze base addons
deb http://e-tobi.net/vdr-ng-experimental squeeze backports base addons vdr-multipatch

/etc/apt/preferences editieren:

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 600
 
Package: *
Pin: release o=e-tobi.net
Pin-Priority: 1001

Diese Einträge bewirken, dass die e-tobi Pakete vor den Squeeze Paketen bevorzugt werden.

Repository-Keys holen und installieren:

wget -O - http://backports.org/debian/archive.key | apt-key add -

Repository-Listen aktualisieren:

apt-get update

Distribution-Upgrade machen (Lenny-Pakete werden durch die aktuellen Squeeze Pakete ersetzt):

apt-get dist-upgrade

Locales (Sprachen) anpassen:

dpkg-reconfigure locales

Ich wähle hier immer de_DE, de_DE.UTF-8, de_de@euro, en_US und en_US.ISO-8859-15 aus, en_US.UTF-8 sollte schon ausgewählt sein. Default system locale auf en_US.UTF-8 belassen.

/etc/inputrc editieren und folgendes eintragen bzw aktivieren:

set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

/etc/profile editieren und folgendes eintragen:

export LC_CTYPE=de_DE

Nach Ab- und Wiederanmeldung sollten nun Umlaute auf der Console und im Midnight Commander funktionieren.

Noch ein paar Grundpakete installieren:

apt-get install bzip2 unzip pciutils hddtemp dump htop rsync nfs-common nfs-kernel-server smbfs

VDR-fähiger Kernel

Wir verwenden den lenny-backport Kernel. Dieser wird anscheinend auch von e-tobi empfohlen.

Der Backport-Kernel startet nur, wenn man folgende Module beim Systemstart blacklistet (in /etc/modprobe.d/blacklist eintragen):

blacklist comedi
blacklist pcspkr
blacklist comedi_fc
blacklist s626

Ansonsten bleibt das System beim Start bei udev hängen.

Danke an Martin Schubmehl für diesen Tipp!

apt-get install linux-image-2.6-amd64 linux-headers-2.6.30-bpo.1-all-amd64 linux-headers-2.6.30-bpo.1-amd64 linux-headers-2.6.30-bpo.1-common

Je nach aktueller Backport-Kernelversion den Befehl natürlich anpassen. Mit diesem Befehl können die verfügbaren Pakete angezeigt werden, die “linux-image” enthalten:

apt-cache search linux-image

Rebooten damit der neue Kernel und die weiter oben gemachten Einstellungen in Betrieb gehen kann:

shutdown -r now

Alternative e-tobi Kernel:

/etc/apt/preferences editieren und folgendes hinzufügen:

Package: linux-image-2.6-amd64
Pin: version 2.6.26*
Pin-Priority: 1000

Der Eintrag sorgt dafür, dass der mit der NetInst CD installierte Standardkernel 2.6.26 (Paketname linux-image-2.6-amd64) nicht aktualisiert wird. Die Folge wäre, dass (im Moment) ein 2.6.30 Backport-Kernel installiert wird, der, zumindest auf meinem System, wegen udev-Problemen nicht durchbootet. Ausserdem ist dieser Kernel nicht für den VDR optimiert, wir installieren eh den e-tobi Kernel. Da der e-tobi Kernel eine kleinere Versionsnummer hat, müsste bei jedem Backport Kernelupdate die menu.lst von Grub editiert werden, da die Kernelimages mit der höchsten Version standardmäßig nach oben gesetzt werden. Alles Stress, deswegen sperren wir das Paket linux-image-2.6-amd64. Sollte die NetInst CD einmal einen neueren Kernel installieren, muss die Version in o.g. Datei entsprechend angepasst werden. Falls eine Installation mit der i386 Architektur gemacht wird, den Wert bitte auch entsprechend anpassen!

apt-get install linux-image-2.6.28-etobi.3-amd64 linux-headers-2.6.28-etobi.3-all-amd64

Auch hier nach der Installation einen Reboot machen.

Installation NVidia-Treiber

Für den VDR wird die Version 190.53 benötigt. Version 173 ist nicht ausreichend. Die nvidia-settings installieren zwar in Version 173, haben aber mit dem Treiber nichts zu tun und funktionieren trotzdem.

apt-get install module-assistant nvidia-kernel-common
module-assistant auto-install nvidia
apt-get install nvidia-glx nvidia-settings

Der zweite Befehl muss wiederholt werden, wenn ein neuer Kernel installiert wird!

Installation LIRC Module

Die LIRC Module werden beispielsweise benötigt, wenn ein serieller Infrarotempfänger verwendet werden soll.

apt-get install lirc-modules-source setserial
module-assistant auto-install lirc

Der zweite Befehl muss wiederholt werden, wenn ein neuer Kernel installiert wird!

Hinweis:
Aus lirc-modules-source 0.8.3-3 lassen sich die LIRC-Module nicht erzeugen, der module-assistant bricht immer ab. In dem Fall von Hand die testing-Version runterladen und installieren und dann module-assistant seine Arbeit tun lassen:

wget http://ftp.de.debian.org/debian/pool/main/l/lirc/lirc-modules-source_0.8.3-5_all.deb
dpkg -i lirc-modules-source_0.8.3-5_all.deb

Installation Mantis Treiber

Der Mantis Treiber wird nur bei einigen Karten benötigt, beispielsweise für die TechniSat CableStar HD2.

Hier eine Übersicht von momentan unterstützten DVB-C, DVB-S und DVB-T Budget Karten. Die Listen sind mit Angaben, ob ein zusätzlicher Treiber benötigt wird oder ob der Kernel die Unterstützung bequemerweise schon mitbringt.

cd /usr/src
wget http://mercurial.intuxication.org/hg/s2-liplianin/archive/tip.tar.bz2
tip.tar.bz2 entpacken, in das neue Verzeichnis wechseln, z.B. /usr/src/s2-liplianin:
make all
make install

XServer und VDR installieren

apt-get install less alsa-utils xterm xorg nodm x11-xserver-utils ffmpeg fluxbox
apt-get install vdr vdr-plugin-dvd vdr-plugin-dvdswitch vdr-plugin-epgsearch vdr-plugin-externalplayer vdr-plugin-femon vdr-plugin-live vdr-plugin-menuorg vdr-plugin-mp3 vdr-plugin-mplayer vdr-plugin-noepgmenu vdr-plugin-streamdev-client vdr-plugin-streamdev-server vdr-plugin-sysinfo vdr-plugin-tvonscreen vdr-plugin-weatherng vdr-plugin-xineliboutput vdr-plugin-burn vdr-addon-acpiwakeup vdr-addon-vdrconvert vdr-xpmlogos vdr-plugin-text2skin vdr-skins vdr-channellogos vdr-skins-speciallogos ttf-vdrsymbols vdr-skin-pearlhd w-scan libxineliboutput-sxfe xineliboutput-sxfe libxine1 libxine1-xvdr libxinerama1 nvidia-libvdpau1-driver libxine1 libxine1-xvdr libxineliboutput-sxfe libxinerama1 xineliboutput-sxfe libxine1-all-plugins libxine1-gnome libxine1-vdpau-plugins
usermod -G video,audio,cdrom vdr

/etc/X11/xorg.conf editieren:

Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
 
Section "Files"
EndSection
 
Section "Extensions"
Option "Composite" "Disable"
EndSection
 
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
 
Section "ServerFlags"
Option "Xinerama" "0"
EndSection
 
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "de"
Option "XkbVariant" "nodeadkeys"
EndSection
 
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
EndSection
 
Section "Device"
Identifier "VideoDevice0"
Driver "nvidia"
Option "Coolbits" "1"
Option "NoLogo" "True"
Option "ConstantDPI" "False"
Option "UseEDIDDpi" "False"
Option "CustomEdid" "DFP-1:/etc/X11/edid1.bin"
Option "ConnectedMonitor" "DFP-1"
Option "UseDisplayDevice" "DFP-1"
Option "ExactModeTimingsDVI" "True"
Option "ModeValidation" "DFP-1: AllowNon60HzDFPModes, NoEdidModes, NoVesaModes, NoXServerModes, NoPredefinedModes, NoDFPNativeResolutionCheck, NoHorizSyncCheck, NoVertRefreshCheck"
EndSection
 
Section "Monitor"
Identifier "Monitor0"
HorizSync 15.0 - 82.0
VertRefresh 20.0 - 86.0
Option "DPMS" "False"
# 1920x1080p @ 50Hz
ModeLine "1920x1080@50" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
# 1920x1080p @ 60Hz
ModeLine "1920x1080@60" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
EndSection
 
Section "Screen"
Identifier "Screen0"
Monitor "Monitor0"
Device "VideoDevice0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1920x1080@50" "1920x1080@60"
EndSubSection
EndSection

/etc/X11/edid1.bin kann über nvidia-settings unter X erstellt werden.

Die xorg.conf soll noch multimonitorfähig gemacht werden, bisher noch nicht hinbekommen… ;-)

/var/lib/vdr/channels.conf aus dem VDR Wiki je nach Variante (DVB-C, DVB-S oder DVB-T) und Wohnort grundbefüllen.

/var/lib/vdr/setup.conf erstellen und mit den Settings des xineliboutput Plugins grundbefüllen:

OSDAspect = 1.000000
OSDHeight = 1080
OSDHeightP = 1.000000
OSDLanguage = de_DE
OSDLeft = 0
OSDLeftP = 0.000000
OSDSkin = PearlHD
OSDTop = 0
OSDTopP = 0.000000
OSDWidth = 1920
OSDWidthP = 1.000000
ShowReplayMode = 1
xine.osdExtent.X = 1920
xine.osdExtent.Y = 1080
xine.osdMode = osdBlendScaledAuto
xine.transparencyMode = transparencyOn
xineliboutput.Audio.Compression = 500
xineliboutput.Audio.Delay = 0
xineliboutput.Audio.Driver = alsa
xineliboutput.Audio.Equalizer = 0 0 0 0 0 0 0 0 0 0
xineliboutput.Audio.Headphone = 0
xineliboutput.Audio.Port = default
xineliboutput.Audio.SoftwareVolumeControl = 0
xineliboutput.Audio.Speakers = Surround 5.1
xineliboutput.Audio.Surround = 0
xineliboutput.Audio.Upmix = 0
xineliboutput.Audio.Visualization = none
xineliboutput.Audio.Visualization.GoomOpts = width=1440,height=768,fps=25
xineliboutput.Decoder.PesBuffers = 900
xineliboutput.DisplayAspect = Pan&Scan
xineliboutput.Frontend = sxfe
xineliboutput.Fullscreen = 1
xineliboutput.Media.BrowseFilesDir = /media
xineliboutput.Media.BrowseImagesDir = /media/filme/21
xineliboutput.Media.BrowseMusicDir = /media/filme1
xineliboutput.Media.CacheImplicitPlaylists = 1
xineliboutput.Media.EnableID3Scanner = 1
xineliboutput.Modeline =
xineliboutput.OSD.AlphaCorrection = 0
xineliboutput.OSD.AlphaCorrectionAbs = 0
xineliboutput.OSD.Blending = 1
xineliboutput.OSD.BlendingLowRes = 1
xineliboutput.OSD.ExtSubSize = -1
xineliboutput.OSD.HideMainMenu = 0
xineliboutput.OSD.LayersVisible = 4
xineliboutput.OSD.Scaling = 2
xineliboutput.OSD.Size = 1920x1080
xineliboutput.OSD.SoftOSD = 1
xineliboutput.Playlist.Album = 1
xineliboutput.Playlist.Artist = 1
xineliboutput.Playlist.Tracknumber = 1
xineliboutput.Post.denoise3d.chroma = 30
xineliboutput.Post.denoise3d.Enable = 0
xineliboutput.Post.denoise3d.luma = 40
xineliboutput.Post.denoise3d.time = 60
xineliboutput.Post.pp.Enable = 0
xineliboutput.Post.pp.Mode = de
xineliboutput.Post.pp.Quality = 3
xineliboutput.Post.unsharp.chroma_amount = 0
xineliboutput.Post.unsharp.chroma_matrix_height = 3
xineliboutput.Post.unsharp.chroma_matrix_width = 3
xineliboutput.Post.unsharp.Enable = 0
xineliboutput.Post.unsharp.luma_amount = 0
xineliboutput.Post.unsharp.luma_matrix_height = 5
xineliboutput.Post.unsharp.luma_matrix_width = 5
xineliboutput.Remote.AllowHttp = 1
xineliboutput.Remote.AllowHttpCtrl = 0
xineliboutput.Remote.AllowRtsp = 1
xineliboutput.Remote.AllowRtspCtrl = 0
xineliboutput.Remote.Iface =
xineliboutput.Remote.Keyboard = 1
xineliboutput.Remote.ListenPort = 37890
xineliboutput.Remote.LocalIP =
xineliboutput.Remote.Rtp.Address = 224.0.1.9
xineliboutput.Remote.Rtp.AlwaysOn = 0
xineliboutput.Remote.Rtp.Port = 37890
xineliboutput.Remote.Rtp.SapAnnouncements = 1
xineliboutput.Remote.Rtp.TTL = 1
xineliboutput.Remote.UseBroadcast = 1
xineliboutput.Remote.UseHttp = 1
xineliboutput.Remote.UsePipe = 1
xineliboutput.Remote.UseRtp = 1
xineliboutput.Remote.UseTcp = 1
xineliboutput.Remote.UseUdp = 1
xineliboutput.RemoteMode = 0
xineliboutput.Video.AspectRatio = 0
xineliboutput.Video.AutoCrop = 1
xineliboutput.Video.AutoCrop.AutoDetect = 1
xineliboutput.Video.AutoCrop.DetectSubs = 0
xineliboutput.Video.AutoCrop.FixedSize = 0
xineliboutput.Video.AutoCrop.SoftStart = 1
xineliboutput.Video.Brightness = -1
xineliboutput.Video.Contrast = -1
xineliboutput.Video.Deinterlace = none
xineliboutput.Video.DeinterlaceOptions = method=use_vo_driver, cheap_mode=1, pulldown=none, framerate_mode=full, judder_correction=1, use_progressive_frame_flag=1, chroma_filter=0, enabled=1
xineliboutput.Video.Driver = auto
xineliboutput.Video.FieldOrder = 0
xineliboutput.Video.HUE = -1
xineliboutput.Video.IBPTrickSpeed = 1
xineliboutput.Video.MaxTrickSpeed = 12
xineliboutput.Video.Overscan = 0
xineliboutput.Video.Port = :0.1
xineliboutput.Video.Saturation = -1
xineliboutput.Video.Scale = 1
xineliboutput.Video.SwScale = 0
xineliboutput.Video.SwScale.Aspect = 1
xineliboutput.Video.SwScale.Downscale = 1
xineliboutput.Video.SwScale.Height = 1080
xineliboutput.Video.SwScale.Resize = 1
xineliboutput.Video.SwScale.Width = 1920
xineliboutput.VideoModeSwitching = 1
xineliboutput.X11.UseKeyboard = 1
xineliboutput.X11.WindowHeight = 1080
xineliboutput.X11.WindowWidth = 1920

Sollte später beim Start des VDRs nur ein schmaler horizontaler Streifen auf dem Bildschirm zu sehen sein, anstatt dieser Zeile

xineliboutput.DisplayAspect = Pan&Scan

folgende Zeile einbauen:

xineliboutput.DisplayAspect = CenterCutOut

/var/lib/vdr/remote.conf erstellen und befüllen. Eine Konfiguration mit einer provisorischen Tastaturkonfiguration (falls die Fernbedienung mal nicht geht) und einer Fernbedienung über LIRC könnte beispielsweise so aussehen:

KBD.Up 00000000001B5B41
KBD.Down 00000000001B5B42
KBD.Menu 000000000000006D
KBD.Ok 000000000000000D
KBD.Back 000000000000007F
KBD.Left 00000000001B5B44
KBD.Right 00000000001B5B43
KBD.Red 000000001B5B5B41
KBD.Green 000000001B5B5B42
KBD.Yellow 000000001B5B5B43
KBD.Blue 000000001B5B5B44
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.Info 0000000000000069
KBD.FastFwd 0000001B5B31377E
KBD.FastRew 000000001B5B5B45
KBD.Power 0000000000000070
KBD.Volume+ 0000001B5B32347E
KBD.Volume- 0000001B5B32337E
KBD.Mute 0000001B5B32317E
KBD.User7 0000001B5B31387E
KBD.User8 0000001B5B31397E
KBD.User9 0000001B5B32307E
XKeySym.Up Up
XKeySym.Down Down
XKeySym.Menu m
XKeySym.Ok Return
XKeySym.Back BackSpace
XKeySym.Left Left
XKeySym.Right Right
XKeySym.Red F1
XKeySym.Green F2
XKeySym.Yellow F3
XKeySym.Blue F4
XKeySym.0 0
XKeySym.1 1
XKeySym.2 2
XKeySym.3 3
XKeySym.4 4
XKeySym.5 5
XKeySym.6 6
XKeySym.7 7
XKeySym.8 8
XKeySym.9 9
XKeySym.Info i
XKeySym.Pause space
XKeySym.FastFwd F6
XKeySym.FastRew F5
XKeySym.Power p
XKeySym.Volume+ F12
XKeySym.Volume- F11
XKeySym.Mute F10
XKeySym.User7 F7
XKeySym.User8 F8
XKeySym.User9 F9
LIRC.Up Up
LIRC.Down Down
LIRC.Menu Menu
LIRC.Ok Ok
LIRC.Back Back
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.Power Power
LIRC.Volume+ Volume+
LIRC.Volume- Volume-
LIRC.Mute Mute

/etc/vdr/plugins/plugin.xineliboutput.conf editieren:

--video=vdpau
--post tvtime:method=use_vo_driver
--local=sxfe
--fullscreen
--primary
--remote=127.0.0.1:37890

VDR den Zugriff auf den XServer erlauben:
/root/.xhosts (~/.xhosts) mit folgendem Inhalt erstellen:

127.0.0.1

Audiosynchronisation bei asynchronem Ton:
/root/.xine/config_xineliboutput (~/.xine/config_xineliboutput) mit folgendem Inhalt erstellen:

audio.synchronization.av_sync_method:resample
audio.synchronization.force_rate:48000
audio.synchronization.resample_mode:on
engine.buffers.video_num_frames:44
engine.buffers.audio_num_buffers:550

Die beiden letzten Punkte sind für HD-Inhalte.

O.g. 5 Punkte auch in /var/lib/vdr/plugins/xineliboutput/config eintragen!

XServer Start einschalten:
/etc/default/nodm folgendes ändern:

NODM_ENABLED=true

XServer starten:

/etc/init.d/nodm start

Die Taskleiste mit der Maus wegklicken (ausblenden), denn ab und an ist diese dann bei gestartetem VDR immer noch zu sehen, warum auch immer.

Wer die Taskleiste nicht mit der Maus wegklicken will oder gar keine Maus angeschlossen hat:

/root/.fluxbox/init erstellen bzw editieren und folgendes eintragen (Danke an mahlman):

session.screen0.toolbar.autoHide: true
session.screen0.slit.autoHide: true
session.screen1.toolbar.autoHide: true
session.screen1.slit.autoHide: true

Fernbedienung über seriellen Infrarotempfänger und LIRC

Weiter oben wurden schon die LIRC Module für den seriellen Infrarotempfänger installiert sowie die remote.conf des VDR befüllt. Hier die entsprechenden Settings für die Config Dateien von LIRC selbst:

LIRC stoppen:

/etc/init.d/lirc stop

/etc/lirc/hardware.conf editieren und folgendes eintragen:

DEVICE="/dev/lirc0"

Fernbedienung anlernen:

irrecord -d /dev/lirc0 /etc/lircd.conf

In meinem Setup war es noch notwendig, den seriellen Port “frei zu machen”. Vorher konnte das lirc_serial Modul nicht geladen werden. Deswegen habe ich lirc_serial nicht in /etc/modules eingetragen sondern ein kleines Script /etc/init.d/modprobe_lirc_serial erstellt, das beim Start des Systems den seriellen Port bearbeitet und dann das Module lädt:

#!/bin/sh
setserial /dev/ttyS0 uart none
modprobe lirc_serial

Eintragen in den Systemstart mit:

update-rc.d modprobe_lirc_serial start 18 2 3 4 5 .

Hinweis:
Zum Einlernen der Fernbedienung kann es also auch gut sein, dass das o.g. Script vorher gestartet werden muss. Eventuell ist es auch so, dass modprobe lirc_serial genügt, da der Serial Port nur beim Systemstart “belegt” ist.

(Digitaler) Sound über alsa

Entnommen u.a. diesem Howto.

Den User vdr in die Gruppe audio aufnehmen, sonst geht gar nichts!

addgroup vdr audio

Soundkarte(n) anzeigen lassen:

cat /proc/asound/cards

So könnte die Ausgabe aussehen:

0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xe8200000 irq 16

Sounddevices anzeigen lassen:

cat /proc/asound/devices

So könnte die Ausgabe aussehen:

0: [ 0] : control
1: : sequencer
16: [ 0- 0]: digital audio playback
17: [ 0- 1]: digital audio playback
24: [ 0- 0]: digital audio capture
25: [ 0- 1]: digital audio capture
26: [ 0- 2]: digital audio capture
33: : timer

Zweimal digitaler Sound, einmal 0-0 und einmal 0-1, die in der Config des VDRs eingestellt werden können. Bei mir passte 0-1, was zu folgender Config in /var/lib/vdr/setup.conf führt:

xineliboutput.Audio.Port = hw:0,1
xineliboutput.Audio.Speakers = Pass Through

Mit dem Programm alsamixer den Master und IEC948 einschalten (m drücken zum togglen, MM = Mute, OO = Ein), den Master auch noch auf 100% anheben. Den Rest abschalten, vor allem IEC948 Default PCM!

Folgender Befehl schaltet den digitalen Output ein:

iecset audio on

Weitere Optionen für iecset, z.B. Samplingrate:

man iecset

Umlaute im EPG

Tauchen, z.B. bei Sky (Sky codiert die Umlaute wohl anders als alle anderen…), fehlerhafte Umlaute in Sendungstiteln oder -beschreibungen auf, dann folgendes in die /etc/defaults/vdr eintragen:

VDR_CHARSET_OVERRIDE=ISO-8859-9

Datenfestplatte konfigurieren

Um Strom zu sparen und die Hardware eventuell auch nicht so sehr abzunutzen, macht eine zweite Festplatte Sinn. Beispielsweise System auf einer SSD (Solid State Drive) oder einer 2.5″ Notebookfestplatte und die Aufnahmen dann auf einer großen Datenfestplatte. Die Datenplatte wird in den Standby geschickt sobald eine gewisse Zeit kein Zugriff erfolgt. Zugriff erfolgt nur beim Hoch- und Runterfahren des Systems sowie bei Aufnahmen und Wiedergabe der Aufnahme.

Der VDR erstellt automatisch das Verzeichnis /var/lib/video.00, in das die Aufnahmen kommen. Existiert ein Verzeichnis /var/lib/video.01, werden in video.00 nur noch die index und info Dateien abgelegt, die großen Datendateien kommen auf video.01, auf video.00 verbleibt nur ein Symlink auf die Dateien auf video.01. Beim Löschen von Aufnahmen werden automatisch beide Verzeichnisse bereinigt.

Das Setup sieht also so aus, dass video.00 auf der Systemplatte verbleibt und die Datenfestplatte in video.01 gemountet wird. Die /etc/fstab könnte dann folgendermaßen aussehen:

# proc /proc proc defaults 0 0
/dev/sda1 / ext3 errors=remount-ro 0 1
/dev/sdb1 /var/lib/video.01/ ext3 errors=remount-ro 0 2
/dev/sda5 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0

Existieren schon Aufnahmen, können diese mit Hilfe dieses Scripts angepasst werden:

#!/bin/bash
cd /var/lib/video.01
find . -type d -exec mkdir /var/lib/video.00/{} \; 2>/dev/nul
find . -type f -exec ln -s /var/lib/video.01/{} /var/lib/video.00/{} \;
touch /var/lib/video.00/.update

Dabei wird davon ausgegangen, dass die Aufnahmen auf video.01 liegen. Es werden identische Verzeichnisse auf video.00 erstellt und alle vorhandenen Dateien auf video.01 mit einem Symlink auf video.00 versehen. Nacharbeiten muss man trotzdem, möchte man beispielsweise die index und info Dateien auf video.00 haben. Macht meiner Meinung nach auch Sinn, denn diese Dateien werden benötigt, wenn man sich die Aufnahme in der Aufnahmeliste etwas genauer anguckt (nicht abspielt). Lässt man sich beispielsweise die Informationen zur Aufnahme anzeigen, wacht die Datenplatte aus dem Standby auf.

Damit die Datenplatte auch in den Standby geht, hdparm installieren:

apt-get install hdparm

Mit diesen Zeilen in /etc/hdparm.conf schläft die Datenfestplatte nach 15 Minuten ein:

/dev/sdb {
spindown_time = 180
}

Die Option wird beim Start des Systems gesetzt.

Und für Linux-Newbies, so wird eine Festplatte (in dem Beispiel /dev/sdb) mit Partitionen ausgestattet:

cfdisk /dev/sdb

Hier Typ 83 nehmen.

Formatierung der erstellten /dev/sdb1 Partition mit ext3:

mke2fs -j /dev/sdb1

ACPI Wakeup

Ist recht praktisch, wenn man den VDR einfach abschalten kann und er sich dann üer ACPI automatisch aufweckt wenn eine Aufnahme ansteht.

/etc/vdr/vdr-addon-acpiwakeup.conf editieren und folgendes einstellen:

ACPI_ENABLED=yes
ACPI_START_AHEAD=10

5 Minuten vorher aufwachen finde ich etwas knapp, vor allem wenn man ein Festplattentest loslaufen sollte. Da ist eh zu überlegen, die automatischen Festplattentests ganz abzuschalten.

Mehr musste ich bei meinem Setup nicht einstellen. Ein Test-Script und weitere Informationen, beispielsweise auch über unterstützte Mainboards und eventuell nötige BIOS-Einstellungen, gibt es hier.

VDR live

Mit diesem Plugin kann über einen Webbrowser auf den VDR zugegriffen werden. Programmübersicht, Timer, Wiederholungen suchen, Fernsehen im Browser (mit VLC Plugin). Ähnlich wie früher der VDRadmin, nur besser und umfangreicher. Ein sehr zu empfehlendes Tool.

Zugriff über: http://IP-des-VDR:8008
Benutzername: admin
Passwort: live

Benutzer und Passwort können in den Einstellungen geändert werden, auch kann ein lokales Netz konfiguriert werden (z.B. 192.168.2.0/24), für das kein Benutzer und Passwort abgefragt wird.

XBMC

apt-get install xbmc xbmc-bin xbmc-data xbmc-eventclients-common xbmc-eventclients-ps3 xbmc-scripts-example xbmc-skin-confluence xbmc-skin-pm3-hd xbmc-web-pm3 vdr-addon-xbmc

Da unser VDR auf dem X-Server Screen :0 läuft, bringen wir das dem XBMC auch bei:

/usr/bin/start-xbmc editieren und den Eintrag DISPLAY=:1.0 ändern: DISPLAY=:0

Die Datei /etc/init.d/vdr-addon-xbmc wird in unserem Fall nicht benötigt. Entweder die Symbolic Links aus den /etc/rcx.d Verzeichnissen entfernen oder die Datei umbenennen/löschen. Ansonsten wird beim Start des Rechners ein zweiter X-Server Screen :1.0 gestartet und hebelt den VDR aus.

Die Datei /etc/sudoers.d/vdr-addon-xbmc hat die falsche Berechtigung (644), dies muss auf 440 korrigiert werden:

chmod 440 /etc/sudoers.d/vdr-addon-xbmc

Nun kann das XBMC aus dem VDR-Menü (“External Players”) gestartet und über Tastatur und Maus bedient werden. Hier gibt es nun viele viele Dinge, die man einstellen kann und sollte. Da dieses Howto allerdings den VDR zum Inhalt hat, spare ich mir (für den Moment) weitere Einzelheiten. Einfach die Optionen in Ruhe durchgehen oder die möglichen Optionen im Internet recherchieren.

Konfiguration des XBMC zur Steuerung mit der Fernbedienung: coming soon…

Festplattenchecks von ext3 Partitionen abschalten

Standardmäßig wird das Filesystem von Zeit zu Zeit (Anzahl Mount-Vorgänge, Verstrichene Zeit seit der letzten Prüfung) geprüft. Dies kann je nach Größe wenige Minuten bis mehrere Stunden dauern. Eventuell ist es also sinnvoll, diesen automatischen Check abzuschalten.

tune2fs -i0 /dev/sda1

Sinnvoll ist es in diesem Fall natürlich, ab und zu von Hand einen Check durchzuführen.

Hier gibt es weitere Tipps, wie man ext3 Partitionen tunen kann.

S.M.A.R.T. Überwachung

Wir wollen weder neu installieren noch unsere Aufnahmen verlieren, deswegen wäre eine Überwachung der Festplatten auf Laufwerksfehler sicherlich sinnvoll.

apt-get install smartmontools

/etc/default/smartmontools editieren und in der Zeile start_smartd=yes den Kommentar # am Zeilenbeginn entfernen.

smartmontools starten:

/etc/init.d/smartmontools start

Um nun auch informiert zu werden, sollte das Mailsystem (beispielsweise Postfix) noch aktiviert werden. So werden dann im Fall des Falles Mails versendet.

Trotz allem ist ein Backup sicherlich unumgänglich!

In /var/log/syslog prüfen, ob die Festplatten gefunden wurden und überwacht werden. Falls nicht (beispielsweise bei sehr neuen oder exotischen Controllern), muss /etc/smartd.conf nachgearbeitet werden.

ausgehende Systemmails ermöglichen

Dies mache ich mit Postfix. Als jahrelanger und eingefleischter Postfix Fan kann ich mit Exim leider gar nichts anfangen, ausser der Deinstallation. ;-)

In meiner Anleitung gehe ich davon aus, dass Mails wie mit einem “normalen” Mailclient (Thunderbird, Outlook etc) via SMTP-Auth an einen echten Mailserver versendet werden. Es wird also ein entsprechender Account vorausgesetzt.

apt-get install postfix libsasl2-modules

Bei der Installation No configuration auswählen.

Nun erst einmal die Reste von Exim aus dem System tilgen. ;-)

dpkg --purge exim4 exim4-base exim4-config exim4-daemon-light

Nun Postfix konfigurieren:

cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf

Ans Ende von /etc/postfix/main.cf folgendes eintragen:

mydomain = localdomain.tld
myhostname = vdr.localdomain.tld
 
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
 
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
smtp_sasl_security_options = noanonymous
 
relayhost = mail.mailprovider.tld

vdr könnte der Hostname des Systems sein, localdomain.tld könnte ein Domainname sein, mail.mailprovider.tld könnte smtp.gmx.net sein. Die Absendeadresse setzt sich aus dem absendenden Benutzer (z.B. root) und dem Wert aus myhostname zusammen. Hier gibt es je nach Mailproviderkonfiguration eventuell Probleme, so diese Domain nicht existiert. Ein entsprechender Eintrag in /var/log/mail.log sähe dann beispielsweise so aus:

Sender address rejected: Domain not found (in reply to RCPT TO command))

/etc/postfix/smtp_auth erstellen und folgendes eintragen:

mail.mailprovider.tld benutzername:passwort

/etc/postfix/smtp_auth für Postfix nutzbar machen:

postmap /etc/postfix/smtp_auth

/etc/aliases editieren und beispielsweise dafür sorgen, dass alle Mails an eine Mailadresse gehen, die letzte Zeile könnte also beispielsweise so aussehen:

root: vdr-admin@mailadresse.tld

/etc/aliases für Postfix nutzbar machen:

postalias /etc/aliases

Postfix (neu) starten und eine Testmail versenden:

/etc/init.d/postfix restart
cat /etc/motd | mail -s "VDR Test Mail" empfaenger@mailadresse.tld

Hinweis: Natürlich ist Postfix für den Versand von Systemmails oversized. Da ich mich aber mit Postfix auskenne, fällt mir die Konfiguration leicht. Als schlanke Alternative könnte beispielsweise der nullmailer verwendet werden, wurde im VDR-Portal Forum vorgeschlagen:

…dass du in deinem tutorial postfix vorschlägst,um systemmails zu verschicken. finde das etas übertrieben. für solche fälle gibt es den nullmailer. man trägt den externen mailrelay ein, wie gmx oder so und dann noch evtl. in /etc/aliases nen alternativen empfänger. ganz easy und man reisst sich nicht aus versehen ein loch ins system, weil postfix falsch konfiguriert wurde.

Da ich keine Ahnung habe, wie der nullmailer konfiguriert wird und ich das auch noch nicht getestet habe: Bitte bei Bedarf selbst heraus finden. ;-)

Uhrzeit per NTP-Zeitserver aus dem Internet automatisch stellen

apt-get install ntpdate

Folgendes in /etc/crontab eintragen um die Uhr zweimal am Tag zu stellen:

00 8 * * * root ntpdate -u 0.de.pool.ntp.org > /dev/null 2>&1
00 20 * * * root ntpdate -u 0.de.pool.ntp.org > /dev/null 2>&1

IPv6

Soll der VDR auch IPv6 können, muss eventuell das Modul ipv6 in /etc/modules eingetragen werden da beim Start des Systems das Netzwerk schneller geladen werden könnte als das IPv6 Modul. So werden IPv6 Einträge in /etc/network/interfaces schlicht ignoriert.

 

14 thoughts on “Installation HD-fähiger VDR unter Debian”

  1. Genial, Danke für die Anleitung! Genau danach habe ich gesucht.

    Zuerst habe ich Mythbuntu getestet, dann wollte ich mal sehen, was überhaupt mit Windows 7 möglich ist, dann bin ich zu yaVDR gekommen. yaVDR fand ich schon nicht schlecht, allerdings gibt es da noch kein Release für Ubuntu Lucid. Ein dist-upgrade – trotz hinzugefügter Testing-Repositories hatte mich dann jedoch nicht vor Problemen bewahrt. Da mir Debian sowieso lieber ist und ich gerade diese Seite gefunden habe, werde ich es mal danach probieren.

    Interessant wäre noch, den X-Server einmal zu starten, der dann den VDR bzw. XBMC auswirft und dann noch einmal für die Anzeige eines Desktops (z. B. KDE 4) auf einem anderen Monitor. Ich würde das Gerät nämlich zusätzlich gerne als Desktop-System zum surfen verwenden…

  2. Hi,
    Danke für das Howto. Arbeite mich durch, und werde jeweils kleine Kommentare geben.
    Erster Kommentar: apt-get update meckert über fehlende public-keys bei http://www.debian-multimedia.org (hier: http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb ), und, wichtiger, den fehlenden public key für e-tobi.net, der nicht mehr über apt-get install e-tobi-keyring zu holen ist. Hier steht auf der e-tobi-website unter http://www.e-tobi.net/blog/2007/03/25/vdr-pakete-mit-unterschrift wie’s geht.

    Thomas

  3. Vielen Dank für die große Mühe und die exzellente Anleitung.

    Anzumerken wäre von meiner Seite noch, dass man die Backports-Kernel mit der angegebenen sources.list nicht installieren kann, man muss folgende Zeile (zumindest temporär) hinzufügen:
    deb http://www.backports.org/debian lenny-backports main contrib non-free

    Weiterhin funktionierte bei mir die Installation der Mantis-Treiber nicht so wie beschrieben. Alternativ kann man die Liplian-Treiber nehmen und so installieren:

    apt-get update
    apt-get install dvb-s2api-liplianin-source debhelper

    Mit

    cat /proc/version

    nachsehen, ob auch wirklich der gewünschte Kernel läuft.

    Das Verzeichnis /usr/src wechseln und mit

    module-assistant prepare

    prüfen ob alle nötigen Pakete installiert sind. Dann Treiber kompilieren. Das kann dauern:

    module-assistant build dvb-s2api-liplianin

    Wenn alles ohne Fehler abgearbeitet wurde, kann das erstellte Paket mit

    dpkg -i dvb-s2api-liplianin*.deb

    installiert werden

    Ob nun auch wirklich alle DVB-Karten gefunden werden, kann mittels:

    lsmod | grep dvb

    nachgesehen werden.
    Diese Beschreibung habe ich aus http://www.vdr-portal.de/board/thread.php?threadid=92005 geklaut.

    Zum Thema LIRC: So wie beschrieben bricht der Module-Assistant leider wegen eines Bugs in lirc-modules-source ab (lirc-modules/lirc_i2c.c:399: error: unknown field ‘id’ oder etwas ähnliches).
    Abhilfe schafft ein

    dpkg-reconfigure lirc-modules-source

    Hier einfach i2c komplett abwählen. Danach sollte sich alles wie beschrieben bauen lassen.

    Sorry für den ganzen Text, ich hoffe ich kann einigen Leuten etwas Stress ersparen.

  4. Hi,
    auch von meiner Seite vielen Dank für das Howto. Das erleichtert einem unheimlich durch den ganzen Dschungel an Paketen mit VDR und Debian durchzublicken. Ich habe jedoch noch einige Fragen zu den Paketen von xineliboutput und vdpau.
    1. Sind die Pakete anhand deiner Anleitung über e-tobi schon soweit vorbereitet, dass sie vdpau direkt unterstützen sofern ich die nvidia Treiber installiert habe?

    Derzeitig bin ich noch verwirrt welcher Stand der Pakete aktuell ist oder ob man immer noch irgendwas selber patchen muss. Auf manchen Seiten liest man, dass man die xine-lib1.2 selber einbinden soll. Beim ersten Versuch die Pakete von e-tobi so zu benutzen, konnte ich kein vdr-sxfe –video=vdpau ausführen nur vdr-sxfe. Das war dann die Version 1.1.19. Ich muss dazu sagen, dass ich als Anfänger nur die “apt-get install”- Schiene gefahren bin ohne selbst was zu übersetzen. Im vdr-portal oder unter wbreu sind die Angaben jetzt ~3-6 Monate alt oder älter und diese sind soweit historisch gewachsen, dass einem die Informationen eher verwirren als nützen.

    2. Wenn ich das richtig verstehe, kann ich entweder vdr-sxfe direkt auszuführen oder das Plugin xineliboutput mit dem Befehler –local=sxfe und –video=vdpau über die xineliboutput.config und somit wieder vdr-sxfe antriggern oder? Nur so kann ich mir Erklären warum vdr-sxfe ohne –video=vdpau funktioniert und xineliboutput nur unter –local=none und ohne –video=vdpau lief.

  5. okay.. sieht ganz gut aus, ich werde mich in den nächsten tagen damit beschäftigen und schauen ob ich das auf die reihe bekomme *grins*

    eins ist mir aufgefallen: du installierst eine systemplatte und eine datenplatte.. was ist jedoch, wenn die eine datenplatte nicht reicht? (was bei mir der fall sein wird, im jetzigen VDR ist 1 x 1,5 und 2 x 1 TB verbaut.. )

    wie konfiguriere ich das dann???

    1. @kolibri: Du kannst mehrere Datenfestplatten verwenden. Diese müssen dann wie video.00 und video.01 dem VDR bekannt gegeben werden. Mit meiner Konfiguration kommen die Steuerdateien dann auf video.00 und die Streams (also die eigentlichen Aufnahmen) dann auf video.01 oder eben auch video.02 oder video.03. Imho macht der VDR die dann immer dort drauf, wo z.Zt. am meisten Platz ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Um auf Deiner eigenen Website zu antworten, gib die URL Deiner Antwort ein, die einen Link zur Permalink-URL dieses Beitrags enthalten sollte. Deine Antwort wird dann (möglicherweise nach der Moderation) auf dieser Seite angezeigt. Möchtest Du Deine Antwort aktualisieren oder entfernen? Aktualisiere oder lösche Deinen Beitrag und gib die URL Deines Beitrags erneut ein. (Mehr erfahren)