Motto

Uživatel, který má ze správy počítačů strach, je lepší než uživatel, který jej nemá.

Navigace:   Úvod Rady - tipy - triky Vychytávky v Linuxu TV karta Leadtek Winfast DTV2000 H
TV karta Leadtek Winfast DTV2000 H PDF Tisk Email
Neděle, 06 Duben 2008 17:24

Nedávno jsem se dostal k TV kartě Winfast DTV2000 H od Leadteku a zažil s ní pořádný horor. Úvodem bych proto chtěl říci, že této kartě se raději vyhněte nebo se vám promění v těžkou denní můru. Tato karta existuje pod stejným názvem ve více verzích a to je obrovský kámen úrazu. Pachtil jsem se s ní asi dva týdny a teprve až díky Zbyňkovi Hrabovskému (rozjel to na Gentoo s jádrem 2.6.23.x) jsem svůj boj dotáhl do téměř vítězného konce. Moje řešení bylo provedeno na distribuci Debian Etch s jádrem 2.6.24.x.

Správné zapojení

Kartu je potřeba správně zapojit. Nestačí jen ji zastrčit do PCI slotu, musíte navíc z ní vytáhnout zvuk. Tato karta má velmi špatně řešený zvukový výstup, proto musíte použít buď interní kabel nebo externí. Interní kabel je stejný jako pro staré zapojení cd mechaniky (potažmo obsaženého přehrávače), má plochý konektor na obou koncích se čtyřmi otvory. Karta má plochý samčí konektor a stejný hledejte na motherboardu. Nebo můžete použít přiložený externí kabel, který zapojíte do karty a zároveň kablík s jackem zastrčíte do externího vstupu line-in (modrý) na zvukové kartě. Obě možnosti jsou plně funkční, dokonce se navzájem nevylučují a jsou popsané v manuálu karet Winfast.

Výběr jádra

Teď přichází na řadu správně vybrat jádro, které podporuje tuto kartu. Pokud pracujete na stabilním jádře Debianu 2.6.18.x, zapomeňte na tuto kartu. V tomto jádře sice je podpora TV tunerů založených na chipu Conexant cx88xx, ale nějak špatně funguje driver pro zvuk (ale třeba můžete být výjimka). Prvně si musíte zjistit, zda vaše jádro vůbec detekuje chipy cx88. Ve výpisu dmesg musíte mít něco takového:

  • cx88[0]: card=0 -> UNKNOWN/GENERIC
  • cx88[0]: card=1 -> Hauppauge WinTV 34xxx models
  • cx88[0]: card=2 -> GDI Black Gold
  • cx88[0]: card=3 -> PixelView
  • cx88[0]: card=4 -> ATI TV Wonder Pro

Tento krok nemusíte dělat, ale je užitečné o něm vědět. Protože autodetekce u novější verze této karty nefunguje, můžete systému vnutit vybraný typ karty. V Debianu do adresáře /etc/modprobe.d vložte libovolně pojmenovaný konfigurák a do něj vložte tento řádek (novější typ karty se starším driverem poskytuje obraz analogické televize):

  • options cx88xx card=51

V testing debianském jádru 2.6.22.x se driver pro tuner chová velice nestabilně, při každém pokusu o opakovaný kontakt se tuner zasekne. Nejlepší řešení je použít jádro 2.6.24.x z unstable repozitářů. Toto jádro v modulech má sice podporu karty Winfast DTV2000 H, ale jen starší verze, která funguje bohužel jen ve velmi omezené míře (čili špatně). Proto musíte dále zjistit, kterou kartu přesně máte.

Ještě udělám malou odbočku, pokud v budoucnu narazíte na kartu, která nebude mít v modulech jádra potřebné drivery, zkuste se podívat na stránky projektu linuxtv.org. Tam můžete najít v repozitářích zdrojáky driverů pro všechny možné TV tunery, zdrojáky pak stáhnete, zkompilujete a nainstalujete. Pro úspěšnou kompilaci ale potřebujete minimálně jádro 2.6.19.x.

Přesná identifikace karty

Když spustíte Linux na jádře s cx88 drivery, systém identifikuje tyto chipy a zkouší kartu autodetekovat. U starší verze se to podaří, u novejší nikoliv. Jak ovšem zjistit, kterou vlastně máte? Stačí udělat v konzole výpis jádra:

  • # dmesg | grep 107d

Pokud na vyskočí toto, pak máte novou (problematickou) kartu:

  • cx88[0]: subsystem: 107d:6f2b

V případě starší verze se vám objeví toto:

  • cx88[0]: subsystem: 107d:665e

Starší verze karty by měla fungovat bez větších problému, bude autodetekována a všechny potřebné moduly se nahrají. Je to ze strany Leadteku trochu podraz na zákazníky, když prodávají dvě karty pod stejným označením, ale s mírnými rozdíly v obvodu.

Trocha kompilace

Asi vás příliš nepotěším, ale bez kompilace jádra se to víceméně neobejde. Stáhněte si stabilní verzi jádra (nejlépe odzkoušené 2.6.23.x nebo 2.6.24.x) z www.kernel.org a rozbalte jej do adresáře /usr/src. Pro správnou úpravu jádra musíte mít zdrojáky jádra buď v adresáři /usr/src/linux nebo si vytvořte symlink, který bude nasměrován na patřičný adresář.

  • # ln -s /usr/src/linux-2.6.24.4 /usr/src/linux

Do adresáře /usr/src/linux si v případě jádra 2.6.24.x uložte tento patch (nebo v případě 2.6.23.x použijte patch z adresy autora DTV2000H_Patch.diff). Patch vytvořil Zbyněk Hrabovský, který také narazil na tuto skvělou kartu a výsledek svého snažení zveřejnil na adrese www.volny.cz/zbynecek. Jádro patchnete příkazem:

  • # patch -p0 <DTV2000H_Patch.diff

Celé jádro zkompilujte a nainstalujte. Pokud toto děláte poprvé, můžete si přečíst návod na kompilaci zde. Protože ne každý se cítí na kompilaci jádra, trochu vám to ulehčím. Jestli máte nainstalované potřebné jádro 2.6.24.x z repozitářů Debianu (z větve unstable), stáhněte si tento archív už zkompilovaných driverů pro verzi 2.6.24.x. Drivery jsou mezi jádry nezaměnitelné, každá verze jádra má své (pokud používáte jádro 2.6.23.x, musíte stáhnout tento archív). Archív rozbalte a soubory zkopírujte do adresáře

  • /lib/modules/2.6.24-1-686-dle-vašeho-jádra/kernel/drivers/media/video/cx88

Po restartu bude vaše karta autodetekována a skoro plně funkční. Bohužel v současné době existují ještě tři neduhy:

  • nefunguje rádio (neexistuje /dev/radio)
  • občas po startu nefunguje ladění analogové televize, je nutný restart
  • v případě jádra 2.6.24.x navíc nefunguje přepínání správného anténního vstupu při zapnutí digitální televize (pokud berete signál pro analogovou a digitální televizi z jiné zdířky, tak je třeba vždy před vypnutím analogové televize přehodit příjem na zdířku "Antenna", jinak digitální televize až do restartu nepůjde)

Na patchi se ještě stále pracuje, tak snad budou všechny neduhy v budoucnu odstraněny.

Koukání na televizi

Jestli si chcete ověřit, zda vám karta funguje, můžete použít hned několik aplikací. Nejlepší bude asi Mplayer:

  • $ mplayer tv://53 -tv driver=v4l2:norm=PAL-DK

Hodnotu 53 si můžete změnit podle lokality. Pohyb po kanálech vpřed a dozadu se provádí klávesami H a K. Dále ještě existují aplikace Xawtv, Tvtime a další. Pro sledování televize ve Gnome je Tvtime skvělá volba, protože takřka všechna nastavení se provádějí přímo v GUI.

  • # apt-get install tvtime

Tvtime obsahuje i scanner frekvencí tvtime-scanner, který projde celý rozsah a vygeneruje seznam do souboru stationlist.xml. Frekvence bohužel bývají mírně posunuty, musíte je ručně doladit. Přesné hodnoty získáte pomocí Mplayeru. Tvtime má spoustu nastavení, můžete využívat celý seznam stanic nebo necháte funkční pouze váš custom seznam. Navíc jej můžete ovládat z konzole, což využijete při používání dálkového ovládače.

Dálkové ovládání

Označení dálkového ovládání u této karty je Y04G0044. Dálkové ovládání by mělo při správné detekci karty plně fungovat. Poznáte to podle toho, že ve spuštěné konzoli se po zmáčknutí číselného tlačítka na ovládači objevují čísla nebo české diakritické písmena. Pokud tomu tak není, pravděpodobně máte kartu v PCI slotu se sdíleným IRQ a váš řadič to neumí překousnout. Už jsem narazil i na informace, že tato karta kvůli správné funkci dálkového ovládání nesmí sdílet IRQ, ale neplatí to obecně, protože já sám mám kartu ve slotu, který sdílí IRQ se síťovkou. Někdy to zkrátka funguje a někdy ne. Pokud vám zrovna ne, tak si kartu přehoďte do jiného PCI slotu. Zjistit sdílení IRQ můžete příkazem:

  • # cat /proc/interrupts

Nyní musíte nainstalovat balíček lirc pro správný odchyt zmáčknutých tlačítek:

  • # apt-get install lirc

Démona lirc musíte zkonfigurovat. Prvně si zjistěte, na kterém zařízení číhá IR senzor:

  • # cat /proc/bus/input/devices

Hledejte tyto hodnoty:

  • I: Bus=0001 Vendor=107d Product=6f2b Version=0001
  • N: Name="cx88 IR (WinFast DTV2000 H ver."
  • P: Phys=pci-0000:01:01.2/ir0
  • S: Sysfs=/class/input/input6
  • U: Uniq=
  • H: Handlers=kbd event6
  • B: EV=100003
  • B: KEY=10afc336 2150a48 0 0 0 404 80010000 190 4801 1e0000 4400 100000 10000ffc

Hodnota H: je přesně to, co potřebujete vědět. Teď zapiště do konfiguráku /etc/lirc/hardware.conf démona lirc tyto hodnoty:

  • DRIVER="dev/input"
  • DEVICE="/dev/input/event6"

Konfigurák lircd.conf obsahuje číselné kódy pro jednotlivé tlačítka. Můžete se tento konfigurák vytvořit sami pomocí aplikace irrecord nebo použijte tento již přednastavený obecný konfigurák (nebo z webu projektu linux-input-layer-lircd.conf). Uložte jej do adresáře /etc/lirc nebo můžete i jinam, ale pak cestu k lircd.conf musíte nastavit direktivou LIRCD_CONF v hardware.conf. Po restartu démona lirc (nebo restartu pc) si můžete ověřit, zda vám démon lirc správně funguje. Stačí pustit v konzoli aplikaci irw, která vypisuje kódy zmáčknutých tlačítek:

  • $ irw
  • $ 0000000000010002 00 1 linux-input-layer
  • $ 0000000000010003 00 2 linux-input-layer
  • $ 0000000000010004 00 3 linux-input-layer

Jako poslední krok musíte spojit zmáčknuté tlačítka s konkrétní aplikací. Už jsem výše zmínil aplikaci Tvtime, která má utilitu na ovládání z příkazové řádky. Spouštění této utility se zařídí pomocí démona irexec. Toho můžete pustit buď přes init skripty, což bude fungovat všem, nebo přes session pro jednotlivé klienty. Pro irexec platí pravidlo, že pokud jej pustíte na pozadí přes init skripty, musíte ovládat tv aplikaci s nastaveným video výstupem do X serveru. Když irexec pustíte přes session pod X serverem, výstup půjde do něj automaticky, ale spouštění pak musíte nastavit u každého session zvlášť. Spuštění se provádí příkazem:

  • $ irexec -d

Aby věděl démon irexec, co má vlastně spouštět pří zmáčknutí tlačítka, to mu nastavíte v souboru lircrc. Tento soubor můžete opět vytvořit na dvou místech, buď v adresáři /etc/lirc jako globální konfigurák pro všechny uživatele nebo ve svém /home/user adresáři. Záleži na tom, jak pouštíte irexec démona a zda chcete mít globální nastavení platné pro všechny uživatele. Pro Tvtime můžete použít tento konfigurák (nebo z webu projektu example.lircrc). který uložíte pod názvem /home/user/.lircrc (nebo při globálním použití /etc/lirc/lircrc).

Pokud narazíte na problém, že dálkové ovládání občas mění číslo vstupu, můžete tento problém vyřešit nastavením pravidla udev démona. Do adresáře /etc/udev/rules.d přidejte libovolný konfigurační soubor, do kterého vepište toto pravidlo:

  • BUS=="pci", KERNEL=="event*", SYSFS{subsystem_device}=="0x6f2b", SYSFS{subsystem_vendor}=="0x107d", SYMLINK="input/rc_winfast"

Tímto přinutíte udev démona vytvořit symlink k zařízení IR senzoru. A v konfiguráku lirc démona /etc/lirc/hardware.conf pak změníte definici IR zařízení:

  • DRIVER="dev/input"
  • DEVICE="/dev/input/rc_winfast"

To je vše, po restartu by mělo všechno fungovat.

Odbočka závěrem

Tuto kartu jsem zkoušel rozchodit i ve Windows 2000. Drivery se sice nainstalovaly, ale televizi jsem prostě nerozchodil. Vyzkoušel jsem snad deset aplikací a úplně bez výsledku. Prostě, když to nejde, tak prostě nejde. Ale dokázal jsem zprovoznit rádio, jak paradoxní.

 
Mendelovo gymnázium | Designed by webmaster | Powered by Joomla | Creative Commons Attribution