Jedną z bardziej interesujących multimedialnych możliwości Linuksa jest fakt, że umożliwia on przechwytywanie i oglądanie obrazów wideo z różnych źródeł. Interfejs programistyczny API video4linux ( http://roadrunner.swansea.uk.linux.org/v4l.shtml) obsługuje wiele różnych typów urządzeń wideo, w tym tunery telewizyjne zbudowane z wykorzystaniem układów bt848 i bt878 firmy Conexant. Ten dokument wyjaśnia, jak korzystać z takich kart pod Linuksem.
Prawa autorskie do tego dokumentu należą do Erica Sandeena (1999).
O ile nie jest stwierdzone inaczej, prawa autorskie dokumentów Linux HOWTO należą do ich autorów. Dokumenty Linux HOWTO mogą być kopiowane i rozpowszechniane w całości lub w części, w jakiejkolwiek formie fizycznej lub elektronicznej, tak długo, dopóki ta klauzula dotycząca praw autorskich pozostaje dołączona do wszystkich kopii. Autor zezwala na dystrybucję komercyjną i zachęca do takowej, jednakże chciałby być poinformowany o takich wypadkach.
Wszelkie tłumaczenia, prace pochodne lub prace zbiorowe z wykorzystaniem dokumentów Linux HOWTO muszą być rozpowszechniane pod warunkiem dołączenia do nich kopii niniejszej informacji o prawach autorskich. Oznacza to, że nie można tworzyć prac pochodnych na podstawie tego HOWTO i jednocześnie nakładać dodatkowych restrykcji na ich rozpowszechnianie. Odstępstwa od tych zasad są możliwe pod pewnymi warunkami; skontaktuj się z koordynatorem Linux HOWTO pod adresem podanym poniżej.
Mówiąc w skrócie, staramy się promować rozpowszechnianie niniejszej dokumentacji tak wieloma sposobami, jak to możliwe. Chcielibyśmy jednakże zachować prawa autorskie do dokumentów HOWTO i wolelibyśmy być powiadamiani o wszelkich planach ich redystrybucji.
Jeśli macie jakieś pytania, skontaktujcie się z Timem Bynumem, koordynatorem Linux HOWTO pocztą elektroniczną pod adresem linux-howto@metalab.unc.edu
Najnowszą oficjalną wersję tego dokumentu można znaleźć pod adresem Linux Documentation Project http://metalab.unc.edu/LDP/.
Dziękuję Ralphowi Metzlerowi i Marcusowi Metzlerowi za napisanie oryginalnego sterownika bttv. Dziękuję Alanowi Coxowi za stworzenie interfejsu programowania Video4Linux, Gerdowi Knorrowi za pracę nad obsługą kart radiowych, kolejne wersje bttv i xawtv. Dziękuję też wszystkim innym za ich wkład w pracę nad obsługą kart TV przez Linuksa. Dziękuję Williamowi Burrowowi za napisanie BTTV HOWTO (o którym dowiedziałem się po tym, jak napisałem ten dokument...). Poprawiłem ten podręcznik dzięki jego pracy.
To HOWTO opiera się w dużej mierze na dokumentacji bttv i xawtv.
Nie ponoszę żadnej odpowiedzialności za informacje zawarte w tym dokumencie. Wszystkich zaleceń, przykładów i/lub innych wskazówek używacie wyłącznie na własne ryzyko.
Wszelkie prawa autorskie należą do właścicieli, o ile nie jest stwierdzone inaczej. Użycie jakiegokolwiek terminu w tym dokumencie nie powinno być uważane za naruszenie ważności żadnego znaku handlowego ani usługowego.
Nazwy produktów lub marek użyte są wyłącznie w celach informacyjnych i nie stanowią podstawy do żadnych roszczeń. Zalecane jest utworzenie kopii zapasowej systemu przed właściwą instalacją bttv, jak również tworzenie kopii zapasowych w regularnych odstępach czasu.
Z pliku README
w dokumentacji bttv:
Bttv jest sterownikiem dla urządzeń przechwytujących obraz, opartych na rodzinie układów dekodujących wideo Bt848 firmy Conexant ( http://www.conexant.com). Do tej rodziny należą układy: Bt848, Bt848A, Bt849, Bt878 i Bt879. Jedyne różnice między kartami produkowanymi przez różnych wytwórców to typy tunerów i dodatkowe komponenty na kartach. Na przykład, niektóre karty Hauppauge mają dodatkowy dekoder wideotekstu i/lub dekoder dźwięku. Bttv nie obsługuje wszystkich dodatkowych komponentów. Występują też różnice w typach i ilości wejść (kompozytowe, S-Video).
Następujące karty powinny działać:
Jeśli wiecie, że działają jakieś inne karty, wyślijcie mi, proszę, e-maila, a dołączę je w następnej wersji HOWTO.
Aby uruchomić kartę TV pod Linuksem, potrzebujemy odpowiednich sterowników. Sterownik bttv znajduje się w jądrze począwszy od wersji 2.2.0.
Możemy też zaopatrzyć się w najnowszą wersję pakietu sterownika i używać go z jądrem 2.0.35 lub nowszym. Nie będzie on jednak raczej działał ze starszymi jądrami 2.0.x. Zaktualizowany pakiet bttv można znaleźć pod adresem http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html, a jeszcze nowszy można ściągnąć od Gerda Knorra spod adresu http://www.in-berlin.de/User/kraxel/xawtv.html. W tych pakietach dodano obsługę układów dźwiękowych, między innymi TEA6300, TDA8425, i DPL3518.
Jeśli nie mamy pojęcia o sterownikach bttv, lepiej będzie, jeśli wypróbujemy najpierw wersję bttv dołączoną do ostatniego jądra. Jeśli będziemy mieli z tym kłopoty, lub okaże się, że nasza karta nie jest jeszcze obsługiwana, spróbujmy szczęścia z nowszą serią 0.6, do ściągnięcia z powyższych adresów. Jeśli jesteśmy naprawdę odważni, wypróbujmy serię sterowników 0.7, autorstwa Gerda Knorra. Będą one dołączone do jąder 2.4 i również dostępne są pod adresem http://www.in-berlin.de/User/kraxel/xawtv.html.
Ten dokument opisuje głównie sterowniki jądra 2.2.14. Wspomniane są pewne właściwości nowej serii 0.6. Obecnie brakuje opisu serii 0.7, ponieważ w chwili pisania trwają intensywne prace nad jej opracowywaniem.
Dziękuję Williamowi Burrowowi za tę sekcję.
Jeśli boimy się zdjąć obudowę komputera, przeczytajmy najpierw całe HOWTO i zanotujmy gdzieś informacje o swojej karcie, czyli typ tunera, numery układów scalonych, częstotliwości kryształu (kryształów) itp. Potem znajdźmy kogoś, kto się na tym zna i zainstaluje nam kartę.
W przeciwnym wypadku, zdejmijmy obudowę i zainstalujmy kartę w wolnym gnieździe. Wybierzmy takie gniazdo, które obsługuje zarządzanie magistralą PCI i transfer PCI, jeśli nasza płyta główna umożliwia taki wybór (zobaczmy w instrukcji obsługi płyty). Będzie nam to potrzebne dla trybu odbierania obrazu.
Aby uzyskać dźwięk, możemy połączyć kartę TV i kartę muzyczną na dwa sposoby. Jeden z nich to sposób wewnętrzny. Podłączmy kabel audio CD-ROM-u do wejścia dźwiękowego karty wideo, a wyjście karty wideo podłączmy do wejścia audio na karcie muzycznej, w CD-ROM-ie lub tunerze. Możemy też podłączyć zewnętrzną wtyczkę typu "jack" 1/8 cala (3 mm) z karty wideo do wejścia liniowego audio na karcie muzycznej. Inny sposób to podłączenie wzmacniacza z głośnikami bezpośrednio do wyjścia audio karty TV, jeśli nie mamy karty dźwiękowej lub nie chcemy z niej korzystać (niektóre z nowszych kart z układem bt878 nie mają żadnego wyjścia dźwiękowego, ponieważ transmitują dźwięk w postaci cyfrowej przez szynę PCI. W momencie pisania tego dokumentu ta funkcja nie jest jeszcze obsługiwana).
Źródło wideo przydaje się też, jeśli chcemy sprawdzić, czy karta w ogóle działa. Wiele kart ma osobne wejścia dla sygnału kompozytowego, S-Video oraz, o ile mają tuner radiowy, dla RF (radio frequency).
Aby jądro obsługiwało kartę TV, trzeba je odpowiednio skonfigurować. W
większości nowych dystrybucji Linuksa odpowiednie moduły są już skompilowane.
Jeśli więc w katalogu /lib/modules/2.x.x/misc
są moduły
videodev.o
, bttv.o
i tuner.o
, to możemy iść dalej.
Jeśli nie znaleźliśmy odpowiednich modułów, będziemy musieli zrekompilować jądro z włączonymi opcjami:
CONFIG_VIDEO_DEV
oraz
CONFIG_VIDEO_BT848
.
Powinniśmy skompilować je jako moduły. Przeczytajmy Linux Kernel HOWTO ( http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html), aby dowiedzieć się więcej szczegółów na temat rekompilacji jądra.
Jeśli chcemy używać nowszego sterownika z serii 0.6.x, musimy ściągnąć spakowane archiwum z jednej ze wspomnianych stron. Następnie rozpakowujemy je poleceniem
tar -xvzf bttv-0.6.x.tar.gz
i przechodzimy do nowo utworzonego katalogu. Wpisujemy su
aby stać się
rootem. Następnie piszemy
make
w głównym katalogu ze źródłami, aby utworzyć sterownik (możemy spokojnie
zignorować informację w pliku INSTALL
, która dotyczy modyfikacji
plików makefile i tym podobnych, ponieważ odpowiednie opcje będziemy
przekazywać sterownikowi w postaci parametrów modułu). Następnie
piszemy
make install
,
aby zainstalować sterownik. Na koniec wykonujemy
/sbin/depmod -a
,
aby uaktualnić informacje o zależnościach międzymodułowych.
http://roadrunner.swansea.uk.linux.org/v4lapi.shtml).
W podkatalogu driver
katalogu ze źródłami bttv znajduje się
skrypt MAKEDEV
, który utworzy nam cztery urządzenia wideo. Możemy
łatwo zrobić to sami, jeśli mamy tylko jedną kartę TV.
Jako root, wpisujemy:
mknod /dev/video0 c 81 0
chmod 666 /dev/video0
ln -s /dev/video0 /dev/video
mknod /dev/radio0 c 81 64
chmod 666 /dev/radio0
ln -s /dev/radio0 /dev/radio
Jeśli mamy jakieś aplikacje wymagające urządzeń videotext i VBI, również możemy je utworzyć (nie ma ich za wiele). Wpiszmy:
mknod /dev/vtx0 c 81 192
chmod 666 /dev/vtx0
ln -s /dev/vtx0 /dev/vtx
mknod /dev/vbi0 c 81 224
chmod 666 /dev/vbi0
ln -s /dev/vbi0 /dev/vbi
Sterownik bttv składa się z różnych modułów. Każdy może przyjmować wiele opcji, co jest opisane w dodatku do tego dokumentu. Mając tyle modułów i opcji, być może będziemy chcieli ładować je ręcznie, dopóki wszystko nie będzie działało, jak należy. Ponieważ może to spowodować (choć jest to mało prawdopodobne) zwis systemu, nie zaszkodzi wpisać:
sync; sleep 1; sync
aby zapisać bufory systemu plików, zanim pójdziemy dalej. Następnie, jako
root, poleceniem insmod
ładujemy moduły. Pierwsze dwa są łatwe,
ponieważ z reguły nie wymagają opcji:
insmod videodev
insmod i2c
Teraz możemy załadować sam moduł bttv:
modprobe bttv
Domyślnie moduł bttv
próbuje sam wykryć typ karty. Sprawdźmy
/var/log/messages
aby zobaczyć, czy mu się udało. Jeśli nie wykrył
karty właściwie, na końcu polecenia dodajemy opcję card=n
,
co wymusza typ karty. n
wybieramy z poniższej listy. (Typy
od 0 do 19 są obsługiwane przez sterownik dostarczany z jądrem, bttv-0.6.4h
obsługuje typy od 20 do 27). Możemy też dodać opcję radio=1
, jeśli
karta ma tuner FM.
Uwaga! W jądrach serii 2.4.x ze sterownikiem bttv 0.7.x ta lista jest
zmieniona i poszerzona. Przeczytaj
/usr/src/linux/Documentation/video4linux/bttv/CARDLIST
, aby
dowiedzieć się więcej (przyp. tłum.).
card=n typ karty 0: Auto-Detect 1: Miro 2: Hauppauge (stare karty na bt848) 3: STB 4: Intel 5: Diamond 6: AVerMedia 7: MATRIX Vision MV-Delta 8: FlyVideo 9: TurboTV 10: Hauppauge (nowe karty na bt878) 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 (nowsze karty FlyVideo) 20: Zoltrix TV-Max 21: iProTV 22: ADS Technologies Channel Surfer TV 23: Pixelview PlayTV (bt878) 24: Leadtek WinView 601 25: AVEC Intercapture 26: LifeView FlyKit w/o Tuner 27: Intel Create and Share PCI
Następnie ładujemy moduł tunera:
modprobe tuner type=n
Żeby określić typ tunera, prawdopodobnie będziemy musieli zdjąć obudowę
komputera i obejrzeć kartę. Niektóre karty (Miro i Hauppauge) umożliwiają
automatyczne wykrycie tunera, ale może będziemy musieli podać go sami. Tuner
powinien być oznaczony nazwą firmy. Możemy spojrzeć na kryształy (małe
skrzyneczki z aluminium) na karcie, aby zobaczyć, czy jest to tuner PAL czy
NTSC. Dla systemu PAL kryształ jest oznaczony 28.xxxMHz
(gdzie xxx to
trzy cyfry). Oznaczeniem NTSC jest 35.xxxMHz
. Po określeniu typu
tunera wybieramy wartość n
z następującej listy (typy 8 i 9
znajdują się tylko w bttv-0.6.4h):
type=n typ układu tunera. n jest następujące: 0: tuner Temic PAL 1: tuner Philips PAL_I 2: tuner Philips NTSC 3: tuner Philips SECAM 4: brak tunera 5: tunerPhilips PAL 6: tuner Temic NTSC 7: tuner Temic PAL 8: tuner Alps TSBH1 NTSC 9: tuner Alps TSBE1 PAL
Na końcu ładujemy potrzebne moduły obsługi dźwięku. I znowuż, będziemy musieli uważnie przyjrzeć sie karcie i zobaczyć, jaki mamy układ dźwiękowy. Uwaga: sterowniki dla układów TEA6300, TDA8425, TDA9855 i DPL3518 znajdują sie tylko w wersji bttv 0.6.4h. Ne ma ich w bieżącej (2.2.14) wersji jądra.
modprobe msp3400
albo tea3600
albo tda8425
albo
tda9855
albo dpl3518
(szczegóły i opcje zamieszczone są w
dodatku)
Uruchamiamy teraz nasz ulubiony program video4linux i sprawdzamy, czy działa. Jeśli nie możemy zmienić kanału, upewnijmy się, że załadowaliśmy właściwy moduł tunera. Jeśli nie słychać dźwięku, dwa razy sprawdźmy moduł dźwięku i, jeśli przepuszczamy sygnał audio przez kartę muzyczną, upewnijmy się, że dźwięk nie jest wyciszony.
Wiedząc, jakich modułów i jakich opcji potrzebujemy, możemy zautomatyzować
proces ich ładowania. W tym celu dokonujemy odpowiednich wpisów w pliku
/etc/conf.modules
(albo /etc/modules.conf
- przyp.tłum.).
Jeśli wówczas uruchomimy jakąś aplikację potrzebującą danego sterownika,
zostanie on załadowany automatycznie.
Ja wpisałem coś takiego:
# TV alias char-major-81 bttv pre-install bttv modprobe -k tuner; modprobe -k msp3400 options bttv radio=1 card=3 options tuner type=2
Pamiętajmy o zmianie tych wpisów, aby moduły i opcje odpowiadały konkretnemu
modelowi karty. (Wykonajmy polecenie /sbin/depmod -a
aby upewnić się,
że informacje o zależnościach międzymodułowych są aktualne.)
Skonfigurowaliśmy już jądro i urządzenia, załadowaliśmy odpowiednie moduły. Teraz potrzebna nam aplikacja, żeby oglądać lub przechwytywać obrazy z karty TV. Jest ich sporo:
Pod adresem http://wolf.ifj.edu.pl/~jochym/FlyVideo98/ jest dostępny sterownik dla pilota karty FlyVideo98.
Koniecznie przeczytajmy dokumentację każdej aplikacji, której chcemy używać. Wiele z nich wymaga modyfikacji plików konfiguracyjnych, żeby w ogóle działać! Ponadto, istnieje wiele typów kart TV, dlatego musimy poświęcić czas na przeczytanie dotyczącej ich dokumentacji, gdyż z reguły ustawienia domyślne aplikacji nie będą działały z naszą kartą.
Punkty poprzedzone znakiem "*" są dostępne tylko w serii 0.6.4h.
videodev.o podstawowy moduł video4linux. Zaliczają się do niego wszystkie sterowniki wideo (w tym bttv). i2c.o standardowy moduł i2c. Zarządza obsługą magistrali i2c, korzystają z niego wszystkie inne moduły (oprócz videodev.o) opcje insmod: scan=1 skanuje szynę w poszukiwaniu urządzeń i2c verbose=0 każe się zamknąć i2c i2c_debug=1 dla debugowania. Wysyła cały ruch (programowy, nie sprzętowy) )na szynie i2c do syslog bttv.o sterownik układu przechwytującego obraz bt848 opcje insmod: remap=adr remapuje pamięć Bt848 do adresu <<20 vidmem=base adres bufora ramek (karty graficznej) >>20 triton1=0/1 dla zgodności z układem Triton1. Ten układ jest co prawda rozpoznawany automatycznie, ale może to pomóc z innymi układami pll=0/1/2 ustawienia pll 0: nie używaj PLL 1: zainstalowany kryształ 28 MHz 2: zainstalowany kryształ 35 MHz radio=0/1 karta obsługuje radio card=n typ karty 0: Auto wykrywanie 1: Miro 2: Hauppauge (stare karty na bt848) 3: STB 4: Intel 5: Diamond 6: AVerMedia 7: MATRIX Vision MV-Delta 8: FlyVideo 9: TurboTV 10: Hauppauge (nowe karty na bt878) 11: MIRO PCTV pro 12: Terratec/Vobis TV-Boostar 13: Nowsze Hauppauge WinCam (bt878) 14: MAXI TV Video PCI2 15: Terratec TerraTV+ 16: Aimslab VHX 17: PXC200 18: AVermedia98 19: FlyVideo98 (nowsze karty FlyVideo) *20: Zoltrix TV-Max *21: iProTV *22: ADS Technologies Channel Surfer TV *23: Pixelview PlayTV (bt878) *24: Leadtek WinView 601 *25: AVEC Intercapture *26: LifeView FlyKit w/o Tuner *27: Intel Create and Share PCI remap, card, radio i pll akceptują do czterech oddzielonych przecinkiem opcji (jeśli mamy więcej niż jedną kartę TV). Definicje CARD i PLL z pliku Makefile są używane jako wartości domyślne. msp3400.o sterownik dla układów dźwiękowych msp34xx. Jeśli mamy kartę stereo, prawdopodobnie należy go załadować. opcje insmod: debug=1/2 wysyła informacje użyteczne dla debugowania do syslog. 2 jest bardziej gadatliwe. *tea6300.o Sterownik układu tea6300 fader. Jeśli z kartą stereo nie działa moduł msp3400.o, możemy wypróbować ten. Układ ów można znaleźć na większości kart STB TV/FM (z reguły kupionych na aukcjach internetowych z nadwyżek Gateway OEM) opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. *tda8425.o Sterownik układu tda8425. Kiedyś był on częścią bttv.c, więc jeśli dźwięk nam działał, ale przestał, załadujmy ten moduł. opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. *tda9855.o Sterownik dekodera dźwięku / procesora audio tda9855. opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. *dpl3518.o Sterownik układu dpl3518a Dolby Pro Logic Processor opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. tuner.o Sterownik tunera. Potrzebujemy go koniecznie, chyba że chcemy używać tylko kamery lub zewnętrznego tunera... opcje insmod: debug=1 wysyła informacje użyteczne dla debugowania do syslog. type=n typ układu tunera. n jak poniżej: 0: tuner Temic PAL 1: tuner Philips PAL_I 2: tuner Philips NTSC 3: tuner Philips SECAM 4: brak tunera 5: tuner Philips PAL 6: tuner Temic NTSC 7: tuner Temic PAL *8: tuner Alps TSBH1 NTSC *9: tuner Alps TSBE1 PAL i2c_chardev.o urządzenie znakowe dla dostępu do szyny i2c. Działa tylko z jądrami 2.1.x, nie kompilowane domyślnie.
Tłumaczenie to jest chronione prawami autorskimi © Leszka Pietryki. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.
Jeśli znajdziecie tu jakieś poważne błędy, literówki itp., wyślijcie mi, proszę, e-maila, żebym mógł je poprawić.
Nie ponoszę żadnej odpowiedzialności za ewentualne efekty stosowania się do rad zawartych w tym dokumencie.
W jądrach serii 2.4 konfiguracja przebiega nieco inaczej - moduły szyny i2c
zostały oddzielone, rozszerzono zakres obsługiwanego sprzętu.
Koniecznie przeczytajcie dokumentację w
/usr/src/linux/Documentation/video4linux/
.