VDR mit Debian
Der Video Disk Recorder (VDR) ist eine feine Sache: einfach eine digitale TV-Karte (entweder C/S oder T) in einen antiquierten PC einbauen und schon steht für wenig Geld ein vollwertiger digitaler Videorekorder zur Verfügung.
Neben speziellen VDR-Distributionen wie z.B. dem c’tVDR eignet sich fast jede Linux-Distribution als Basis. Dieser Artikel beschäftigt sich mit der Installation eines “normalen” SD-VDR auf Basis von Debian Wheezy.
Als Blaupause für die Basisinstallation dienten die Artikel von Tobias Grimm und Martin Selbald, wobei einige Hard- und Software-spezifische Besonderheiten eigene Lösungen benötigten. Die erste (nicht veröffentlichte) Fassung dieses Beitrags basierte auf der Installation eines No-Name-Rechners, die aktuelle Fassung wurde für die Installation auf einen DELL Precision T3400 überarbeitet. Eine wesentliche Änderung hierbei war der Umstieg von NVRAM-Wakeup auf ACPI Wakeup.
Installation des Grundsystems
Zur Installation des Grundsystems wird das NetInst-Image verwendet, welches in rund 280MB nur die nötigsten Pakete zur Installation mitbringt. Alle weiteren Pakete werden im Verlauf der Installation direkt aus dem Internet geladen.
Zum Betrieb des VDR muß lediglich ein Grundsystem installiert werden, d.h. bei der Software-Auswahl kann alles außer den Standard-Systemwerkzeugen abgewählt werden.
Installation SSH
Um komfortabler auf den VDR zugreifen zu können, sollte als erster Schritt der OpenSSH-Server installiert werden
apt-get install openssh-server
so daß anschließend eine Verbindung mit z.B. PuTTY möglich ist.
Installation X-Server
Zur Ausgabe des Fernsehbildes direkt am angeschlossenen Monitor wird als nächstes der X-Server sowie der leichtgewichtige Fenstermanager Fluxbox zusammen mit einigen weiteren Paketen installiert.
apt-get install less alsa-utils xterm xorg nodm x11-xserver-utils ffmpeg fluxbox
Theoretisch kann auch eine direkte Ausgabe des Bildes ohne Umweg über den Windowmanager erfolgen, dies hatte ab und an aber den unschönen Nebeneffekt, daß ein Absturz der Bildschirmausgabe auch gleich den X-Server mitriss.
Damit der X-Server jedesmal direkt bei Hochfahren gestartet wird, ist in der Datei “/etc/default/nodm” der Wert
NODM_ENABLED=true
zu setzen, bevor mit einem anschließenden
service nodm start
der X-Server manuell gestartet werden kann.
Installation VDR
Der VDR wird ebenfalls mit Debian Bordmitteln installiert. Während der Installation mittels
apt-get install vdr vdr-plugin-xineliboutput vdr-plugin-remote xineliboutput-sxfe
kann entweder das Standard-Videoverzeichnis “/var/lib/video.00” direkt angelegt werden oder später durch setzen der Variable “VIDEO_DIR” in der Datei “/etc/default/vdr” auf ein beliebiges Verzeichnis verwiesen werden.
Anschließend sollte die Beispiel-Tastaturkonfiguration kopiert werden, damit der VDR auch standardmäßig über die Tastatur bedienbar ist.
cp /usr/share/doc/vdr-plugin-xineliboutput/examples/remote.conf.example /var/lib/vdr/remote.conf
chown vdr:vdr /var/lib/vdr/remote.conf
Damit VDR überhaupt startet, müssen in der Datei “/etc/default/vdr” mehrere Werte gesetzt bzw. geändert werden
ENABLED=1
ENABLE_SHUTDOWN=1
bevor als letzter Schritt der Installation eine aktuelle Kanalliste aus dem VDR-Wiki an die entsprechende Stelle “/var/lib/vdr/channels.conf” kopiert wird.
Alternativ hierzu kann die Aktualisierung der Kanalliste auch nach Installation von w-scan bei gestopptem VDR selbst durchgeführt werden:
apt-get install w-scan
sudo -u vdr sh -c "w_scan -o 7 -f s -s S19E2 > /var/lib/vdr/channels.conf"
Ist dies erledigt, kann der VDR mittels
service vdr start
gestaret und die erfolgreiche Installation durch Eingabe von
vdr-sxfe
überprüft werden.
Damit die Ausgabe bei Systemstart ebenfalls automatisch startet, ist in der Datei “/root/.fluxbox/startup” der Eintrag
vdr-sxfe --fullscreen &
vor der Zeile “exec fluxbox” einzuzufügen.
Installation Samba
Sollen neben dem VDR auch noch andere (z.B. Windows-Clients) auf die aufgezeichneten Dateien zugreifen, so empfiehlt sich die Installation von Samba, welche mittels
apt-get install samba
durchgeführt wird. Anschließend ist die Datei “/etc/samba/smb.conf” so anzupassen, daß eine Freigabe des Verzeichnisses “/var/lib/video.00” z.B. unter dem Freigabenamen “video” erfolgt:
security = share
[video]
comment = video share
path = /var/lib/video.00
public = yes
writable = yes
guest ok = yes
browsable = yes
guest account = vdr
force user = vdr
Die hier verwendete Konfiguration räumt beim Zugriff auf die Freigabe maximale Rechte ein: jeder darf sich ohne Benutzer und Kennwort verbinden und z.B. nach dem Abspielen einer Aufnahme diese auch löschen.
Rechte für Benutzer “vdr” anpassen
Damit der Benutzer vdr (also der Eigentümer des VDR) bestimmte Aktionen durchführen darf, ist es notwendig, ihm mit entsprechenden Rechten auf die hierfür benötigten Dateien auszustatten. Nach der Installation von “sudo” mittels
apt-get install sudo
ist der Datei “/etc/sudoers” folgende Zeile hinzuzufügen:
vdr ALL=(ALL) NOPASSWD: /sbin/shutdown, /usr/sbin/grub-set-default, /usr/bin/smbstatus
Fernbedienung
Bevor die Fernbedienung in Betrieb genommen werden kann, muß das entsprechende Linux-Device ermittelt werden. Der Aufruf von
cat /proc/bus/input/devices
gibt eine Liste aller Devices aus, das gesuchte ist in diesem Fall der IR-Empfänger der Nova-S-Plus:
I: Bus=0001 Vendor=0070 Product=9202 Version=0001
N: Name="cx88 IR (Hauppauge Nova-S-Plus "
P: Phys=pci-0000:05:04.0/ir0
S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6
U: Uniq=
H: Handlers=kbd event6
B: PROP=0
B: EV=100013
B: KEY=10afc312 2142017 0 0 0 0 118000 41a8 4801 9e16c0 0 0 10000ffc
B: MSC=10
Das Kommanto “udevadm” liefert unter Angabe des Device-Namens nähere Informationen:
udevadm info --query=path --name=/dev/input/event6
von denen aktuell nur das zugeordnete Event bzw. dessen Pfad
/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6/event6
interessiert. Der so ermittlete Pfad wird dann nochmals mit “udevadm” genauer untersucht und ein
udevadm info --attribute-walk --path=/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6/event6
liefert den Block
looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6':
KERNELS=="input6"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="cx88 IR (Hauppauge Nova-S-Plus "
ATTRS{phys}=="pci-0000:05:04.0/ir0"
ATTRS{uniq}==""
ATTRS{properties}=="0"
Dieser beinhaltet letztendlich alle Informationen, die zum Erzeugen der Datei “/etc/udev/rules.d/70-remote-device.rules” benötigt werden.
KERNELS=="input*", ATTRS{name}=="cx88 IR (Hauppauge Nova-S-Plus ", SYMLINK+="input/ir"
Mit Hilfe dieses Eintrags wird automatisch das Device “/dev/input/ir” erzeugt, das für den vdr in der Datei “/etc/vdr/plugins/plugin.remote.conf” verwendet werden kann:
-i /dev/input/ir
Einbinden der Daten-Platte
Bevor die Daten-Platte benutzt werden kann, muß sie erstmal partitioniert und formatiert werden was die Kombination aus
cfdisk /dev/sdb
mkfs.ext4 /dev/sdb1
erledigt.
Während “früher” die einzelnen Datenpartitionen anhand ihres Device-Namens eingebunden wurden, wird neuerdings die UUID verwendet. Dies hat den Vorteil, daß im Falle des Hinzufügens (oder Entfernens) von Festplatten keinerlei Änderungen gemacht werden müssen, da die UUID gerätespezifisch ist.
Die jeweilige UUID kann mittels des Befehls “blkid” ermittelt werden, die Syntax ist
blkid /dev/sdb1
und ergibt eine Zeile wie
/dev/sdb1: UUID="6fa2d468-8b82-4a68-8aef-0f94c58a3fe2" TYPE="ext4"
Die so ermittelte UUID wird dann in die Datei “/etc/fstab” eintragen
UUID=6fa2d468-8b82-4a68-8aef-0f94c58a3fe2 /var/lib/video.00 ext4 defaults 0 2
so daß beim Systemstart die Partition unter dem Pfad “/var/lib/video.00” eingebunden wird.
Anschließend muß nur noch dem Benutzer vdr über ein
chown vdr:vdr /var/lib/video.00/
die volle Berechtigung über die Datenplatte überantwortet werden.
VDR am Abschalten hindern
Standardmäßig schaltet sich der VDR nach einer frei definierbaren Zeit der Inaktivität aus. Dieses grundsätzlich sehr löbliche Verhalten führt allerdings zu Ärger, falls zu diesem Zeitpunkt gerade ein Benutzer aktiv die Samba-Freigaben verwendet.
Ein Lösungsansatz wurde von der Zeitschrift c’t vorgestellt - ein Skript das als zusätzlicher Shutdown-Hook “S90.samba” im Verzeichnis “/usr/share/vdr/shutdown-hooks” überprüft, ob zum Zeitpunkt des Herunterfahrens aktive Verbindungen bestehen und das Herunterfahren in diesem Fall abbricht.
#! /bin/sh
# aktive Samba-Verbindung checken
# c't 14/10 Seite 155
#
# apt-get install sudo
# In sudoers zusätzlich eingetragen:
#vdr ALL=(ALL) NOPASSWD: /usr/bin/smbstatus
/usr/bin/sudo -u vdr /usr/bin/smbstatus 2> /dev/null | /bin/grep -i deny > /tmp/samba.tmp
if [ $? -eq 0 ] ; then
# warte 5 Minuten
echo "ABORT_MESSAGE=\"Samba-User aktiv, 5 Minuten warten\""
echo "TRY_AGAIN=5"
EXITSTATUS=1
else
EXITSTATUS=0
echo "ABORT_MESSAGE=\"Kein Samba-User aktiv\""
fi
exit $EXITSTATUS
Automatisches Aufwachen
Idealerweise sollte der abgeschaltete VDR zu vorher programmierten Aufnahmezeitpunkten wieder von selbst aufwachen. Während beim usprünglich verwendeten Board M7VKD noch NVRAM-Wakeup in Kombination mit einem angepassten GRUB-Menü zum Einsatz kam, beherrscht der T3400 moderne Methoden, was den Aufwand dank ACPI Wakeup deutlich reduziert.
Als erstes sollte sichergestellt werden, daß die Uhr des VDR richtig läuft und ggf. korrigiert wird. Dies kann entweder über den VDR selbst oder über NTP erledigt werden.
apt-get install ntp
Nach der Installation sollte in “/etc/adjtime” noch sichergestellt werden, daß die Systemuhr auf UCT läuft.
Das für ACPI Wakeup benötigte VDR-Addon ist nicht in den Standard-Debian-Quellen vorhanden, findet sich aber im e-tobi-Repository, das vom oben bereits erwähnten Tobias Grimm freundlicherweise zur Verfügung gestellt wird.
Statt der Einbindung des Repositories kann das Paket “vdr-addon-acpiwakeup_0.0.11_all.deb” auch vom Server http://e-tobi.net/vdr-experimental/pool-squeeze/binary/addons/ manuell heruntergeladen und anschließend installiert werden:
dpkg --install vdr-addon-acpiwakeup_0.0.11_all.deb
Auch hier sind noch zwei kleine Änderungen an der mitgelieferten Konfigurationsdatei “vi /etc/vdr/vdr-addon-acpiwakeup.conf” notwendig:
ACPI_ENABLED auf “yes” ändern und “ACPI_REGULAR_TIME” auskommentieren.
Abschluss
Zum Abschluss der Konfigurationsarbeiten kann ein
dpkg-reconfigure vdr
durchgeführt werden, das sich Debian-seitig um das Setzen der korrekten Rechte etc kümmert.
Leider geht das dr-addon-acpiwakeup von e-tobi unter wheezy und VDR 2.0 nicht mehr.
Suche verzweifelt eine Lösung.
Finde leider seit tagen schon nichts.
Gruß Michael