C't-VDR
Die c't-VDR-Distribution basiert auf Debian-Linux, mit entsprechenden Anpassungen. Die erste Version wurde mit Erscheinen der c't 20/03 auf der Heft-CD veröffentlicht. Das enthaltene Image wurde auf eine CD-R gebrannt, die dann bootfähig war. Mit c't 08/04 erschien c't-VDR Version 2. Das .iso-Image gibt es hier [1]. Alternativ ist inzwischen auch das Erstellen eines .iso-Images per jigdo möglich. Als nächstes wurde mit dem c't special 05/2004 "Kino daheim" [2] die Version 3 verfügbar, .iso-Image und jigdo-Dateien unter [3] ladbar. Aktuell ist Version 4 mit dem c't special 03/2005 "Media Center PC" [4] erhältlich.
Die Installation kann komplett offline erfolgen und der VDR in Betrieb genommen werden. Ab Version 2 können schon bei der Installation die Install-Routinen aktualisiert und aktuelle Pakete runtergeladen werden.
Vorteil der Debian-Grundlage ist die spätere individuelle Erweiterbarkeit der Installation. Auch Pakete, die nichts direkt mit dem VDR zu tun haben, können diesen sinnvoll ergänzen (z.B mc, ein NortonCommanderClone, less, der more-Ersatz)
Inhaltsverzeichnis |
Struktur
Was der VDR macht und wo die Dateien liegen:
Wenn der Rechner startet, wird mit dem Linux-Loader LiLo das zu startende Betriebssystem ausgewählt. Wenn der VDR an erster Stelle in der lilo.conf steht, startet er nach dem Countdown ohne Zutun. So ist ein Timer-gesteuertes Aufwachen und Aufnehmen von Sendungen möglich.
Nun wird die Datei /etc/inittab abgearbeitet, wobei die unterschiedlichen runlevel (Phasen des Startens, Laufens und Beendens von Linux) durchlaufen werden und die zum jeweiligen Runlevel passenden Skripte in den Verzeichnissen /etc/rc0.d bis /etc/rc6.d abgearbeitet werden. In jedem dieser Verzeichnisse befinden sich links zu den Skripten /etc/init.d/vdr, /etc/init.d/vdr-addon-vdrconvert und /etc/init.d/vdradmin
Mit dem Skript /etc/init.d/vdr wird der VDR dann automatisch gestartet. Manuell kann man den VDR mit /etc/init.d/vdr start starten (oder auch stoppen und restarten). Dabei werden die in /usr/lib/vdr/plugins/ für die jeweilige VDR-Version installierten Plugins automatisch gesucht und mit den entsprechenden Konfigurationen der Dateien in /etc/vdr/plugins/<name>.config geladen. Dann werden alle einzelnen /usr/share/vdr/command-hooks/commands.<name>.conf (Version 2: /etc/vdr/commands.<name>.conf) zu einer einzigen /var/lib/vdr/commands.conf (Version 2: /etc/vdr/commands.conf) zusammengesetzt und geladen (deswegen soll man letztere nicht ändern, die Datei wird bei jedem Start neu erstellt). Die Befehlszeilen in der Datei commands.conf werden im On-Screen-Display für die Bedienung mit der Fernbedienung zugänglich gemacht. Beispielsweise das Beenden vom VDR wird so ermöglicht, der VDR mit dem Skript /usr/bin/ctvdrstop.sh beendet oder das System mit /usr/bin/poweroffvdr heruntergefahren. Ebenso werden die Befehlszeilen in den Dateien /usr/share/vdr/command-hooks/reccmds.<name>.conf (Version 2: /etc/vdr/reccmds.<name>.conf) usw. zu einer zusammengefasst und stehen als Befehle im Menü Aufzeichnungen zur Verfügung.
Die Plugins wiederum rufen selbst Skripte und Programm auf wobei wiederum entsprechende Konfigurationsdateien eingelesen werden und das Verhalten steuern. Z.B. ruft das mplayer-plugin das Skript /usr/sbin/mplayer.sh auf und die Konfigurationsdatei /usr/local/etc/mplayer/mplayer.conf oder ~/.mplayer, wobei für das mplayer-plug-in noch die Konfigurationsdatei /etc/vdr/plugins/vdrmplayer.sh.conf benutzt wird.
Weitere Skripte, die aufgerufen werden können, sind /usr/bin/vdrconvert.sh /usr/bin/vdr2divx.sh oder andere /usr/bin/*vdr* (man kann die Dateien mit vdr im Namen schön suchen mit z.B. find /usr | grep vdr).
Beendet wird der VDR indem /usr/bin/poweroffvdr (ist in commands.conf definiert) von der Konsole eingeben wird, oder aus dem OSD heraus. Wie in /etc/default/vdr definiert ist, wird nach dem Beenden noch das Skript /usr/bin/shutdownvdr aufgerufen. Dieses Skript wiederum arbeitet nacheinander alle Skripte in /usr/share/vdr/shutdown-hooks ab. Eines davon ist shutdown90.nvram-wakeup.conf, welches mit nvram-wakeup die Aufwachzeit setzt und, falls nötig, dafür sorgt, dass statt einem Ausschalten ein Reboot durchgeführt wird. Dann wird der Rechner ausgeschaltet.
Doch Vorsicht! Einiges stimmt eventuell nur bei meiner Installation und unvollständig ist es sowieso noch.
2. Karte Installation
Anbei ein paar Tipps zur Installation einer zweiten DVB Karte.
1. Karte einbauen und booten
2. Mit "lspci" nachschauen, ob Linux die Karte überhaupt erkennt. Output sollte etwas so aussehen:
0000:01:00.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01) 0000:01:02.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
3. Die zweite Karte muss dem System bekannt gemacht werden. Für die c't VDR Version 3.0x folgendes ausführen:
dpkg-reconfigure linuxtv-dvb-modules-2.4.27-ctvdr-1
Dieses Kommande startet erneut das Skript, das nach vorhandenen DVB-Karten sucht. Es kann nämlich sein, dass die neue Karte ein anderes Frontend-Modul braucht als die alte. Vorher sind die DVB Module zu entladen und die Datei mit der Modulkonfiguration (/etc/modutils/linuxtv-dvb.2.4.27-ctvdr-1) zu löschen.
[Hinweis: VDR stoppen mit ctvdrstop, Module liste: lsmod, Module entladen: rmmod dvb-ttpci]
Jetzt sollte eine neue Version der Datei etc/modutils/linuxtv-dvb.2.4.27-ctvdr-1 geschrieben worden sein.
DVD brennen
Leider funktioniert bei der ctvdr306 das Brennen von DVDs nicht auf Anhieb - ein paar Anpassungen sind notwendig. Zunächst jedoch grob das Grundprinzip, wie DVDs gebrannt werden (Voraussetzung: vdrconvert-plugin und dvdselect-plugin):
ISO-File für DVD erstellen
- Zu brennenden Film im Hauptmenüpunkt "Aufzeichnungen" mit Cursor markieren
- Menüoption "Befehle" (rot) wählen
- vdr2dvd auswählen
- zu Liste hinzufügen (mit "back" zurück)
- vdrconvert starten (der Konvertierungsprozeß wird im letzten Hauptmenüpunkt angezeigt unter "vdrconvert", "Status anzeigen" - sobald er abgeschlossen ist, erscheint das ISO-File im DVD-Wechsler [der in diesem Fall besser die Bezeichnung DVD-Brenner tragen sollte])
ISO-File brennen
- im Hauptmenüpunkt "DVD-Wechsler" das zu brennende ISO-File mit Cursor markieren
- Menüoption "schreiben" (grün) wählen
Skript zum Brennen anpassen
Leider wird bei einer Standardinstallation bislang der Brennvorgang nicht gestartet. Abhilfe schafft in den meisten Fällen folgendes Skript, das nach /etc/vdr/plugins/dvdselect_writedvd.sh kopiert werden sollte (dort vorhandenes Originalskript überschreiben und darauf achten, dass das neue Skript ausführbar ist, z.B. indem man im Verzeichnis /etc/vdr/plugins den Befehl eingibt: chmod 770 dvdselect_writedvd.sh):
#!/bin/sh # # This script =/etc/vdr/plugins/dvdselect_writedvd.sh # will be called by the vdr-plugin dvdselect to copy a DVD to write a dvd iso image. # # Quelle: http://www.vdr-portal.de/board/thread.php?threadid=25586&sid= (Thomas kt1040) # # It gets the following parameter: $1 = filename of the iso file # echo "dvdrecord -eject -v dev=0,0,0 speed=4 -dao $1 \ >>/var/log/dvdrecord.log" | at now echo "/usr/bin/growisofs -dvd-compat -Z /dev/hdc=$1 >> \ /var/log/dvdrecord.log && eject /dev/hdc >>/var/log/dvdrecord.log" | at now
Achtung: Wer diese Zeilen unter Windows vom Browser in einen Texteditor kopiert und abspeichert, der kopiert leicht Carriage-Returns mit, weshalb das Skript dann unter Linux nicht funktionieren wird. Besser gleich unter Linux arbeiten oder aber die paar Zeilen von Hand abtippen.
Das Skript bewirkt, dass das Brennen tatsächlich gestartet wird - und dass die DVD nach Abschluß des Brennvorgangs ausgeworfen wird.
Troubleshooting
Man kann man auf dem VDR den Brennvorgang mitverfolgen oder hilfreiche Fehlermeldungen erhalten, wenn man folgenden Befehl absetzt:
tail -f /var/log/dvdrecord.log
Beim Ansehen oder Löschen des ISO-Files im DVD-Wechsler kann es passieren, dass der symbolische Link, der standardmäßig auf den DVD-Brenner zeigen sollte, weiterhin auf den ISO-File zeigt, was besonders unangenehm ist, wenn dieser längst gelöscht wurde. Die Folge kann ein "fatal error" des VDR sein mit konsequenten Abstürzen beim Neustart. Abhilfe verschafft ein einfaches Zurücklegen des Symlinks auf den DVD-Brenner. Dies kann z.B. einfach so geschehen:
cp /dev/cdrom /dev/dvd
Sollte das Phänomen häufiger auftreten, so kann man auch im Startskript /etc/init.d/bootmisc.sh folgenden Eintrag vornehmen:
rm /dev/dvd ln -s /dev/hdc /dev/dvd
Damit sollte zumindest beim Neustart gewährleistet sein, dass der Symlink auf den Brenner zurückgesetzt wird (natürlich ist oben /dev/hdc gemäß der eigenen Installation anzupassen).
Wenn der Brenner trotzdem einmal nicht loslegen sollte, so kann es sein, dass vdrconvert ein leeres ISO-File angelegt hat (dies kann man überprüfen, indem man im Verzeichnis /video/film/dvd nachsieht).
Problemlösungen
ständige Neustarts bei Aufnahme
Wenn die Aufnahme etwa alle 30 Sekunden durch Neustarts unterbrochen wird, so kann dies daran liegen, dass die notwendige Signalstärke unterschritten wird, so dass der VDR versucht, dies durch einen Neustart zu beheben. Abhilfe hilft (bei zwei DVB-Karten) ein Tausch der Satellitenkabel bzw. eine Verbesserung der Signalstärke.
Vgl. http://www.vdr-portal.de/board/thread.php?threadid=20318&hilight=aufnahme+restart
vdrconvert
F: Was tun, wenn vdrconvert ein 0 Byte großes ISO-File angelegt hat?
A: Hier schauen: http://www.heise.de/ct/foren/go.shtml?read=1&msg_id=7154769&forum_id=47443
DXR3
F: Wie installiere ich die CVS Treiber für die DXR3 Karte in den c't-VDR?
NVRAM WakeUp
F: Wie passe ich das Skript set_timer vom NVRAM WakeUp für die c't-VDR-Distribution an?
A: C't-VDR - set timer in c't-VDR
ruckelnde DVD-Wiedergabe trotz DMA
Wenn die DVD-Wiedergabe im DVD-Plugin trotz aktiviertem DMA-Modus ruckelig läuft, kann der Austausch der Bibliothek /usr/lib/vdr/plugins/libvdr-dvd.so.1.2.6 helfen. Das entsprechende Vorgehen ist in diesem Thread auf vdrportal.de beschrieben.
Updaten
Howto's
- C't-VDR - Streaming-Server ct'VDR mit Buget-Karte (für Newbies)
- C't-VDR - NVRAM Wakeup für VIA EPIA M10000
Links
[1] | http://www.heise.de/ct/ftp/projekte/vdr | c't-VDR-Projekt bei heise.de |
[2] | Befehle zur APT-Paket-Verwaltung | |
[3] | Debian | |
[4] | C't-VDR in Englisch |