Inhalt


3. BTTV installieren

Um neue Hardware unter Linux betreiben zu können, ist es fast immer notwendig, einen neuen Kernel zu konfigurieren und kompilieren. Für weitergehende Informationen zur Konfiguration und Kompilierung des Kernel gibt es die Linux Kernel HOWTO. Besonders hilfreich ist die Dokumentation, die mit dem Kernel mitgeliefert wird; alle Dateien sind im Verzeichnis Documentation/ des Kernel Sources zu finden.
Stellen Sie vor dem Konfigurationsbegin genau fest welche Hardware Sie besitzen !

Wenn Sie Windows parallel betreiben, dann können Sie eventuell in der Windows TV Software unter Info die Daten abrufen oder in der Systemsteuerung. Die Software Hauppauge WinTv 2000 bietet da z.B. sehr viele Information (Siehe unter "About WinTv32 ->Driver Details".
Programm für Windows das den BT Chiptyp erkennen kann

3.1 Kernel und Module kompilieren

Module müssen fast immer bei einer Änderung der Kernel-Version neu erzeugt  werden. Innerhalb gleicher Kernel-Version ist es normallerweise nicht notwendig. Bei SMP sollten die Module immer neu erzeugt werden. Der erste Schritt zu einem neuen Kernel ist die Konfiguration. Hier wählt man die Kernelkomponenten aus, die man braucht. Als erstes wechselt man in das Verzeichnis /usr/src/linux. Da das X-Window für TV-Karten verher schon installiert sein muß ändert man am bequemsten die Konfiguration mit dem grafischen Konfigurationstool durch Eingabe von:

make xconfig

Es ist zu empfehlen alle Kernel-Module, die nicht zwingend während des Bootvorgangs benötigt werden als ladbare Module zu realisieren und den Kernel Module Loader zu aktivieren. Wählen Sie nun die entsprechende Hardware aus und Speichern die Konfiguration. Damit die Konfigurationsänderungen wirksam werden, muß man den Kernel und die Module kompilieren. Dies macht man am besten so:

make dep clean zImage modules modules_install lilo
 
 

Kernel HOWTO (deut. Version)
Modules-Mini HOWTO (engl. Version)
Neue Kernel Versionen (http://www.de.kernel.org)

3.2 Der BTTV Treiber

Der bttv Treiber ist von Ralph und Marcus Metzler entwickelt worden. Alan Cox hat für die Treiber die Video4Linux API erstellt. Über diese Schnittstelle komunizieren Modul und Anwendersoftware wie z.B. xawtv. Die neueste Version des  BTTV Treibers (aktuelle Version 0.6.4) bekommt man unter der URL http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html. Seit Kernelversion 2.2 sind die BTTV Module auch direkt in den Kernel Sources enthalten. Den neuesten Kernel kann man unter: http://www.de.kernel.org herunterladen.

Der BTTV Treiber ist in fünf Module gegliedert:

3.2.1 Sichern des EEPROM Inhaltes bei Hauppauge Karten

ACHTUNG:
Wenn Sie besitzer einer Hauppauge Win/TV Karte sind, dann sollte der Inhalt des EEPROMS vor dem Start der TV Programme gesichert werde. Das EEPROM könnte beim ersten Start überschreiben werden! Weiter Information stehen bei SuSE Distribution in der Textdatei README.SuSE.german im Verzeichnis /usr/doc/packages/bttv.

Sichern des EEPROM Inhaltes unter SuSE Linux:
Bevor der Inhalt des EEPROMS gesichert werden kann muß das bttv Modul geladen werden. Danach wechselt man in das Verzeichnis

/usr/doc/packages/bttv/apps      (alternativ auch im BUILD oder TOOLS Verzeichnis)

und gibt mit "root rechten"

make EEPROM

ein. Das EEPROM wird damit in die Dateien tvee.h geschrieben. Bei Erfolg sieht die Bildschirmausgabe folgendermaßen aus:

Trying to create a new tvee.h...
OK, it seems to work - create it now.

Bei Fehlermeldung lesen Sie bitte die README.SuSE.german.

3.2.2 Devices für bttv

Bei Linux wird auf Geräte (engl. device) über spezielle Eintäge die unter /dev stehen zugegriffen. In diesen Dateien sind Gerätenummern über die der Kernel die Geräte anspricht enthalten.
Unter SuSE Distributionen sind die erforderlichen Devices (dev/bttv) bereits erstellt. Bei anderen Distribution kann das anders sein und muß dann noch nachgeholt werden.
Das anlegen von devices geschiet mit dem Befehl mknod. Für weiter Information die man page von mknod und die Datei /usr/src/linux/Documentation/devices.txt lesen.

Angeblich soll das BTTV Modul auch ein Skrip Namens MAKEDEV enthalten, das die Devices automatisch erzeugt. Ich habe es aber nicht gefunden! Für die manuelle Erzeugung kann man folgendermaßen vorgehen:

cd /dev
mknod video0 c 81 0
mknod video1 c 81 1
mknod video2 c 81 2
mknod video3 c 81 3
ln -s video0 video

Video4Linux provides the following sets of device files. These live on the character device formerly known as "/dev/bttv". /dev/bttv should be a symlink to /dev/video0 for most people.

Device Name Minor Range Function
/dev/video 0-63 Video Capture Interface
/dev/radio 64-127 AM/FM Radio Devices
/dev/vtx 192-223 Teletext Interface Chips
/dev/vbi 224-239 Raw VBI Data (Intercast/teletext)

Video4Linux programs open and scan the devices to find what they are looking for. Capability queries define what each interface supports. The described API is only defined for video capture cards. The relevant subset applies to radio cards. Teletext interfaces talk the existing VTX API.

3.2.3 Ladereihenfolge der Module

Die Ladereihenfolge der Module ist:

  1. videodev
  2. i2c
  3. tuner
  4. msp3400 oder ein anders Modul für den Soundprozessor
  5. bttv

Das Entladen geschieht in umgekehrter Reihenfolge.

3.2.4 Laden der BTTV Module

Treiber in Modulform erhalten ihre Parameter durch das Komando insmod bzw. modprobe, mit dem auch gleichzeitig das Modul selbst geladen wird. Wenn für eine Modul mehrere Parameter angegeben werden soll, dann müssen diese zwingend durch Leerzeichen voneinander getrennt werden!
Das Script "update" (in /usr/doc/packages/bttv/apps bzw. .../bttv/tools) übernimmt das Entladen alter module, sowie das Laden neuer. Um es zu benutzen, muß man die Modul-Parameter an Ihre Karte anpassen!

Der einfachste Weg ist seit Kernel-Version 2.2.x der Einsatz des "Kernel Module Loader". Der Kernel Module Loader wacht im Hintergrund und sorgt dafür, daß benötigte Module automatisch geladen werden, sobald auf die entsprechende Funktionalität des Kernels zugegriffen wird. Unbenutzte Module werden automatisch nach einer bestimmten Zeit aus dem Speicher entfernt. Um den Kernel Module Loader zu verwenden muß man die Option "Kernel Module Loader" bei der Kernelkonfiguration aktivieren.
Ein Modul wird mit Hilfe eines alias Eintrags in  der /etc/conf.modules (bzw. /etc/modules.conf) automatisch bei Gebrauch nachgeladen. Detailierte Information dazu findet man in der man page von conf.modules (man conf.modules). Der alias Eintrag für die BTTV Treiber lautet:

alias char-major-81 bttv

The following directives are useful for (optionally) executing specific commands when loading and unloading a module. Note that even aliased module names can have these directives, which will be executed in the proper order together with any directives for the unalised module name.

pre-install module command
Execute command before installing the specified module. See the below directive as well.

install module command
Execute command instead of the default insmod when installing the specified module.

post-install module command
Execute command after installing the specified module. See the above directive as well.

pre-remove module command
Execute command before removing the specified module. See the above directive as well.

remove module command
Execute command instead of the default (built-in) rmmod when removing the specified module.

post-remove module command
Execute command after removing the specified module. See the below directive as well.

options <modulname> <param1>=<wert1> ...
Variable
Wert/Bedeutung
<modulname>
<param1>
<wert1>
Name der Moduldatei ohne Extension .o
Parameter 1
Wert, der Parameter 1 zugeordnet werden soll

Beispiel:   options bttv card=10 pll=1

3.3 Parameter der BTTV Module

videodev.o
Dies ist das Basis video4linux Modul, alle video Treiber (einschließlich bttv) registrieren sich hier selber.

3.3.1 I2C Interface für Linux (i2c.o)

Das generic i2c module ist für das Management der Module (außer dem videodev.o) verantwortlich. Außer das videodev Modul benutzen alle den i2c.
insmod Argumente: (Gilt für BTTV Version 0.6.4 und höher)
scan=1 Scant den Bus für i2c devices
verbose=0 Schließt den i2c.
i2c_debug=1 Für debugging. Es überträgt den ganzen (software) i2c Busverkehr in die syslog.

3.3.2 Steuerung für Tunerchip (tuner.o)

Das Tuner-Modul wird zum Empfang des Fernsehbildes benötigt. Nur wenn man eine Kamera oder externen Tuner benutzt, dann kann man das Modul weglassen.
insmod Argumente: (Gilt für BTTV Version 0.6.4 und höher)
debug=1 Überträgt einige debug Informationen in die syslog.
type=n Art des Tuners. Setzen Sie für n die entsprechende Zahl (z.B: type=1) ein. 
0: Temic PAL Tuner
1: Philips PAL_I Tuner
2: Philips NTSC Tuner
3: Philips SECAM Tuner
4: Kein Tuner
5: Philips PAL Tuner
6: Temic NTSC Tuner
7: Temic PAL Tuner

3.3.3 Soundprozessoren (msp3400.o, tea6300.o, tda8425.o, tda9855.o)

Die Module msp3400.o, tea6300.o, tda8425.o und tda9855.o sind für die Tonwiedergabe verantwortlich. Welches Modul von den vier man einsetzen muß, hängt von dem Chip auf der Karte ab. Damit die TV-Tonwiedergabe überhaupt funktioniert muß die Soundkarte vorher installiert sein. Testen Sie die Soundkarte z.B. durch Wiedergabe einer WAV-Datei. Denken Sie beim Testen der Tonwiedergabe auch an die Mixer Einstellungen.

msp3400.o
Das msp3400.o Modul ist der Treiber für den msp 34xx Soundprozessor Chip. Bei Stereo TV-Karte kann man davon ausgehen, daß sich ein msp 34xx Chip auf der Karte befindet. 
insmod args: (Gilt für BTTV Version 0.6.4 und höher)
debug=n Setzen Sie für n die entsprechende Zahl ein. 
1: Überträgt einige debug Informationen in die syslog,
2: Überträgt detailiertere Informationen in die syslog.
simple=1 Benutzt die "short programming" Methode (neuere msp34xx Versionen unterstützen das). Short programming ist eine einfachere Methode, die msp34xx-Familie zu programmieren (der Chip macht dann viel mehr alleine, insbesondere den autodetect des Sound-Standards). Funkioniert aber nur bei neueren Chip-Versionen.
once=1 Überprüft nicht alle paar Sekunden den Audio Modus des TV Senders. Es wird nur einmal nach einem Senderwechsel der Audio Modus überprüft. Dies sollte das Problem mit dem verschwinden der Tonwiedergabe beseitigen.
ACHTUNG: Bitte beachten Sie meine Erfahrung mit once=1. Siehe FAQ.
amsound=1 Audio carrier is AM/NICAM at 6.5 Mhz. This should improve things for french people, the carrier autoscan seems to work with FM only...

tea6300.o
The driver for the tea6300 fader chip. If you have a stereo card and the msp3400.o doesn't work, you might want to try this one. This chip is seen on most STB TV/FM cards (usually from Gateway OEM sold surplus on auction sites).
insmod args: (Gilt für BTTV Version 0.6.4 und höher)
debug=1 Überträgt einige debug Informationen in die syslog.

tda8425.o
The driver for the tda8425 fader chip. This driver used to be part of bttv.c, so if your sound used to work but does not anymore, try loading this module.
insmod args: (Gilt für BTTV Version 0.6.4 und höher)
debug=1 Überträgt einige debug Informationen in die syslog.

tda9855.o
The driver for the tda9855 audio chip. Afaik, only the Diamond DTV2000 has this chip.
insmod args: (Gilt für BTTV Version 0.6.4 und höher)
debug=1 Überträgt einige debug Informationen in die syslog.

3.3.4 Modul für den Framegrabber (bttv.o)

the bt848 (grabber chip) driver
insmod args: (Gilt für BTTV Version 0.6.4 und höher)
remap=adr remap Bt848 memory to adr<<20
Some S3 cards even take up 64MB of memory but only report 32MB to the BIOS. If this 64MB area overlaps the IO memory of the Bt848 you also have to remap this. E.g.:
insmod bttv vidmem=0xfb0 remap=0xfa0
vidmem=base frame buffer address>>20 Oft muss man die Speicheradresse der Grafikkarte (vidmem) angegeben werden. Die Speicheradresse - framebuffer - kann man der Datei ~/.X.err aus Ihrem Homeverzeichniss entnehmen. Diese Datei wird beim Start des X-Servers mit "startx" erstellt . Man kann Sie auch durch den Aufruf von "cat /proc/pci" sichtbar machen. Man sollte darauf achten, daß die Angabe der Speicheradresse stets mit drei Ziffern hinter "0x" erfolgen muss, z.B. "vidmem=0xa80". Die Nullen dahinter werden nicht angegeben!
triton1=0/1 for Triton1 compatibility
Triton1 is automatically recognized
but this might also help with other chipsets
pll=n Quarz Einstellungen. 
0: don't use PLL 
1: 28 MHz crystal installed 
2: 35 MHz crystal installed
radio=n 0: Keine Radio
1: Radio wird unterstützt
card=n TV-Karte Typ. Setzen Sie für n die entsprechende Zahl (z.B: card=10) ein. 
0: Auto-Detect
1: Miro
2: Hauppauge (alte bt848 Karten)
3: STB
4: Intel
5: Diamond
6: AVerMedia
7: MATRIX Vision MV-Delta
8: FlyVideo
9: TurboTV
10: Hauppauge (Neue bt878 Karten)
11: MIRO PCTV pro
12: Terratec/Vobis TV-Boostar
13: Newer Hauppauge WinCam (bt878)
14: MAXI TV Video PCI2
15: Terratec TerraTV+
16: Aimslab VHX
17: PXC200
18: AVermedia98
19: FlyVideo98 (neuere FlyVideo Karten)

remap, card, radio and pll accept up to four comma-separted arguments (for multiple boards). The CARD and PLL defines from the Makefile are used as defaults.

i2c_chardev.o
provides a character device for i2c bus access. Works for 2.1.x only, not compiled by default.

To load the tuner+msp3400 modules with kerneld/kmod, you should use "modprobe -k tuner; modprobe -k msp3400" in pre-install for bttv.

3.4 Beispiel konfigurationen

Bei diesen Beispielen sind die Treiber als Module realisiert.

Hauppauge WinTV PCI
Model: Model 61314 Rev. BM
Tuner Model: Phillips FI1216 MK2
Grabber Chip: BT878
Tuner Audio: Stereo (MSP3415)
Radio: Kein Radiotuner vorhanden
conf.modules: alias char-major-81 bttv
pre-install bttv modprobe tuner; modprobe msp3400
options i2c verbose=1 scan=1 i2c_debug=0
options tuner debug=0 type=1
options bttv card=10 pll=1
Tip: Verwenden Sie beim msp3400 Modul die Option "once=1" mit Vorsicht! Bei mir (SuSE 6.1) war nachher über YAST eine Komplette neuinstallation (nicht Ersetzen !) von KWinTV notwendig, da überhaupt kein Bild mehr kam.

Bei dem Beispiel muß eventuell noch der "vidmem" Parameter angegeben werden!

Hauppauge WinTV Radio PCI
Model: Keine Angaben
Tuner Model: Phillips FM1216
Grabber Chip: BT878
Tuner Audio: Stereo (MSP3415)
Radio: Radio
conf.modules: alias char-major-81 bttv
pre-install bttv; modprobe -k msp3400; modprobe -k tuner type=5
options bttv card=10 pl=1
options tuner type=5
Tip: Bei dem Beispiel muß eventuell noch der "vidmem" Parameter angegeben werden!

Hauppauge WinTV PCI
Model: Model 61324 Rev. C108
Tuner Model: Phillips FI1216 MK2
Grabber Chip: BT878
Tuner Audio: Stereo (MSP3415)
Radio: Kein Radio
conf.modules: alias char-major-81 bttv
options bttv card=10 radio=0
pre-install bttv 
modprobe -k tuner type=5 
modprobe -k msp3400 simple=0 once=1

Flyvideo II
Model: Flyvideo II
Tuner Model: Philips-Tuner
Grabber Chip: BT848a
Tuner Audio:
Radio: Kein Radio
conf.modules: alias char-major-81 bttv
options bttv radio=0 card=8 pll=1
options tuner type=1
pre-install bttv modprobe -k tuner
# SB 64 PCI vorweg starten
pre-install tuner modprobe es1371
post-remove bttv modprobe -r tuner
Tip: Bei schlechtem Empfang mal den Steckplatz wechseln! 
Wirkte bei Daniel Rudolph Wunder!

Anubis Typhoon TV Tuner
Model: TV Tuner
Tuner Model: Temic 3X7756 Pal
Grabber Chip: BT848a
Tuner Audio: Mono, kein extra Chip
Radio: Kein Radio
conf.modules: alias char-major-81 bttv
pre-install bttv /sbin/modprobe -k tuner
options ic2 verbose=1 scan=1 i2c_debug=0
options tuner debug=0 type=0
options bttv radio=0 pll=1 card=1

3.5 FAQ

Bekannte Hardwareprobleme sind in der Textdatei "problems" vom BTTV Treiber Dokumentiert.

  1. Nach der Installation von Treiber und Software funktioniert das TV-Bild, aber es kommt kein ton.
    Installieren und testen Sie die Soundkarte z.B. durch wiedergabe eine WAV Datei. Bei einigen Distributionen ist unter KDE die Soundwiedergabe deaktiviert! Entfernen Sie in der Datei startkde die "#" Komentarzeichen vor den einträgen "startifaudio" und  "kwmsound".
    Überprüfen Sie ob das Modul für den Soundprozessor (msp3400.o, tea6300.o, tda8425.o, tda9855.o) geladen/installiert ist.
    Überprüfen Sie die Mixereinstellungen.
  2. Nach der Installation funktioniert das TV-Bild und der Ton, aber die Sender lassen sich nicht umschalten.
    Meistens ist das tuner-modul nicht geladen. Einfach nur bttv reicht nicht, ein Teil des Codes (Treiber für i2c-chips, wegen Code-recycling) in andere Module ausgelagert.
    Das Problem gibt es nochmal beim msp3400 module und "kein Sound" ...
    Bei Hauppauge Karten wurde dieser Fehler oft beobachtet. Zur Fehlerbehebung verwenden Sie  bitte die Beispiel konfigurationen.
  3. Nach der Installation eines neuen Kernel funktioniert die TV wiedergabe nicht mehr.
    Haben Sie die Module auch neu übersetzt? Ist immer zu empfehlen!
    Überprüfen Sie ob die entsprechenden Module geladen werden bzw. die Einträge in der conf.modules noch stimmen. Eventuell besteht ein Zusammenhang mit 4. Fehlerbeschreibung.
  4. Nach dem Ausprobieren von verschiedenen Optionen (z.B. msp3400 "once=1) wird auch bei richtiger Konfiguration kein TV-Bild in kWinTV  mehr angezeigt, obwohl vorher alles funktionierte. Dieser Fehler wurde im Zusammenhang mit Hauppauge PCI (1. Beispiel konfiguration) und SuSE 6.1 festgestellt.
    Deinstallieren (nicht Ersetzen) sie kWinTV über YAST, booten sie neu und installieren sie wieder kWinTV.
  5. Beim kWinTV wird das Fernsehbild mit falschen Farben dargestellt.
    Sie benutzen warscheinlich eine Grafikkarte mit Riva-Chipsatz. Starten Sie den X-Server mit einer 15 Bit Farbtiefe (startx -- -bpp 15).


Inhalt