Gentoo DVB Treiber

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Treiber für Kernel 2.4

Kernelkonfiguration

Hier wäre ein Einleitungssatz ganz nett!! Wie kommt denn hier hin? Welches Programm muß man starten, um das nachfolgende Menü zu sehen??

Input core support  --->
    <M> Input core support
    <M>   Event interface support

Character devices  --->
   I2C support  --->
    <*> I2C support
    <M> I2C bit-banging interfaces
    <M> I2C device interface
    <M> I2C /proc interface

Multimedia devices  --->
    <*> Video For Linux
    Video For Linux  --->
     [*]   V4L information in proc filesystem

Jetzt kann das linuxtv-dvb ebuild installiert werden. (Wenn es jetzt nicht installiert wird, passiert dies automatisch bei der Installation von VDR).

emerge linuxtv-dvb

Treiber für Kernel 2.6

Kernel 2.6 enthält schon einige DVB-Treiber, d.h. es gibt hier 2 Möglichkeiten. Entweder man nimmt die mitgelieferten Treiber, oder man installiert sich die neuesten Treiber aus dem CVS von [linuxtv.org].

Variante A - Kernel-Treiber

Kernelkonfiguration

Code maturity level options --->
    [*] Prompt for development and incomplete code / driver
    [*] Select only drivers expected to compile cleanly

Loadable module support --->
    [*] Enable loadable module support
    [*] Module unloading
    [*] Automatic kernel module loading

Device Drivers --->
    Generic Driver Options --->
        [*] Select only drivers that don't need compile-time external firmware
        [*] Prevent firmware from being built
        <M> Hotplug firmware loading support

    Block Devices --->
        <*> RAM disk support
        [*] Initial RAM disk (initrd) support

    Input Device Support --->
        <M> Event Interface (i.e. notwendig für den intergierten IR-Empfänger der Hauppauge Nexus)

    Character Devices --->
        Serial Drivers -->
            [ ] 8250/16550 and compatible serial support (oder als Modul, nur notwendig für LIRC)

        [*] Legacy (BSD) PTY support
        <M> /dev/nvram support
        <M> Enhance Realtime Clock support

    I2C support --->
        <M> I2C support
        <M>   I2C device interface

        I2C Algorithms --->
            <M> I2C bit-banging interfaces
            <M> I2C PCF 8584 interfaces

    Multimedia Devices --->
       <M> Video For Linux aktivieren

       Digital Video Broadcasting Devices --->
           [*] DVB For Linux
           <M> DVB Core Support

           <M> AV7110 cards
           [*]   AV7110 OSD support

           (enable every module in here)

File Systems --->
    <*> Kernel automounter version 4 support (also supports v3)

    Pseudo filesystems -->
        [*] /proc file system support
        [*] Virtual memory file system support (former shm fs)
        [*] /dev/pts file system for Unix98 PTYs

Variante B - Treiber aus dem CVS

Hier werden wie bei Kernel 2.4 nur die grundlegenden Dinge im Kernel selber aktiviert. Die Treiber für die DVB-Karten werden vom Kernel getrennt compiliert.

Kernelkonfiguration

Code maturity level options --->
    [*] Prompt for development and incomplete code / driver
    [*] Select only drivers expected to compile cleanly

Loadable module support --->
    [*] Enable loadable module support
    [*] Module unloading
    [*] Automatic kernel module loading

Device Drivers --->
    Generic Driver Options --->
        [*] Select only drivers that don't need compile-time external firmware
        [*] Prevent firmware from being built
        <M> Hotplug firmware loading support

    Block Devices --->
        <*> RAM disk support
        [*] Initial RAM disk (initrd) support

    Input Device Support --->
        <M> Event Interface (i.e. necessary for included IR-Receiver of the Hauppauge Nexus)

    Character Devices --->
        Serial Drivers -->
            [ ] 8250/16550 and compatible serial support (or as module, only necessary for LIRC)

        [*] Legacy (BSD) PTY support
        <M> /dev/nvram support
        <M> Enhance Realtime Clock support

    I2C support --->
        <M> I2C support
        <M>   I2C device interface

        I2C Algorithms --->
            <M> I2C bit-banging interfaces
            <M> I2C PCF 8584 interfaces

    Multimedia Devices --->
       <M> Video For Linux aktivieren

       Digital Video Broadcasting Devices --->
           [ ] DVB For Linux

File Systems --->
    <*> Kernel automounter version 4 support (also supports v3)

    Pseudo filesystems -->
        [*] /proc file system support
        [*] Virtual memory file system support (former shm fs)
        [*] /dev/pts file system for Unix98 PTYs

Jetzt das v4l-dvb-cvs ebuild (neu bei gentoo.org, ersetzt früheres linuxtv-dvb-cvs von gentoo.de) emergen:

echo "media-tv/v4l-dvb-cvs ~x86" >> /etc/portage/package.keywords
emerge v4l-dvb-cvs

Finden des richtigen Treibers

Zuerst wird das evdev-Modul geladen:

echo evdev >> /etc/modules.autoload.d/kernel-2.6

Da es relativ viele verschiedene DVB-Karten gibt muss jetzt herausgefunden werden welcher Treiber denn zu laden ist. Dies geht bei PCI-Karten zB mit pcimodules. Falls noch nicht vorhanden installieren wir die pciutils.

emerge pciutils

Nun schauen wir welche Treiber sich zuständig fühlen:

vdr # pcimodules
ohci-hcd
ehci-hcd
sis900
snd-emu10k1
dvb-ttpci
b2c2-flexcop-pci
nvidia
nvidiafb

In diesem Fall sind dies die Treiber dvb-ttpci und b2c2-flexcop-pci. Diese beiden werden nun in /etc/modules.autoload.d/kernel-2.6 (Kernel 2.4 analog) eingetragen:

echo dvb-ttpci >> /etc/modules.autoload.d/kernel-2.6
echo b2c2-flexcop-pci >> /etc/modules.autoload.d/kernel-2.6


Installation der Firmware

Seit neuestem gibt es ein ebuild für die Firmware-Dateien. Hierfür kann man in /etc/make.conf festlegen für welche DVB-Karten man Firmware-Dateien braucht. Falls man diesen Schritt unterlässt, werden alle Firmware-Dateien installiert (Warnung: ca. 60MB Download)

In /etc/make.conf:

DVB_CARDS="..."

Im Moment unterstützte Werte für DVB_CARDS:

dibusb-usb1 dibusb-usb2 nxt2002 nxt200x or51132 or51211 sp8870 sp887x
tda1004x ttpci ttusb-dec usb-a800 usb-dtt200u usb-umt usb-vp702x
usb-vp7045 usb-wt220u

In den meisten Fällen entspricht dieser Name dem Namen des entsprechenden Treibers der diese Firmware braucht.

Wenn man beispielsweise eine FF-Karte und eine Karte mit nxt2002 Chip installiert hat sollte DVB_CARDS mindestens so aussehen:

DVB_CARDS="ttpci nxt2002"

Danach wird das Packet linuxtv-dvb-firmware per emerge installiert.

echo "media-tv/linuxtv-dvb-firmware ~x86" >> /etc/portage/package.keywords
emerge linuxtv-dvb-firmware

Das Packet hotplug sollte installiert sein. Wenn noch nicht geschehen:

emerge sys-apps/hotplug

TIPP: Falls das Laden der Firmware fehlschlagen sollte, kann man andere Versionen von udev probieren.

Mit der aktuell stabilen Version udev-079 funktioniert es sehr gut.

Laden des Treibers

Entweder wir laden die Treiber nun mit der Hand:

modprobe evdev
modprobe dvb-ttpci
modprobe b2c2-flexcop-pci

oder wir starten das Bootskript welches die Module lädt (unsauber):

/etc/init.d/modules zap start

Nach dem Laden kann man die Ausgaben der Treiber mit dmesg betrachten.

Für eine Karte mit eigenem MPEG-Decoder sollte die Ausgabe von dmesg ungefähr so aussehen:

DVB: registering new adapter (Siemens/Technotrend/Hauppauge PCI rev1.3).
saa7146_core.o: adjusting pci latency to 64
DVB: registering frontend 0:0 (Grundig 29504-491, (TDA8083 based))...
DVB: AV7111(0) - firm f0240009, rtsl b0250018, vid 71010068, app 80002613
DVB: AV7111(0) - firmware supports CI link layer interface

Wenn dem so ist, Glückwunsch. Wenn nicht kann es daran liegen das einige Kernelmodule/ Funktionen fehlen.

In anderen Sprachen