Gentoo DVB Treiber
Inhaltsverzeichnis |
Treiber für Kernel 2.4
Benötigt werden evdev, input, i2c und videodev Support, egal ob als Modul oder im Kernel.
Kernelkonfiguration
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
Wenn man diese Funktionen als Module kompiliert, darf man nicht vergessen, sie auch beim Systemstart automatisch laden zu lassen. Unter Gentoo dient dazu die Datei /etc/modules.autoload.d/kernel-2.4 (bzw. entsprechend der eingesetzten Kernelversion). Dort sollten folgende Zeilen stehen:
i2c-core i2c-proc i2c-dev evdev
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 installier 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 aktivieren Select only drivers expected to compile cleanly aktivieren Select only drivers that don't need compile-time external firmware deaktivieren Loadable module support --> --> Enable loadable module support aktivieren Module unloading aktivieren Automatic kernel module loading aktivieren Bus options --> --> Support for hot-pluggable devices aktivieren File Systems --> Kernel automounter version 4 support aktivieren --> Pseudo filesystems --> --> /proc file system support aktivieren --> /dev file system support aktivieren --> Automatically mount at boot aktivieren --> /dev/pts file system for Unix98 PTYs aktivieren --> Virtual memory file system support aktivieren Device Drivers --> --> Generic Driver Options --> --> Hotplug firmware loading support aktivieren (m) --> Block Devices --> RAM disk support aktivieren --> Initial RAM disk (initrd) support aktivieren --> Input Device Support --> Event Interface aktivieren (notwendig bspw. für den eingebauten IR-Empfänger der Hauppauge Nexus) --> Character Devices --> Serial Drivers --> --> 8250/16550 and compatible serial support deaktivieren oder als Modul (nur für LIRC notwendig) --> Unix98 PTY support aktivieren --> Linux Infrared Controller --> --> Linux Infrared Controller deaktivieren oder als Modul (nur für LIRC notwendig) --> Serial Driver aktiviern (m) deaktivieren oder als Modul (nur für LIRC notwendig) --> Serial Receiver Type (Homebrew) --> I/O Port (0x3f8, 4) für COM1 --> /dev/nvram aktivieren --> Enhance Realtime Clock support aktivieren --> I2C support --> --> I2C support aktivieren (m) --> I2C device interface aktivieren (m) --> I2C Algorithms --> --> I2C bit-banging interfaces aktivieren (m) --> I2C PCF 8584 interfaces aktivieren (m) --> Multimedia Devices --> --> Video For Linux aktivieren --> Digital Video Broadcasting Devices --> --> DVB for linux aktivieren --> DVB core support aktivieren --> STV0299 based DVB-s frontend aktivieren (m) --> Alps TDLB7 aktivieren (m) --> Alps TDMB7 aktivieren (m) --> Grundig 29504-491 aktivieren (m) --> Grundig 29504-401 aktivieren (m) --> Frontends with external VES1820 demodulator aktivieren (m) --> Frontends with VES1893 or VES1993 demodulator aktivieren (m) --> AV7110 cards aktivieren (m) --> Compile AV7110 firmware into the driver (/usr/lib/hotplug/firmare/dvb-ttpci-01.fw) --> AV7110 OSD support aktivieren --> Budget cards aktivieren (m) --> Budget cards with onboard CI connector aktivieren --> Budget cards with analog video inputs aktivieren --> AV7110 card with Budget Patch aktivieren
für eine Hauppauge Nexus 2.1 Karte benötigt man eigentlich nur STV0299, AV7110 (+Firmware +OSD Support)
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 aktivieren Select only drivers expected to compile cleanly aktivieren Select only drivers that don't need compile-time external firmware deaktivieren Loadable module support --> --> Enable loadable module support aktivieren Module unloading aktivieren Automatic kernel module loading aktivieren Device Drivers --> --> Generic Driver Options --> --> Hotplug firmware loading support aktivieren (m) --> Input Device Support --> Event Interface aktivieren (notwendig bspw. für den eingebauten IR-Empfänger der Hauppauge Nexus) --> Character Devices --> Unix98 PTY support aktivieren --> /dev/nvram aktivieren --> Enhance Realtime Clock support aktivieren --> I2C support --> --> I2C support aktivieren (m) --> I2C device interface aktivieren (m) --> I2C Algorithms --> --> I2C bit-banging interfaces aktivieren (m) --> I2C PCF 8584 interfaces aktivieren (m) --> Multimedia Devices --> --> Video For Linux aktivieren --> Digital Video Broadcasting Devices --> --> DVB for linux deaktivieren
Jetzt das linuxtv-dvb-cvs ebuild emergen:
echo "media-tv/linuxtv-dvb-cvs ~x86" >> /etc/portage/package.keywords emerge linuxtv-dvb-cvs
Finden des richtigen Treibers
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 dein 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
Laden des Treibers
Entweder wir laden die Treiber nun mit der Hand:
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.