Linux-Projekt, Teil 2: Preiswerter TV/Video-Server - System für DVB-Software tunen

28.11.2005
Mit der richtigen Hard- und Software können Sie einen kompletten Multimedia-PC aufbauen und im Netz bereit stellen. Bevor Sie loslegen, ist jedoch Handarbeit an der Software notwendig.

In diesem Teil unserer Workshop-Reihe richten wir DVB für Linux und die grundlegenden Software-Pakete ein, auf denen der Video-Server laufen soll. Seien Sie jedoch vorab gewarnt, es kommt eine ganze Menge Handarbeit auf Sie zu. Dafür erhalten Sie jedoch ein offenes, flexibles und beliebig erweiterbares System.

Ausgehend von den Betrachtungen im ersten Teil dieser Workshop-Reihe verwenden wir für den Videoserver ein System mit folgenden Komponenten:

Motherboard

AOpen i915GMm-HFS

Prozessor

Intel Pentium-M

Grafik

On board

TV-Karte

Terratec Cinergy T²

Software

Als Basis verwenden wir die aktuelle Distribution SUSE 10. Die erste Hürde damit stellt sich allerdings bereits am Anfang. Zwar wird der Onboard-Sound des AOpen-i915GMm-HFS korrekt als „Intel High Definition Audio“ erkannt, aber es lässt sich kein Ton aus den Lautsprechern locken. Auch das Mixer-Control von KMix zeigt nicht die erwarteten Ein- und Ausgänge an.

Unter SUSE 9.3 funktioniert zwar der Sound, allerdings nur in Stereo. Des Rätsels Lösung findet sich in der neuen ALSA-Version 1.09, die in SUSE 10 verwendet wird. Man muss dem Modul snd-hda-intel den Parameter „model=6stack-digout“ mitgeben, dann funktioniert alles einwandfrei. Unter SUSE erledigen Sie das via YaST2 mit der Sound-Karten-Konfiguration. Bei anderen Distributionen editieren Sie die entsprechende modules.conf-Datei.

Im Prinzip sollte die Einrichtung auf jeder halbwegs aktuellen Linux-Distribution mit einem 2.6er Kernel funktionieren. Voraussetzung ist ein funktionierendes Sound-System und ein entsprechender X-Server. Je nach verwendetem TV-Standard müssen Sie den Kernel entsprechend konfigurieren und kompilieren. Bei SUSE 10 ist das nicht mehr nötig, da bereits alle notwendigen Module erstellt sind.

Der erste Schritt: DVB einrichten

Um überhaupt mit Linux DVB-T schauen zu können, ist zunächst die Hardware korrekt einzurichten. Überprüfen Sie zunächst, ob Ihr Kernel schon mit DVB-Unterstützung kompiliert wurde:

modprobe -l | grep dvb

Wenn hier eine entsprechende Liste erscheint, sind die DVB-Module bereits erzeugt und Sie können sich das Erstellen eines neuen Kernels sparen. Wenn Ihr System entsprechend konfiguriert ist, sollten die passenden Module auch schon beim Systemstart geladen worden sein. Das überprüfen Sie mittels

lsmod | grep dvb

Sind bereits DVB-Module geladen, werfen Sie einen Blick in die Kernel-Ausgaben, ob alles funktioniert hat:

dmesg

Hier finden Sie gegebenenfalls Fehlermeldungen des DVB-Moduls. Meistens liegt es daran, dass die DVB-Module noch zusätzliche Parameter zur genauen Bestimmung der Karte benötigen. Taucht dagegen kein Fehler auf, können Sie mittels einer aktuellen Version von Kaffeine gleich überprüfen, ob alles wunschgemäß funktioniert.

Kaffeine zum Testen

Kaffeine kann nämlich in der Version 0.7.x direkt auf DVB-Geräte zugreifen. Ein schneller, unkomplizierter Test ist somit möglich. Unter SUSE 10 ist das allerdings nicht ganz so einfach. Zwar wird die entsprechende Kaffeine-Version mitgeliefert, die Xine-Bibliothek ist jedoch aus Lizenzgründen abgespeckt.

Fehler: Per Default kann die SUSE-Version von Kaffeine DVB nicht darstellen. Hier ist zunächst Handarbeit angesagt.

Also gilt es zunächst, die Xinelib und somit auch Kaffeine mit den richtigen Optionen zu kompilieren. Neben dem normalen Compiler-Paket sowie autoconf und libtool benötigen Sie auch die folgenden Pakete in der „-devel“-Version:

Zusatz-Bibliotheken erstellen

Zudem brauchen Sie kompilierte und installierte Versionen von FLAC, LAME und ffmpeg. FLAC laden Sie einfach als ganzes Paket von der Homepage herunter, entpacken das tar.gz-Archiv und starten das Kompilieren und Installieren im Unterverzeichnis von FLAC:

./configure && make && make check && make install

Bei LAME verfahren Sie genauso. Um die ffmpeg-Library zu erhalten, benötigen Sie CVS und folgende Kommandozeilen:

cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login
cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg

Dann haben Sie im Unterverzeichnis ffmpeg alle notwendigen Sourcen, um die entsprechenden Libraries zu erstellen und zu installieren.

./configure --enable-mp3lame --enable-libogg --enable-vorbis
make && make install

Danach können Sie endlich die Xine-Bibliothek und Kaffeine bauen. Auch hier dasselbe Spiel. Im Verzeichnis der Xine-Sourcen führen Sie das folgende Kommando aus:

./configure && make && make install

Danach sind die Kaffeine-Sourcen mit demselben Kommando dran. Keine Sorge übrigens, allein für Testzwecke wäre dieser Aufwand natürlich viel zu groß. Da aber die Xine-Bibliothek auch von der TV-Software benutzt wird, sparen Sie sich später den Aufwand.

Manuelle DVB-Einrichtung

Wenn Ihr Kernel noch nicht mit den entsprechenden DVB-Modulen kompiliert wurde, ist das zunächst kein Beinbruch. Installieren Sie gegebenenfalls die Kernel-Sourcen und alle zusätzlich benötigten Pakete zur Kernel-Erstellung.

Danach wechseln Sie in das Verzeichnis /usr/src/linux. Dort rufen Sie

make cloneconfig

auf, damit die aktuelle - offensichtlich funktionierende Kernel-Konfiguration - kopiert wird. Im Folgenden starten Sie make config, make menuconfig oder make xconfig, je nachdem, welche Variante Sie bevorzugen: die rein textbasierte, die per ncurses oder die grafische. Setzen Sie auf jeden Fall die Custom-Variable, die dem Kernel eine eigene Endung gibt, also beispielsweise „dvb“.

Danach wie gehabt per

make
make install
make modules_install

den Kernel erstellen und installieren, dann neu starten und den neuen Kernel booten.

DVB-Module laden

Wenn der Kernel für DVB vorbereitet ist, können Sie mittels

modprobe <modulname>

versuchen, das für Ihre Karte passende Modul zu laden. Bei einer Terratec Cinergy T² heißt das verantwortliche Modul beispielsweise cinergyt2.

modprobe cinergyt2

Danach können Sie einfach per dmesg überprüfen, ob alles glatt gegangen ist. Wenn Ihre Karte nicht explizit in linuxtv.org aufgeführt ist, heißt das noch lange nicht, dass Hopfen und Malz verloren ist.

Versuchen Sie zunächst mittels lspci herauszufinden, welche Chips auf der Karte verbaut sind. Denn häufig basieren die DVB-Karten auf einem Referenzdesign des Chipherstellers. Zudem sind viele Treiber für einen Chipsatz und nicht zwingend für eine spezielle Karte geschrieben. Mit etwas Glück und ein wenig Probieren können Sie gegebenenfalls Ihre Karte benutzen. Sollten Sie einen Weg gefunden haben, eine noch nicht in linuxtv.org beschriebene Karte anzusteuern, lassen Sie die Community an Ihren Erkenntnissen teilhaben und schreiben ins Wiki, wie Sie es geschafft haben.

TV-Software einrichten

Jetzt geht es aber endlich an die Einrichtung der TV-Software und der dazugehörigen Komponenten. Wir verwenden MythTV, eine per Plug-in erweiterbare TV-Software, die von Haus aus eine Reihe interessanter Features mit sich bringt. So sind beispielsweise Front- und Backend getrennt.

Sprich, man kann sich ein reines Abspielsystem aufbauen, das dann auf ein Hochleistungs-Backend zurückgreift. Zudem lassen sich mehrere Backend-Rechner einbinden, die dann als Aufzeichnungs-Server dienen. Außerdem kann MythTV auf einen Hardware-MPEG-Encoder zurückgreifen, wie er beispielsweise in der Hauppauge PVR-250 verbaut ist, um analoge TV-Signale zu komprimieren.

MythTV benötigt ein paar zusätzliche Pakete. Das sind neben dem GCC noch mysql, freetype2-devel, XFree86-devel, qt-devel, qt3-mysql, xinelib, alsa-devel und LAME. Die letzten beiden haben wir im Kapitel „Kaffeine zum Testen“ schon eingerichtet. Wollen Sie zusätzlich XMLTV als elektronischen Programmführer (EPG) einsetzen, brauchen Sie zunächst Perl und eine Reihe von dazugehörigen Perl-Modulen.

EPG installieren

Fangen wir mit XMLTV an. Zwar liefert DVB auch einen EPG im Datenstrom mit. Der ist allerdings weniger ausführlich und liefert auch keine Kategorisierung der Sendungen. Für Deutschland greift XMLTV auf die Webseiten von TV Today zurück und konvertiert die dort enthaltenen Informationen in XML. Allerdings benötigen Sie eine aktuellere Version, die Sie hier erhalten. Neben dem Perl-Paket brauchen Sie einige Bibliotheken. Die libwwwperl installieren Sie am besten via YaST2 oder RPM. Die weiteren Pakete können Sie direkt in der neuesten Version vom CPAN holen:

perl -MCPAN -e shell
cpan> install XML::Twig
cpan> install Date::Manip
cpan> install XML::Writer
cpan> install HTML::TreeBuilder
cpan> exit

Danach entpacken Sie den Tarball

tar -xjf xmltv-nightly.tgz

und wechseln in das Verzeichnis xmltv-nightly. Dort rufen Sie perl Makefile.PL auf. Beantworten Sie lediglich die Frage nach dem TV-Today-Grabber mit „Yes“. Danach make und make install, um XMLTV einzurichten.

MythTV

Sie haben zwei Möglichkeiten, die Quellcodes von MythTV zu holen. Entweder laden Sie von der Homepage das aktuelle Release 0.18.1 herunter oder Sie ziehen per subversion die neuesten Quellen. Dazu müssen Sie gegebenenfalls das Paket subversion installieren.

mkdir mythtv
cd mythtv
svn co http://svn.mythtv.org/svn/trunk/mythtv
svn co http://svn.mythtv.org/svn/trunk/mythplugins
svn co http://svn.mythtv.org/svn/trunk/myththemes
cd mythtv

Danach ist zu überprüfen, ob die QT-Programme auch im Pfad eingetragen sind.

echo $PATH

Hier sollte sich die Angabe /usr/lib/qt3/bin finden. Zudem sollte die Variable QTDIR gesetzt sein und auf das Verzeichnis /usr/lib/qt3 verweisen. Bei Gentoo heißt das Verzeichnis /usr/qt/3. Bei SUSE ist das Verzeichnis nicht im Pfad zu finden, QTDIR ist jedoch gesetzt. Also benötigen Sie zunächst den passenden Pfadeintrag

export PATH=$PATH:/usr/lib/qt3/bin

Jetzt können Sie MythTV erstellen:

./configure --disable-joystick-menu --enable-dvb --enable-dvb-eit --dvb-path=/usr/src/linux/include/

Den Parameter dvb-path müssen Sie gegebenenfalls anpassen, falls Sie einen älteren Kernel und ein nicht im Kernel-Sourcetree installiertes DVB-Modul verwenden. Die Steuerung per Joystick schalten wir ab (--disable-joystick-menu), da dies auf unserem Testsystem immer zu Fehlern beim Kompilieren führt.

qmake mythtv.pro
make
make install

Damit werden das Backend und das Frontend erstellt und installiert. Nun wird die MySQL-Datenbank initialisiert. Dazu muss natürlich der MySQL-Server laufen. Es empfiehlt sich, MySQL beim Systemstart automatisch anzuwerfen. Läuft MySQL, wechseln Sie in das Verzeichnis database.

cd database
mysql -u root < mc.sql

Damit sind die notwendigen Datenbanken und Strukturen für MythTV angelegt. Jetzt können Sie das Backend konfigurieren.

Ausblick

Das Backend, das für alle Aufgaben rund um Aufzeichnung und Bearbeitung zuständig ist, läuft nun. Im nächsten Teil der Serie werden wir uns der Einstellung der Sender widmen und wie Sie die Daten aus dem elektronischen Programmführer (EPG) in die Datenbank einpflegen.

Danach geht es an das Frontend. Also den Bestandteil der Software, die der Benutzer zu sehen kriegt. Dort wird auch die Fernbedienung eingerichtet, ohne die ja kein richtiges TV-Feeling aufkommen kann. (mha)