VDR mit Budget-DVB-T-Karte unter Debian-Linux


Vor dem Einbau einer zusätzlichen DVB-C-Karte und vor dem Wechsel von Debian Etch auf Debian Lenny.
Diese Seite wird nicht mehr gepflegt, die aktuelle Version liegt hier.

Diese Seite beschreibt den Aufbau meiner Linux-Multimedia-Box. Das Gerät dient in erster Linie als DVB-T-Empfänger und Multimedia-Zentrale zum Abspielen von Audio- und Video-Dateien. Es hat mittlerweile die gute alte Glotze, den VHS-Videorekorder und (zum Teil) die Stereoanlage ersetzt, ist aber kein hochauflösendes, überdimensionales, Mehrkanal-tönendes Ungetüm.

Inhalt

Hardware-Auswahl
   Gehäuse, Display und Fernbedienung
   DVB-T-Karte
   Motherboard, CPU und RAM
   Grafik
   Festplatte und DVD-Laufwerk
   Sonstige Hardware
Software-Auswahl
   Linux-Distribution
   TV-/Multimedia-Software
   Sonstige Software
Hard- und Software-Überblick
Installation
   Debian-Linux
   DVB-Empfang testen
   VDR einrichten
   VDR-Plugins
   Infrarot-Fernsteuerung und VFD-Display
System Couch-Potato-tauglich machen
   X-Server für den VDR automatisch starten
   Schneller Booten
   Rechner per Fernbedienung hochfahren
   Rechner automatisch hochfahren lassen
   WLAN einrichten
Nützliches und Sonstiges
Bekannte Probleme
Anhang
   Konfigurationsdateien
   Kurzanleitung zur Bedienung des VDRs
   Alte Versionen dieser Beschreibung
   Links

Hardware-Auswahl

Da ich keine Streaming-Lösung oder Ähnliches verwenden wollte, mußte die Hardware Wohnzimmer-tauglich sein, also schick, leise und per Fernbedienung steuerbar.
Für die Video-Ausgabe verwende ich einen PC-LCD-Monitor (mit DVI), meine Kiste hat also nur eine Budget-DVB-T-Karte und keinen TV-Ausgang. Ansonsten das Übliche: Ethernet, USB, Maus, Tastatur, analoger Audio-Ausgang, CD/DVD-Laufwerk. Ich wollte mir aber die Möglichkeit offen halten, später auch mal weitere PCI-Karten oder Festplatten im Gehäuse unterzubringen.

Gehäuse, Display und Fernbedienung

Als HTPC-Gehäuse verwende ich das Dign HTPC HV5 von Uneed. Uneed heißt mittlerweile Origen AE, das Gehäuse H5 statt HV5, an den Eigenschaften scheint sich aber nichts Wesentliches geändert zu haben.

Gehäuse Das voluminöse Aluminium-Case im Standard-ATX-Format bietet Platz für maximal sieben PCI-Karten, zwei 3,5''-Festplatten und ein 5 1/4''-Laufwerk. In der Front sitzt bei mir ein (optional erhältliches) Modul mit VFD-Display und IR-Empfänger, dazu gehört eine Infrarot-Fernbedienung. Das Modul wird an die internen USB-Steckerleiste des Motherboards angeschlossen.

Fernbedienung Unter dem (transparenten) Start-Knopf der Fernbedienung klebt normalerweise ein kleines Windows-Logo. Als VDR-Nutzer konnte ich dies natürlich nicht so lassen und habe den Aufkleber gegen ein Linux-Logo ausgetauscht.

Auf der Rückseite des Gehäuses befinden sich ein 6 x 6 cm-Gehäuselüfter, ein zweiter kann nachgerüstet werden. Leider hat das Case keinerlei Lüftungsschlitze, was die Durchlüftung nicht ganz einfach macht. Ich habe das Problem so gelöst, dass ich die Abdeckbleche der vier freien PCI-Slots hinten links entfernt und die Schlitze mit einem Lüftergitter abgedeckt habe. Die Luft strömt so durch diese Öffnungen ins Gehäuse, muss um die DVB-T-Karte herum und verläßt das Gehäuse dann, vorbei an der CPU, wieder durch die Gehäuselüfter bzw. das Netzteil.
Als Netzteil kommt ein Fortron Source FSP270-50SNV mit 270W zum Einsatz.

Am Markt gibt es zwar eine ganze Reihe von Mini ITX-Gehäusen für Wohnzimmer-PCs. Allerdings haben diese einige Nachteile: Mini ITX-Mainboards besitzen standardmäßig (also ohne Riser Card usw.) nur einen PCI-Slot, der teilweise nur mit Karten halber Bauhöhe bestückt werden kann, die Gehäuse bieten in aller Regel nur Platz für maximal eine 3,5''-Festplatte (teilweise nur eine 2,5''-Platte). Ein weiteres Problem ist die Wärmeabfuhr aus dem engen Gehäuse. Und nicht zuletzt sind die ITX-Mainboards verhältnismäßig teuer.

DVB-T-Karte

Für den DVB-T-Empfang sorgt eine Avermedia AVerTV DVB-T-771, eine PCI-Karte mit halber Bauhöhe. Sie besitzt einen HF-Antennenanschluss sowie einen S-Video-Eingang. Außerdem wird ein S-Video auf Composite-Video-Adapter mitgeliefert.
Diese Budget-Karte wird ohne Patches von neueren Versionen des 2.6er-Kernels unterstützt. Ich habe die Karte bisher nur für DVB-T verwendet, ob der S-Video-Eingang (unter Linux) verwendbar ist weiß ich nicht.

Im Allgemeinen wird für die DVB-Wiedergabe unter Linux eine Full-Featured-Karte (mit Hardware-MPEG-Decoder und TV-Ausgang) empfohlen. Allerdings gibt es für DVB-T nur ein einziges, nicht mehr hergestelltes Modell, welches zudem nicht alle DVB-T-Frequenzbereiche empfangen kann (TechnoTrend Premium DVB-T, siehe vdr-wiki.de). Da Budget-Karten i.A. auch um einiges billiger als Full-Featured-Karten sind, habe ich mich gegen eine Full-Featured-Karte entschieden. Hat man nun keine Full-Featured-DVB-Karte und auch keine Grafikkarte mit TV-Ausgang zur Verfügung, bleibt für die Video-Ausgabe nur mehr der Monitor-Ausgang übrig. Da ich allerdings ohnehin keinen TV, sondern einen "normalen" Computer-Monitor verwende, spielt diese Einschränung keine Rolle.
Ohne Full-Featured-Karte oder sonstige Hardware-Unterstützung muss der Prozessor den MPEG-Datenstrom selbst decodieren. Empfohlen wird in diesem Fall ein Prozessor mit mindestens 1 GHz.

Motherboard, CPU und RAM

Als CPU habe ich einen Intel Pentium IV mit 1.600 MHz auf einem Systemboard eines HP Vectra VL420 mit 256 MB RAM im Einsatz. Das Motherboard hat Onboard-Sound (analoges Stereo), LAN, je 2 x USB extern und intern (leider nur USB 1.1) und drei PCI-Slots.
Das Motherboard ist ein leicht modifiziertes ASUS P4B-MX. Insbesondere entsprechen die Anschlüsse für Ein/Aus- und Reset-Taster sowie der Power-LED nicht dem Standard, was kleine Eingriffe mit dem Lötkolben nötig machte. Das Motherboard ist außerdem etwas größer als das bisher verbaute GIGABIYTE GA-6WMMC7, das Anschließen der IDE-Kabel für Platte und CD/DVD-Laufwerk war daher nicht einfach.

Grafik

Ebenfalls aus der HP Vectra VL420 stammt die Grafikkarte, eine Nvidia GeForce2 MX mit 32 MB RAM. Unter X11 mit Xv-Output über den Xorg-Treiber nv ist die Darstellung von DVB-T ruckelfrei und erzeugt eine CPU-Last von ca. 40%.
Der Closed-Source-Treiber von Nvidia (nvidia) würde wohl auch XvMC (XVideo Motion Compensation, eine einfache Hardware-Unterstützung für die Decodierung von MPEG-Daten) unterstützen. Da ich aber sowohl mit Closed-Source-Treibern als auch mit XvMC bisher nur schlechte Erfahrungen gemacht habe, verzichte ich lieber darauf.

Festplatte und DVD-Laufwerk

Als Festplatte verwende ich eine Samsung HD400LD (400GB). Das Ding ist stabil, ruhig, preiswert und wird nicht zu heiß, was will man mehr.
Da Uneed wegen der optimalen Positionierung des Auswurf-Knopfes explizit ein CD/DVD-Laufwerk von LG empfiehlt, steckt in meinem Gerät ein schwarzes LG D8163B. Der saubere Einbau des Laufwerkes ins Gehäuse erfordert zwar etwas Geduld. Ist das Laufwerk aber erst mal an seiner genauen Position paßt es perfekt.

Sonstige Hardware

Als DVB-T-Antenne verwende ich eine sehr einfache Selbstbau-Antenne, wie sie z.B. unter vdr-wiki.de beschrieben ist. Für den Empfang im Stadtgebiet München reicht diese allemal aus.
Zum Anschluß von Maus, Tastatur und anderen USB-Geräten steht unsichtbar nahe dem Gehäuse im Schrank verstaut noch ein kleiner USB-Hub. Maus und Tastatur benötigt man ohnehin nur sporadisch, über den Hub kann man die Teile ohne Verrenkungen bequem anstecken.
Um auch kabellos auf meinen VDR zugreifen zu können steckt noch eine WLAN-Karte vom Typ Netgear WG311v3 in einem PCI-Slot.

Software-Auswahl

Die Entscheidung für die am Ende gewählte Software-Konstellation war nicht ganz einfach. Nach ersten Experimenten mit Knoppix, dem ct-VDR und Kanotix hatte ich mir noch zwei weitere Multimedia-Projekte, Freevo und MythTV (und auch KnoppMyth), angesehen. Obwohl beide sehr schöne Oberflächen und eine Menge Funktionen haben, erschien mir die Konfiguration, insbesondere von DVB, bei beiden, na ja, etwas umständlich. Außerdem bedingen die poppigen Menüs höhere Anforderungen an die CPU. Allerdings muss ich dazusagen, dass meine Versuche mit Freevo und MythTV mittlerweile schon einige Zeit zurückliegen, hier könnte sich durchaus wieder einiges getan haben.

Linux-Distribution

Als Betriebssystem wollte ich eine "richtige" Linux-Distribution. Dafür gibt's in aller Regel Updates, (fast) alle Quelltexte, eine große Nutzergemeinde und daher viele aktuelle Infos im Internet. Da Debian-Linux ein ausgereiften Paket-Management sowie funktionale, textbasierte Administrations-Tools mitbringt und damit sehr flexibel konfigurierbar ist, war die Wahl recht schnell getroffen. Hier mag auch dazu beigetragen haben, dass ich Debian schon einige Zeit kenne und einfach gut damit zurechtkomme.

TV-/Multimedia-Software

Als TV- und Multimedia-Software verwende ich den Video Disc Recorder (VDR) zusammen mit verschiedenen Plugins. Der VDR ließ sich recht schnell zur Mitarbeit bewegen und macht ohne unnötiges Drumherum das was er soll. Die einfache, aber funktionale Oberfläche reagiert auch bei einer langsamen CPU noch genügend schnell. Außerdem läßt die Funktionsauswahl des VDRs im Bereich TV-Wiedergabe, -Aufzeichnung und Schnitt keine Wünsche offen.

Die Grafik-Ausgabe erfolgt lokal unter X11 mit dem Xineliboutput-Plugin für den VDR über den Multimedia-Player Xine, genauer gesagt über dessen Multimedia-Bibliothek Xine-Lib (libxine1).

Sonstige Software

Für die Infrarot-Fernsteuerung und die Ansteuerung des VFD-Displays stellt Uneed (bzw. der Hersteller des Displays, IRTrans) eine eigene Software bereit (IRTrans Client/Server). Meine Versuche, das Modul auch mit LIRC und LCDProc zu laufen zu bringen, waren bisher nicht erfolgreich.

Hard- und Software-Überblick

Hier nochmal die Liste der wichtigsten Hard- und Software:

Installation

Das Zusammenschrauben der Hardware war nicht aufregend und möchte ich an dieser Stelle auch nicht beschreiben. Deshalb geht's gleich weiter mit der Software.

Debian-Linux

Debian-Linux kann auf verschiedenste Weise installiert werden. Ich bevorzuge: Die Partitionierung meiner 400 GB-Platte schaut folgendermaßen aus:
/dev/hda1    1 GB   -               swap   Virtueller Speicher
/dev/hda2   10 GB   /               ext3   Installation 1
/dev/hda3   10 GB   /               ext3   Installation 2 (Test)
/dev/hda4    Rest   /var/lib/data   ext3   Daten
Damit habe ich die Möglichkeit, auf /dev/hda2 und /dev/hda3 zwei getrennte Systeme zu installieren, was für Tests und zur Wiederherstellung einer zerschossenen Installation recht praktisch ist.
Alle Video- und Audio-Daten liegen auf /dev/hda4. Um ein paar GB Platz zu sparen macht es für diese Partition Sinn, sie mit der Option -m 1 zu formatieren (siehe man mkfs.ext3).

Um ein minimales Debian-System zu erhalten, wird einfach im Dialog Softwareauswahl (nur) der Eintrag Standard-System ausgewählt.

Als Paket-Quellen verwende ich

Entsprechend ist die Datei /etc/apt/sources.list anzupassen. Die Einträge in /etc/apt/preferences stellen sicher, dass die Pakete von e-tobi.net auch dann verwendet werden, wenn es in Debian Etch eine neuere Version des selben Paketes gibt (siehe man apt_preferences).

Die Kommandos

vdr:# apt-get update
vdr:# apt-get dist-upgrade
bringen Paket-Index und System auf den neuesten Software-Stand von Etch. Danach werden die Schlüssel von e-tobi.net und debian-multimedia.org (zur Verifikation der Paket-Signaturen), X11 mit Xdm/Twm (einfacher X Display bzw. Window Manager), Alsa, VDR mit Xineliboutput-Plugin und dazugehörigen Paketen sowie einige praktische Tools installiert:
vdr:# apt-get install e-tobi-keyring debian-multimedia-keyring
vdr:# apt-get install x-window-system-core x-window-system xserver-xorg xdm twm
vdr:# apt-get install alsa-utils
vdr:# apt-get install vdr vdr-plugin-xineliboutput libxine1-xvdr libxine1 libxineliboutput-sxfe
vdr:# apt-get install xine-ui
vdr:# apt-get install dvb-utils dvbstream
vdr:# apt-get install libdvdcss2
vdr:# apt-get install w32codecs
vdr:# apt-get install vim unzip bzip2 hdparm hddtemp rsync openssh-server
xine-ui, das Standard-Frontend (User-Interface) von Xine, sowie die Pakete dvb-utils und dvbstream werden zwar nicht direkt für den VDR benötigt, eignen sich aber sehr gut zur Fehlersuche und für Tests von DVB. libdvdcss2 ist eine Bibliothek zur Wiedergabe von verschlüsselten DVDs. Details zur Technik und den rechtlichen Aspekten dieser Bibliothek findet man in der Wikipedia. w32codecs stellt der Xine-Lib zusätzliche Multimedia-Codecs in Form von Windows-Bibliotheken zur Verfügung.
Die Pakete der letzten Zeile sind nützlich, haben aber nichts mit dem VDR zu tun.

Nach Installation der neuen Pakete können ggf. nicht mehr benötigte Pakete gelöscht werden.

vdr:# apt-get remove --purge vim-tiny
Die DVB-T-Karte wird zwar ab Kernel 2.6.10 automatisch erkannt. Allerdings muss das DVB-Modul noch manuell nachgeladen werden:
vdr:# modprobe dvb-bt8xx
vdr:# echo dvb-bt8xx >> /etc/modules
Folgende Kommandos verhindern, dass beim Systemstart ein fsck ausgeführt wird:
vdr:# tune2fs -c 0 /dev/hda2
vdr:# tune2fs -c 0 /dev/hda3
vdr:# tune2fs -c 0 /dev/hda4
vdr:# tune2fs -i 0 /dev/hda2
vdr:# tune2fs -i 0 /dev/hda3
vdr:# tune2fs -i 0 /dev/hda4
Natürlich sollte man dann fsck /dev/hdaX -- -f gelegentlich manuell starten.

Video: X11

In der Konfiguration des X-Servers (/etc/X11/xorg.conf) sollten die Zeilen
Section "ServerFlags"
	Option	"AllowMouseOpenFail"
EndSection
nicht fehlen, ansonsten startet er nicht ohne Maus und Tastatur.

Audio: Alsa

Die Audio-Ausgabe erledigt ALSA (Advanced Linux Sound Architecture):
vdr:# alsaconf
vdr:# alsamixer
vdr:# alsactl store
alsaconf richtet ALSA auf dem System ein. Auf meinem System wurde die Soundkarte automatisch erkannt. Die Dialoge sind weitgehend selbsterklärend, im Zweifel einfach die Standardeinstellungen beibehalten.

Der alsamixer hilft bei der Einstellung der gewünschten Lautstärke(n). alsactl store speichert die eingestellten Werte in die Datei /var/lib/alsa/asound.state. Der Inhalt der Datei ist recht selbsterklärend, die Master-Lautstärke wird z.B. im Bereich

        control.2 {
                comment.access 'read write'
                comment.type INTEGER
                comment.count 2
                comment.range '0 - 63'
                iface MIXER
                name 'Master Playback Volume'
                value.0 63
                value.1 63
        }
festgelegt. Nach einem Neustart des Systems werden diese Einstellungen nun automatisch gesetzt.

DVB-Empfang testen

Da VDR eine recht komplexe Software ist, sollte man sich vor dessen Konfiguration vergewissern, dass der DVB-T-Empfang auch wirklich funktioniert. Dies geht am einfachsten mit tzap und dvbstream:

Die Kommandos

vdr:# mkdir -p ~/.tzap/
vdr:# scan /usr/share/doc/dvb-utils/examples/scan/dvb-t/de-Muenchen > ~/.tzap/channels.conf
generieren, DVB-Empfang vorausgesetzt, die channels.conf für tzap. Vor dem Aufruf muss VDR ggf. mit /etc/init.d/vdr stop beendet werden.
Sollte unter /usr/share/doc/dvb-utils/examples/scan/ keine passende Frequenztabelle auffindbar sein, findet man sie wahrscheinlich im CVS: http://www.linuxtv.org/cgi-bin/viewcvs.cgi/dvb-apps/util/scan/.

In der Datei ~/.tzap/channels.conf sollten nun alle gefundenen Sender eingetragen sein. Der Eintrag für den Sender VOX schaut in München z.B. so aus:

VOX:578000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:545:546:16418
Mit
vdr:# tzap VOX
wird die DVB-Karte auf den Sender VOX eingestellt. Die Video- und Audio-Daten lassen sich nun mit einem der beiden (z.B. in einer zweiten Shell) parallel zu startenden Kommandos
vdr:# dvbstream -o -ps -qam 16 -cr 1_2 545 546 | xine stdin:/
vdr:# dvbstream -o -ps -qam 16 -cr 1_2 545 546 > VOX.mpeg
mit Xine darstellen bzw. in eine MPEG-Datei ausgeben. Die Kommando-Parameter entnimmt man der entsprechende Zeile aus der ~/.tzap/channels.conf. Achtung: Die channels.conf von tzap hat ein anderes Format als die vom VDR.

Ist bis hier alles OK geht's an die Konfiguration von VDR.

VDR einrichten

Die Konfigurationsdateien von VDR liegen unter /var/lib/vdr/ und /etc/vdr/, VDR-Logmeldungen stehen standardmäßig in /var/log/syslog. In der Datei /etc/default/vdr können einige Start-Parameter für den VDR angepaßt werden. Ansonsten wird VDR bequem über das OSD konfiguriert. Dort kann man u.a. auch festlegen, dass VDR die Systemzeit über das DVB-Zeitsignal setzt.

Der VDR benötigt für den Empfang prinzipiell nur die richtige channels.conf unter /var/lib/vdr/. Diese kann man einfach von vdr-wiki.de herunterladen (DVB-T) oder z.B. von Kanotix übernehmen. Da er in meinem Fall aber auch Bild- und Ton selbst lokal ausgeben muss sowie sonstige Multimedia-Dienste zu leisten hat, sind noch einige Anpassungen nötig:

Zum Ersten muss der User vdr auf die Audio- und Video-Devices sowie auf das CD/DVD-Laufwerk zugreifen können. Dazu wird er in die entsprechenden Gruppen (siehe /etc/group) aufgenommen:

vdr:# usermod -G audio,video,cdrom vdr
Zum Zweiten muss dem Xineliboutput-Plugin (genauere Beschreibung siehe weiter unten) noch "mitgeteilt" werden, wo es das VDR-Bild ausgeben soll, und zwar lokal unter X11. Dazu dienen folgende Einträge in der Datei /etc/vdr/plugins/plugin.xineliboutput.conf:
--local=sxfe
--display=:0.0
Der lokal laufende X-Server (Display 0) muss dann noch vom angemeldeten User für X-Verbindungen vom lokalen Rechner aus freigeschalten werden,
vdr:$ xhost + local:
erst dann kann der VDR von root gestartet werden:
vdr:# /etc/init.d/vdr start
Falls alles glatt gelaufen ist erscheint nun ein Fenster mit dem VDR-Bild. Beim ersten Start springt der VDR automatisch ins Menü zum Lernen der Tasten-Codes für die Tastatur-Steuerung. Die Codes werden in die Datei /var/lib/vdr/remote.conf geschrieben (Zeilen beginnend mit XKeySym) und können dort bei Bedarf manuell nachbearbeitet werden.

VDR-Plugins

Der Schwerpunkt von VDR liegt zwar auf DVB. Über verschiedenste Plugins läßt er sich aber um sehr viele Funktionen erweitern. Eine Liste der (als Debian-Binärpaket) verfügbaren Plugins zeigt das Kommando apt-cache search vdr-plugin an. Installiert werden die Plugins wie gewohnt mit apt-get install Plugin-Name. Konfiguriert werden sie über das OSD von VDR - diese Einstellungen werden dann in /var/lib/vdr/setup.conf abgelegt - oder in den Dateien unter /etc/vdr/plugins/.

Folgende Plugins habe ich aktuell in Verwendung:

vdr-plugin-xineliboutput

Dieses Plugin wird wie bereits erwähnt für die Video-Ausgabe des VDRs benötigt. Es bringt nicht nur verschiedene Ausgabemöglichkeiten mit, sondern auch einen integrierten Multimedia-Player für Filme, DVDs, Musik und Bilder. Dieser ist zwar noch nicht so mächtig wie vdr-plugin-mp3 oder vdr-plugin-image, erfüllt aber in der aktuellen Version meine Minimalanforderungen.

Zu Xineliboutput-Plugin gehören insgesamt sechs Debian-Binärpakete:

Über die Konfigurationsdatei des Plugins, /etc/vdr/plugins/plugin.xineliboutput.conf, wird neben einigen anderen Optionen festgelegt, welche Ausgabemöglichkeiten genutzt werden. Die Kommandos für die Tastatursteuerung werden in /var/lib/vdr/remote.conf abgelegt. Die Client-Frontends haben ihrerseits eine eigene Konfigurationsdatei, ~/.xine/config_xineliboutput.

Mit dem Plugin lassen sich übrigens auch Internet-Radio-Streams empfangen: Einfach eine Playlist-Datei, z.B. Deutschlandfunk.m3u, anlegen, die den Streaming-Link enthält:

http://dradio-ogg.t-bn.de/dlf_high.ogg
Die Playlist kann dann, Internet-Verbindung natürlich vorausgesetzt, wie gewohnt übers OSD angewählt und abgespielt werden.

vdr-plugin-skinenigmang

Das Plugin gibt dem OSD des VDRs ein cooles Look & Feel und peppt es mit ein paar Zusatzinfos auf. Zusätzlich zum Plugin selbst sollte noch das Paket vdr-enigmang-icons installiert werden.
Aktiviert wird das Skin im OSD-Menü des VDRs unter "Einstellungen - OSD - Oberfläche", konfiguriert unter "Einstellungen - Plugins - skinenigmang".

vdr-plugin-osdteletext

Ein Plugin zur Anzeige von Teletext im OSD mit dem Fernsehbild im Hintergrund. Es arbeitet zuverlässig und ist wie vom TV gewohnt zu bedienen.

vdradmin-am

vdradmin-am ist streng genommen kein Plugin, sondern ein zusätzlicher Daemon, der ein Web-Interface zur Fernsteuerung des VDRs übers Netz zur Verfügung stellt.
Nach der Installation wird vdradmin-am mit dem Kommando
vdradmind --config
konfiguriert. Ggf. sonst noch nötige Anpassungen sollte man danach per Editor direkt in der Datei /var/lib/vdradmin-am/vdradmind.conf machen, z.B. den Eintrag MOD_GZIP = 0, ohne den vdradmin-am nicht zur Mitarbeit zu bewegen war.
Später kann die Konfiguration auch im entsprechenden Menü der Web-Oberfläche erfolgen. Der Eintrag
ENABLED="1"
in der Datei /etc/default/vdradmin-am aktiviert das Init-Skript. Wurden die Standardeinstellungen beibehalten, so ist das Web-Interface nach
/etc/init.d/vdradmin-am start
erreichbar unter
http://VDR-IP-Adresse:8001/

Infrarot-Fernsteuerung und VFD-Display

Die aktuelle Version der IRTrans Client/Server-Software gibt es unter irtrans.de. Heruntergeladen und installiert wird sie mit
vdr:# cd /tmp/
vdr:# wget http://www.irtrans.de/download/Server/Linux/irserver.tar.gz
vdr:# tar -xvzf irserver.tar.gz
vdr:# ./install.sh
unter /usr/local/irtrans/. Im Unterverzeichnis remotes/ befinden sich die Definitionen der Tasten-Codes von verschiedenen Fernsteuerungen. Mit
vdr:# cd /usr/local/irtrans/
vdr:# ./irserver -debug_code -loglevel 4 /dev/ttyUSB0
werden die von der IR-Fernsteuerung auf Tastendruck gesendeten Codes angezeigt, z.B.
7500c38011000000[0.0] ok mediacenter
[0.0]: S11101010000000000011110000010000011101 39
Die zweite Zeile entspricht einer nicht unter remotes/ aufgelisteten Taste. Die angezeigten Daten können zur Ergänzung von fehlenden Tastatur-Codes unter remotes/ verwendet werden. Für die bei mir mitgelieferte Fernbedienung paßt die Konfigurationsdatei remotes/mediacenter.rem. Einige noch fehlende Tasten-Einträge habe ich dort manuell nachgetragen. Die Zeile für den obigen unbekannten Code lautet z.B.
  [ast][T]0[D]S11101010000000000011110000010000011101
Alternativ können die Codes auch automatisch mit dem Kommando irclient in die Konfigurationsdatei eingetragen werden. Hier liegt meine Datei remotes/mediacenter.rem.

Der LIRC-kompatible Server wird mit

vdr:# ./irserver -daemon /dev/ttyUSB0
als Daemon gestartet. Mein Init-Skript /etc/init.d/irserver gibt's hier.

Das Kommando

vdr:# update-rc.d irserver start 10 2 3 4 5 . stop 30 0 1 6 .
legt die Soft Links zum automatischen Starten des Skriptes beim Booten an.

Nach

vdr:# /etc/init.d/irserver start
erkennt (bzw. glaubt) VDR nun, dass LIRC gestartet ist und springt beim nächsten Start ins Menü zum Lernen der Tasten-Codes für die IR-Fernbedienung. Auch diese Codes werden unter /var/lib/vdr/remote.conf abgelegt (Zeilen beginnend mit LIRC).

Mit dem Kommando

vdr:# /usr/local/irtrans/irclient 127.0.0.1 Optionen
lassen sich weitere Funktionen des VFD-Modules steuern, insbesondere Text auf dem Display ausgeben oder die Willkommen-Meldung ändern. Die Dokumentation dazu finde ich ziemlich mager, hier hilft nur probieren.

Aktuell nutze ich das Display selbst noch nicht (es zeigt nur Datum und Uhrzeit an), da es mir ein Rätsel ist, wie ich den VDR dazu bringen soll, das Display über die IRTrans-Programme anzusteuern.

System Couch-Potato-tauglich machen

Nachdem nun alles soweit funktioniert, möchte man (und v.a. Frau) sich nicht jedesmal am System einloggen müssen und die Programme manuell starten. Das muss natürlich alles automatisch und möglichst schnell gehen.

X-Server für den VDR automatisch starten

Zu diesem Zweck gibt es das Init-Skript X4VDR, welches einen eigenen X-Server für den VDR ohne Display-Manager usw. startet. VDR kann darauf sein Bild im Vollbild-Modus ausgeben.

Der X-Server für den VDR startet nach /etc/init.d/X4VDR start auf VT8/Display 1 (erreichbar mit Strg-Alt-F8). Damit kollidiert er nicht mit einem ggf. ebenfalls laufenden X-Display Manager (hier Xdm), der standardmäßig auf VT7/Display 0 läuft.

Das Kommando

vdr:# update-rc.d X4VDR start 19 2 . stop 21 0 1 6 .
legt die Soft Links zum automatischen Starten des Skriptes beim Booten an.

Damit VDR von nun an auf seinem eigenen X-Server im Vollbild-Modus startet, ist noch die Datei /etc/vdr/plugins/plugin.xineliboutput.conf anzupassen:

--local=sxfe
--fullscreen
--display=:1.0
Zusätzlich sind in der Datei /var/lib/vdr/setup.conf (oder im dazugehörigen OSD-Menü) mindestens folgende Einträge sinnvoll:
xineliboutput.Video.Deinterlace = linearblend
xineliboutput.Video.Scale = 1
Das Plugin stellt hier ziemlich viele Einstellmöglichkeiten bereit, ggf. machen noch weitere Anpassungen Sinn.

Nach einem /etc/init.d/vdr restart sollte der VDR nun auf VT8 erscheinen.

Schneller Booten

Damit normalerweise nicht benötigte Dienste beim Booten nicht automatisch gestartet werden, sollte man die entsprechenden Start-Links mit rm /etc/rc[S2].d/S[0-9][0-9]Init-Skript löschen (Debian verwendet standardmäßig den Runlevel 2 für den "normalen" Multiuser-Betrieb, siehe /etc/inittab). Bei meiner Minimalinstallation sind das nur:

Dienst Debian-Paketname Init-Skript unter /etc/init.d/
X Display Manager xdm xdm
Mailserver Exim exim4-base exim4

Die gelöschten Soft Links können bei Bedarf mit dpkg-reconfigure --unseen-only Paketname wieder angelegt werden (ggf. vorher alle Links löschen; dpkg-reconfigure --unseen-only --all konfiguriert alle Pakete neu).
Mit /etc/init.d/Init-Skript start kann der Dienst bei Bedarf nachträglich gestartet werden.

Ein paar weitere Sekunden lassen sich durch die Reduktion des Timeouts für das GRUB-Menü sparen (Datei /boot/grub/menu.lst):

timeout     2

Rechner per Fernbedienung hochfahren

Zum Hochfahren des Rechners per Fernbedienung muss das VFD-Modul (bei laufendem irserver) mit irclient programmiert werden:
vdr:# cd /usr/local/irtrans/
vdr:# ./irclient localhost


  1 - Send
  2 - Learn
  3 - Status

 99 - Exit

Select command 3

0 Device(s) Found:


99 - Exit

Select command 0
Device [0]:

Repeat Mask: o  o  o  o  o  o  o  x  x  o  o  o  o  o  o  o
             0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15

Device Mode Send             [20]: x
            IR               [21]: x
            SBUS             [22]: x
            IR RemoteCtrl    [23]: x
            SBUS RemoteCtrl  [24]: x
            RAW              [25]: o
            Fast Mode        [26]: o
            SBUS send Repeat [27]: x

PowerOn Remote               [40]: .04.30
PowerOn Command              [41]:

Cancel                     [88]
Save & Exit                [99]

Select command 40

Enter PowerOn Remote: mediacenter
Device [0]:

Repeat Mask: o  o  o  o  o  o  o  x  x  o  o  o  o  o  o  o
             0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15

Device Mode Send             [20]: x
            IR               [21]: x
            SBUS             [22]: x
            IR RemoteCtrl    [23]: x
            SBUS RemoteCtrl  [24]: x
            RAW              [25]: o
            Fast Mode        [26]: o
            SBUS send Repeat [27]: x

PowerOn Remote               [40]: mediacenter
PowerOn Command              [41]:

Cancel                     [88]
Save & Exit                [99]

Select command 41

Enter PowerOn Command: power
Device [0]:

Repeat Mask: o  o  o  o  o  o  o  x  x  o  o  o  o  o  o  o
             0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15

Device Mode Send             [20]: x
            IR               [21]: x
            SBUS             [22]: x
            IR RemoteCtrl    [23]: x
            SBUS RemoteCtrl  [24]: x
            RAW              [25]: o
            Fast Mode        [26]: o
            SBUS send Repeat [27]: x

PowerOn Remote               [40]: mediacenter
PowerOn Command              [41]: power

Cancel                     [88]
Save & Exit                [99]

Select command 99


  1 - Send
  2 - Learn
  3 - Status

 99 - Exit

Select command 99
mediacenter benennt die Datei remotes/mediacenter.rem mit den Fernbedienungs-Codes, power den Namen der Taste aus dieser Datei (siehe oben), über welche der Rechner eingeschalten werden soll.

Nach diesen Einstellungen kann der Rechner per Fernbedienung eingeschalten werden. Allerdings bleibt noch ein kleines Problem: Beim Drücken des Power-Knopfes der Fernbedienung schaltet der ACPI-Daemon den Rechner ohne Vorwarnung sofort aus. Daher muss noch das Modul button aus der Liste in /etc/default/acpid entfernt werden.

Rechner automatisch hochfahren lassen

Damit der VDR den Rechner (v.a. vor jedem Aufnahmestart) automatisch einschalten kann, muss das Motherboard "Automatic Power Up Control" oder "Resume by Alarm" unterstützen. Ein kleines Tool namens NVRAM WakeUp schreibt die Einschalt-Zeit ins NVRAM des Motherboards, welches dann den Rechner zu diesem Zeitpunkt einschaltet:
vdr:# apt-get install nvram-wakeup
vdr:# modprobe nvram
vdr:# echo nvram >> /etc/modules
Mein Motherboard wird von nvram-wakeup nicht direkt unterstützt, aber mit der passenden Konfigurationsdatei /etc/nvram-wakeup.conf läuft's:
vdr:# nvram-wakeup -C /etc/nvram-wakeup.conf -s $((`date +%s` + 10 * 60))

All values are displayed as they are stored in the nvram/rtc.
(and do not correspond necessarily to the system date/time)

WakeUp  : Disabled (0x05)
Day     : 10 (0x4A)
Hour    : 02 (0x02)
Minute  : 00 (0x00)
Second  : 12 (0x0C)
Checksum: 0xA23E

Enabling (0x0D) WakeUp-on-RTC in nvram.
New Day     : 24 (0x58)
New Hour    : 20 (0x14)
New Minute  : 46 (0x2E)
New Second  : 45 (0x2D)
New Checksum: 0xA2B5

Now really WRITING into /dev/nvram...
   The changes to take effect, you must reboot your computer now.
Zum Übernehmen der neuen Zeit-Einstellungen benötigt das BIOS einen Reboot, daher sind in der Datei /boot/grub/menu.lst noch die Einträge
# Menueeintrag aus /boot/grub/default starten
default       saved

# Menueeintrag zum Herunterfahren
title         Ausschalten
root          (hd0,2)
savedefault   0
cat           /boot/grub/PoweroffSplash
halt


zu machen, in /etc/vdr/vdr-nvram-wakeup.conf die Einträge
ENABLED="yes"
COMMANDLINE="-C /etc/nvram-wakeup.conf"
SPECIALSHUTDOWN="echo y | grub-reboot 3"
Die Zeile cat /boot/grub/PoweroffSplash benötigt meine Hardware, um den hier beschriebenen Fehler zu umgehen. /boot/grub/PoweroffSplash ist eine beliebige ca. 200kB-große Textdatei.

WLAN einrichten

Als Wireless-Karte verwende ich eine Netgear WG311v3. Die Karte ist keine glückliche Wahl für Linux, da es keine Linux-eigenen Treiber dafür gibt. Unterstützt wird sie nur über den Ndiswrapper, der es ermöglicht, die Windows-Treiber unter Linux einzusetzen.

Die Installation ist grob unter linwiki.org beschrieben, übertragen auf Debian Etch schaut sie so aus:

vdr:# apt-get install wpasupplicant
vdr:# apt-get install wireless-tools
vdr:# apt-get install ndiswrapper-source ndiswrapper-utils-1.9
vdr:# module-assistant update
vdr:# module-assistant prepare
vdr:# module-assistant auto-install ndiswrapper
vdr:# modprobe ndiswrapper
vdr:# echo ndiswrapper >> /etc/modules
Nach diesen Schritten sollten WPA Supplicant für die WPA/WPA2-Verschlüsselung sowie das Kernel-Modul und die Werkzeuge zur Konfiguration von Ndiswrapper bereit stehen. Es fehlen noch die Windows-Treiber. Um an diese zu kommen installiert man das Paket von ftp.netgear.de auf einem Windows-Rechner und übernimmt dann die vier Dateien aus C:\windows\inf\WG311v3\ auf den VDR-Rechner. Dort werden die Treiber dann mit
vdr:# ndiswrapper -i WG311v3.INF
vom Ndiswrapper übernommen. Wenn alles gut gegangen ist, zeigt ndiswrapper -l nun an, dass Karte und Treiber istalliert sind. Spätestens nach einem reboot sollte das Interface wlan0 nun verfügbar sein.
Für die automatische Verbindung zu meinem WLAN nach dem Systemstart und die IP-Konfiguration über DHCP sorgen folgende Einträge in /etc/network/interfaces:
auto wlan0
iface wlan0 inet dhcp
        wpa-ssid "KlartextSSID"
        wpa-psk 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
        wpa-key-mgmt WPA-PSK
        wpa-proto WPA
Die Zeichenfolge 012345...abcdef gibt das Kommando
vdr:# wpa_passphrase KlartextSSID 'KlartextPassphrase'
aus. Um zu verhindern, dass bei ausgeschaltenem WLAN-Router der VDR zu lange auf eine Antwort vom DHCP wartet, habe ich noch den Timeout in /etc/dhcp3/dhclient.conf verringert:
timeout 5;
retry 60;

Nützliches und Sonstiges

Im Folgenden sind weitere Änderungen am System beschrieben, die für den einen oder anderen Sinn machen können. Die Beschreibung ist teilweise unvollständig und nicht mehr aktuell, da ich selbst damit noch rumspiele oder die Änderung (erst mal) verworfen habe.

Systeminfo, CDROM/Festplatte herunterregeln usw.

Ggf. interessante Pakete: powertweak, hddtemp, hdparm, blktool. V.a. hdparm sollte mit Vorsicht eingesetzt werden (siehe Manpage).

Temperatur der Festplatte anzeigen:

vdr:# hddtemp /dev/hda
/dev/hda: SAMSUNG SP1604N: 29°C

CDROM herunterregeln:

vdr:# hdparm -E
Festplatte stoppen (Stromsparmodus):
vdr:# hdparm -y /dev/hda
Siehe auch -Y (Schlafmodus), -S (Standby Timeout), -M (Automatic Acoustic Management), Status abfragen mit -C.

Bootloader-Hintergrund-Bild (GRUB)

Um das GRUB-Bootmenü mit einer Grafik zu hinterlegen sind folgende Einträge in /boot/grub/menu.lst nötig:
    splashimage (hd0,1)/boot/grub/splashimages/linuxinside.xpm.gz
    foreground ffffff
    background 000000
Das Bild (hier linuxinside.xpm.gz) muss dann nach /boot/grub/splashimages/ kopiert werden. Fertige Bilder und eine genaue Beschreibung gibts unter http://linuxwiki.de/GRUB.

Bootsplash

Einen Bootsplash habe ich bei meiner jetzigen Installation noch nicht realisiert. Bei meinen alten Installationen (hier und hier) gab's schon mal was.

Umstellung auf UTF-8

Bei der Umstellung auf UTF-8 (von VDR 1.4 auf 1.6) sind die Kommandos iconv (für die Konvertierung von Textdateien) und convmv (für die Konvertierung von Dateinamen) hilfreich, z.B.:
vdr:# cd /var/lib/vdr/
vdr:# cp -a channels.conf channels.conf.pre-utf8
vdr:# iconv -f latin1 -t utf-8 channels.conf.pre-utf8 > channels.conf
und
vdr:# apt-get install convmv
vdr:# cd /var/lib/video.00/
vdr:# convmv --notest -r -f latin1 -t utf-8 .
Die EPG-Daten der Aufzeichnungen in der Datei info.vdr in den Aufnahme-Verzeichnissen lassen sich auch mit iconv wie oben beschrieben nach UTF-8 konvertieren, z.B. mit:
vdr:# cd /var/lib/video.00/
vdr:# for i in `find . -name info.vdr` ; do cp -a $i $i.pre-utf8 && iconv -f latin1 -t utf-8 $i.pre-utf8 > $i && rm $i.pre-utf8 ; done

Synchronisieren großer Datenmengen

Audio- und Video-Dateien füllen schnell ganze Festplatten. Um Datenbestände mit teilweise gleichen Inhalten übers Netz oder USB halbwegs schnell abgleichen zu können, hilft rsync ungemein. Der Aufruf
rsync --archive --delete /srcpath/rsyncsrc/ /dstpath/rsyncdst/
synchronisiert den Inhalt des Verzeichnisses /srcpath/rsyncsrc/ (Slash am Ende nicht vergessen!) nach /dstpath/rsyncdst/. Wirkt Wunder bei meiner lahmen USB 1.1-Schnittstelle.

Bekannte Probleme

Das Plugin vdr-plugin-xineliboutput hat für die Wiedergabe von MP3s und Bildern noch nicht den Funktionsumfang der entsprechenden Einzel-Plugins erreicht. Leider klappt auch die Zusammenarbeit mit vdr-plugin-image und vdr-plugin-mp3 nicht richtig.

Der Bildbetrachter von vdr-plugin-xineliboutput bzw. Xine-Lib arbeitet nicht sauber: die OSD-Infos verschwinden, das Bild flimmert leicht.

vdr-plugin-xineliboutput, "Musik abspielen" mit Visualisierung (Goom usw.): Das OSD wird nicht mehr richtig skaliert, es erscheint bildfüllend nur mehr die obere linke Ecke des OSDs. Ohne Visualisierung ist alles OK.

vdr-plugin-xineliboutput bzw. Xine-Lib: Bei einigen wenigen Video-Formaten (MOV?) flimmert und stockt die Wiedergabe.

vdr-plugin-xineliboutput bzw. Xine-Lib: Internet-Radio-Streams im RealMedia-Format lassen sich nicht abspielen, MP3, OGG und Windows Media klappt.

vdr-plugin-xineliboutput "Musik-CD abspielen" mit leerem Laufwerk bringt den VDR in eine Endlosschleife (laufende Syslog-Einträge), in der er laufend versucht, auf das CD-Laufwerk zuzugreifen. Bei Auswahl von "DVD abspielen" greift er nur einmal aufs Laufwerk zu und geht dann gleich wieder zurück aufs Fernsehbild. (ähnlicher Log-Eintrag kommt nur einmal).

vdr-plugin-xineliboutput, DVD-Player: Bei einigen DVDs läßt sich das DVD-Menü nicht bedienen, weil die Tasten nicht mit den richtigen Funktionen belegt sind (Xineliboutput erkennt anscheinend das DVD-Menü nicht).

vdradmin-am: Umlaute werden in den EPG-Daten nicht korrekt dargestellt.

Einige Menüeinträge v.a. der Plugins sind nur in Englisch.

Der Rechner ist noch nicht so leise, wie man es für einen Wohnzimmer-PC gerne hätte. Es scheint, als ob der Netzteil-Lüfter die lautesten Geräusche macht.

Das VFD-Display ist noch nicht in Verwendung (es zeigt nur Datum und Uhrzeit an).

Anhang

Konfigurationsdateien

Im Archiv LinuxVDRconfig.tar.gz liegen die wichtigsten Konfigurationsdateien von meinem VDR-Rechner.

Kurzanleitung zur Bedienung des VDRs

Diese einseitige Anleitung listet die Belegung der Fernbedienungs-Tasten meines VDRs in den wichtigsten Betriebsmodi auf (ODG, PDF).

Alte Versionen dieser Beschreibung

Links




Letzte Änderung: 27.05.2008