C't-VDR

Aus VDR Wiki

Wechseln zu: Navigation, Suche

Die c't-VDR-Distribution wird von der Zeitschrift c't vertrieben und basiert auf Debian-Linux mit entsprechenden Anpassungen. Einer der Vorteile der Debian Basis ist die spätere individuelle Erweiterbarkeit der Installation auch aus anderen Quellen als von der c't. Auch Pakete, die nicht unmittelbar mit dem VDR zu tun haben, können diesen sinnvoll ergänzen (z.B Midnight Commander, less, ..).

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. Ab Version 4 ist der Installer auch nach der Erst-Installation weiter zum Ändern und Nachinstallieren ausführbar.

Beschrieben wird die jeweils aktuelle Version unter http://www.heise.de/ct/ftp/projekte/vdr/.

Inhaltsverzeichnis

Historie

Erste Version

Die erste Version wurde mit Erscheinen der c't 20/2003 auf der Heft-CD veröffentlicht. Das enthaltene Image wurde auf eine CD-R gebrannt, die dann bootfähig war. Inhalt ist ein Kernel 2.4.21, VDR 1.2.2, DVB-Treiber 1.0, Plug-ins nur mit Updates möglich.

c't-VDR Version 2

In Heft c't 08/2004 erschienen, das iso-Image 2.06 ist hier online ladbar. Alternativ ist auch das Erstellen eines .iso-Images per jigdo möglich. Inhalt ist ein Kernel 2.4.24, VDR 1.2.6-15, DVB-Treiber 1.0 und 1.1, Hollywood+, PVR, diverse Plug-ins und Add-ons.

c't-VDR Version 3

Als nächstes wurde mit dem c't special 05/2004 "Kino daheim" die Version 3 verfügbar, .iso-Image 3.06 und jigdo-Dateien sind hier verfübar. Der c't-VDR 3 besteht aus einem Kernel 2.4.27, VDR 1.2.6-27 oder 1.3.12-2 und Debian-Sarge (Testing).

c't-VDR Version 4

Im c't special 03/2005 "Media Center PC" erschien die Version 4 (bzw. nach jigdo-Aktualisierung 4.01). Das Heft ist ausverkauft, online war diese Version nie verfügbar. Diese c't-VDR-Distribution enthält sowohl die stabile VDR-Version (1.2.6-34) als auch die Entwicklerversion (1.3.24-1) und ermöglicht die Wahl zwischen Kernel 2.4.30 und 2.6.12.

c't-VDR Version 4.5

Seit dem 08.01.2006 gibt es die Version 4.5 als reine Web-Veröffentlichung, angekündigt wurde sie hier. Kernel 2.4.31, 2.6.12 und über Update 2.6.15 stehen zur Auswahl, VDR ist in der Version 1.3.37 enthalten. Die seperate VdrDevel-Version wurde entfernt.

c't-VDR Version 5

Auf der CD zum Heft c't 11/2006 oder seit April 2007 auch zum Download vom Heise Ftp-Server die neuste Version 5.1 plus

  • VDR 1.3.49 mit allen Korrekturen versehen, die Klaus Schmidinger in die Version 1.4 aufgenommen hat,
  • knapp 100 Plug-ins mit den Patches der Debian-Paketbetreuer, um sie mit VDR 1.4/1.3.49 lauffähig zu machen,
  • Kernel 2.6.16 mit passenden Modulen für Hollywood+/DXR3, LIRC und Co.,
  • minimales XFree86 für den Betrieb eines Systems mit einer simplen DVB-Karte ohne MPEG-Decoder und der Hilfe des Software-Decoders Xine.

Achtung bei Installation mit der Original-Heft-CD: Installation mit Boot-Auswahl 'auto' kann nur gesamte Platte formatieren. Die manuelle Installation erreicht man durch folgende Eingabe am Boot-Prompt:

 boot>  install preseed/file=/cdrom/cfg/manual

Es gibt ein Update, siehe c't - Projekte: Fernseh-PC Release Notes Version 5

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. Der erste Eintrag in der /etc/lilo.conf wird von lilo nach Ablauf der Wartezeit automatisch gestartet. Normalerweise wird das der VDR sein. So ist ein Timer-gesteuertes Aufwachen und Aufnehmen von Sendungen möglich. Ab c't-VDR 4.x kommt der Bootmanager Grub zum Einsatz (in c't-VDR 2 auch schon).

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 ist es nutzlos Letztere zu ändern, da diese Datei bei jedem Start neu erstellt wird). 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 Programme auf, wobei wiederum entsprechende Konfigurationsdateien eingelesen werden und das Verhalten steuern. Z.B. ruft das mplayer-plugin das Skript /usr/sbin/mplayer.sh und die Konfigurationsdatei /usr/local/etc/mplayer/mplayer.conf oder ~/.mplayer auf, 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. Danach wird der Rechner ausgeschaltet.

Doch Vorsicht! Einiges stimmt eventuell nur bei meiner Installation und unvollständig ist es sowieso noch.

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 (heisst eigentlich addon-vdrconvert) 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 DVD-Liste hinzufügen (mit "Zurück" ein Menü höher)
  • VDRConvert starten (der Konvertierungsprozeß wird im letzten Hauptmenüpunkt "Befehle" 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).

Bekannte Probleme + Problemlösung

Fernbedienung der Technotrend/Nexus-Karte Version 2.3 funktioniert nicht mit dem remote-plugin (c´t 4.5)

Offenbar sind die vorgegebenen Codes in /var/lib/vdr/remote.remote-event.conf falsch. Abhilfe: Diese Datei löschen, aus /var/lib/vdr/remote.conf alle das remote-plugin betreffenden Einträge entfernen, vdr neu starten (/etc/init.d/vdr stop; /etc/init.d/vdr start). Der vdr startet im FB-Lernmodus, die FB wird erkannt; ab dann siehe neue FB anlernen.

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 kann (bei zwei DVB-Karten) ein Tausch der Satellitenkabel bzw. eine Verbesserung der Signalstärke bringen.

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:

DXR3

F: Wie installiere ich die CVS Treiber für die Dxr3 Karte in den c't-VDR?

A: Dxr3

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

F: Muss die vdr-nvram-wakeup.conf in /etc/vdrdevel/ liegen?

A: Nein, sie wird nur in /etc/vdr/ gesucht. Sie muss dort auch für VDRDevel (=v1.3.x) nur vdr-nvram-wakeup.conf heissen!

F: Ist bei Grub-Verwendung der Poweroff-Kernel (kernel-poweroff per apt) notwendig, wenn das Mainboard einen Reboot verlangt?

A: Nein, da dies auch mit einem halt Eintrag in der Menu.lst geht. siehe dafür : NVRam-WakeUp-Anleitung

ACPI-WakeUp zum Laufen bringen (Bsp. für Siemens D1184)

Sollte auch für andere Boards funktionieren! Auch als Lösung, wenn das Mainboard nach dem Herunterfahren nicht ausschaltet.

Im BIOS APM deaktivieren und alle Set Timer Funktionen zum Wecken des PC zu einer gewissen Zeit.

Zuerst muss man per

 apt-get install acpi vdr-addon-acpi-wakeup

nachinstallieren und dann in /boot/grub/menu.lst bei dem verwendetem Kernel acpi=force hinzufügen.

Zum Beispiel so:

 kernel		/boot/vmlinuz-2.4.27-ctvdr-1 root=/dev/hda1 acpi=force ro

Und evtl. muss man dann noch in /etc/init.d/hwclockfirst.sh und hwclock.sh --directisa anfügen:

Das geht einfach so:

 HWCLOCKPARS="--directisa"

Außerdem muss hier in jeder Zeile mit hwclock der Parameter

 $HWCLOCKPARS

hinzugefügt werden.

Dann gucken, ob es nach einem Reboot /proc/acpi/alarm gibt. Wenn ja, mit

 echo "2007-01-18 11:33:00" >/proc/acpi/alarm
 echo "2007-01-18 11:33:00" >/proc/acpi/alarm

Nun überprüfen, ob in /proc/acpi/alarm etwas drin steht mit:

 cat /proc/acpi/alarm

Dann, wenn ok:

 shutdown -h now

testen (Zeit (und Datum zum Test s.u.) natürlich so anpassen, dass sie in der Zukunft liegt(en) und genug Zeit (ca. 30min) ist, bis zum Weckzeitpunkt). Es muss (zumindest bei Siemens Boards) 2x übergeben werden, damit es geht.

Dann abwarten, ob der Rechner zur gestellten Zeit aufwacht.

Wenn nicht, überprüfen, ob er 2h später aufwacht. Dann muss die Systemuhr umgestellt werden von CET auf MEZ...

Wenn ja, dann muss man in /etc/vdr/vdr-addon-acpiwakeup.conf noch

 ACPI_ENABLED=no

auf yes setzen! Und

 ACPI_REGULAR_DAYS=0

auf 1 setzen, ausser man hat eins der ganz wenigen Boards, die das Datum mitübergeben können. Dies kann man oben testen, indem man auch das Datum auf z.B. das von Übermorgen ändert!

Wenn nicht, überprüfen, ob er 2h später aufwacht. Dann muss die Systemuhr umgestellt werden von CET auf MEZ...

Links: [1] [2] [3]

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 im VDR-Portal beschrieben.

Numlock beim Boot aktivieren

F: Wie kann ich beim Start die Numlock-Funktion aktivieren?

A: In /etc/console-tools/config die Zeile LEDS=+num auskommentieren bzw. hinzufügen. Alternativ siehe unter Tastatur#Numlock um Numlock beim Start einzuschalten und beim Herunterfahren wieder aus!

Framebuffer c't vdr 4 / 4.5

F: Wie bekomme ich den VesaFB unter ct vdr 4(.5) ans laufen (habe ein schwarzes Bild,wenn ich vga=XXX in /boot/grub/menu.lst an die kernel-Zeile anhänge)?
A: 1. In /etc/mkinitrd/modules folgende Zeilen einfügen:
fbcon
font
2. mkinitrd -o /boot/initrd.img-2.6.12-test 2.6.12-ct-1 (geht auch mit kernel 2.6.15, dann muss natürlich der Aufruf entsprechend geändert werden
3. Wenn noch nicht passiert vga=XXX (z.B XXX = 0x314 siehe Frambuffer-Doku) an die Kernel-Zeile in /boot/grub/menu.lst anfügen
4. REBOOT UND TUT!

Option: Alternativ kann man dem c't vdr auch einen neuen Kernel verpassen, z.B. den von c't vdr 5 (Quelle: deb http://www.heise.de/ct/ftp/projekte/vdr5 extras/). Dann reicht es, nur vga=0x311 (oder welchen FB-Mode man auch immer haben möchte, siehe Framebuffer-Howto) an die Kernel-Zeile in /boot/grub/menu.lst anzufügen. Nach einem Reboot sollte es dann gehen.

remote.conf

F: Wie lerne ich ein neues Eingabegerät an? Der VDR vergisst das bei jedem Neustart.

A: Siehe c't-VDR - remote.conf

lirc

F: Warum funktioniert lirc nicht bei der Onlineinstallation.

A: In den Onlinequellen fehlt die Datei lirc-modules-2.6.16-ct-1. Um den Fehler zu beheben kann man folgendes Howto anwenden: lirc mit ctvdrcfg installieren und konfigurieren (geht über Details) mit der Original-CD als Quelle in der /etc/apt/sources.list

apt-cdrom add   [CD muss eingelegt sein]
apt-get install setserial lirc-modules-2.6.16-ct-1

in /etc/modules lirc_serial schreiben und in /etc/lirc/hardware.conf LIRCD_CONF="" in LIRCD_CONF="/etc/lirc/lircd.conf" ändern, rebooten und zumindest bei mir hat es funktioniert.

MTA exim4

F: Trotz bestehender Internetverbindung (Router) stoppt der Bootvorgang bei der Zeile "Starting MTA..." für ca. 1 Minute.

A: Manche Router haben anscheinend ein "DNS-Problem" (z.B. Siemens SE515, D-Link DSL-G604T...). Zu Beginn der Installation nicht die lokale IP des Routers unter DNS-Server eintragen, sondern z.B. den DNS-Server des Providers. Auf einem bereits installierten VDR findet man die Einstellungen für den DNS-Server unter /etc/resolv.conf. Sollte bei einem Online-Update der Server ftp://ftp.nerim.net/debian-marillat nicht erreichbar sein, ist dies ein weiteres Indiz für einen Router mit besagtem "DNS-Problem".

Sendersuchlauf bei 2 verschiedenen Karten DVB-C und DVB-T

F: Was muß beachtet werden?

Howtos

Links

  1. Debian
  2. c't-VDR-Projektseiten bei heise.de
  3. Debian - Befehle zur APT-Paket-Verwaltung
  4. c't-VDR - 45instguide
  5. VDR-Portal Board für c't-VDR
  6. Tobi's c't VDR Repository