Když
jsem si loni kupoval Pinnacle
PCTV Hybrid Stick 330e, naivně jsem doufal, že mi v Linuxu bude
bezproblémově fungovat. Vycházel jsem z internetových zdrojů (především
ABCLinuxu), kde byl popsán způsob rozchození modelu 320e. Ten však ve
skutečnosti používá jiný chip, tak jsem byl odkázán na nekonečné
čtení diskuzí a čekání na zázrak. A ten se stal…
První vlaštovkou byl asi rok zpět driver em28×x, spolu s xc3028. V té době byly tyto dva tunery určeny k provozu hybridních tunerů na bázi kernelového modulu. Pod mým tunerem však korektně fungovala jen analogová část a infraport. Tehdy mi to stačilo, na analog jsem byl zvyklý a plně si vystačil se čtveřicí kanálů ČT 1, ČT 2, Nova a Prima. Později však má touhla přešla i k dalším dvěma stanicím České televize (ČT 24 a ČT 4 Sport) a já pro jejich sledování musel restartovat do Windows.
Před nedávnem se ale situace otočila. Markus Rechberger výrazně pokročil a představil userspace driver pro hybridní tunery, které pro DVB-T používají demodulator drx3973d. Tehdý mé pokusy zprovoznit tuner dopadly téměř dobře. Vyskytly se problémy s instalací démonka, který přepínal mezi analogovým a digitálním tunerem. Démonka se mi povedlo modifikovat tak, aby pod Arch Linuxem fungoval správně.
Dnes je to ale zase o něco snažší. Samotný driver už nejsou dvě samostatné části, ale jedna, není potřeba démonek a dokonce ani žádná speciální pravidla do udev.
Jelikož jsem majitelem distribuce ArchLinux, popíšu postup právě pro něj. Řídil jsem se Installation Guide na mcentral.de. Jako kernel mám aktuálně verzi 2.6.25.
Veškerá instalace bude probíhat pod uživatelem root. Je nutné se tedy přihlásit…
su -
Jako první je potřeba připravit zdrojový kód aktuálního kernelu. Archlinux bohužel neobsahuje balíček, obsahující pouze zdrojové kódy, musíme si je tedy sami vygenerovat. K tomu nám poslouží nástroj ABS.
pacman -Sy abs
Po jeho instalci synchornizujeme celou databázi (to může trvat i několik minut).
abs
Přejdeme do adresáře s PKGBUILDem baličku kernel26 a spustíme generování.
cd /var/abs/core/kernel26
makepkg --asroot
Započne stahování kernelu a patchů, následně rozbalení a opatchování. Jakmile skončí patchování a začne kompilace, můžeme makepkg zrušit stiskem kláves CTRL+C:
patching file security/security.c.orig
patching file security/selinux/hooks.c
^^ Zde se dokončovalo patchování a zahájila se kompilace. Můžeme proces přerušit
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
Nyní máme v adresáři src/ opatchovaný zdrojový kód linuxového jádra. To si přesuneme do /usr/src a vytvoříme potřebný symbolický odkaz
mv src/linux-2.6.25 /usr/src
ln -s /usr/src/linux-2.6.25 /lib/modules/2.6.25-ARCH/source
Správnost si lze ověřit sekvencí příkazů, které zjistí existenci souborů. Ty jsou nutné pro kompilaci vlastního modulu.
ls -hal /lib/modules/$(uname -r)/source
ls -hal /lib/modules/$(uname -r)/source/drivers/media/dvb/dvb-core/dmxdev.h
ls -hal /lib/modules/$(uname -r)/source/drivers/media/dvb/dvb-core/dvb_frontend.h
ls -hal /lib/modules/$(uname -r)/source/drivers/media/dvb/dvb-core/dvb_demux.h
ls -hal /lib/modules/$(uname -r)/source/drivers/media/dvb/dvb-core/dvb_net.h
ls -hal /usr/src/linux/drivers/media/dvb/dvb-core/dmxdev.h
ls -hal /usr/src/linux/drivers/media/dvb/dvb-core/dvb_frontend.h
ls -hal /usr/src/linux/drivers/media/dvb/dvb-core/dvb_demux.h
ls -hal /usr/src/linux/drivers/media/dvb/dvb-core/dvb_net.h
Zde je záměrně nechávám $(uname -r). Je nutné driver kompilovat v takovém kernelu, jako jsme si před chvílí připravili zdrojové kódy.
Pokud je vše v pořádku, můžeme překročit k samotné kompilaci a instalaci driveru. Jako správce verzí je v projektech Video4Linux používán Mercurial. Ten má Archlinuxu stejnojmený balíček. Přejdeme do domovského adresáře a stáhneme si mercurial pomocí pacmanu.
cd ~
pacman -Sy mercurial
Následuje stažení zdrojového kódu, jeho kompilace a instalace.
hg clone http://mcentral.de/hg/~mrec/em28xx-new
cd em28xx-new
./build.sh build
./build.sh install
Proto, aby mohl běžný uživatel s tunerem pracovat, musí být ve skupině VIDEO
adduser USERNAME video
A tím je vše hotovo. Nakonec, před připojením, doporučuji počítač restartovat.
shutdown -r
Podle známých problémů může tuner zlobit, pokud je připojen během bootování, případně při restartu. Osobně jej raději připojuji až když systém naběhne.
V dmesgu se po připojení zobrazí něco takového:
usb 1-5: new high speed USB device using ehci_hcd and address 6
usb 1-5: configuration #1 chosen from 1 choice
em28xx new video device (2304:0226): interface 0, class 255
em28xx: device is attached to a USB 2.0 bus
em28xx #0: Alternate settings: 8
em28xx #0: Alternate setting 0, max size= 0
em28xx #0: Alternate setting 1, max size= 0
em28xx #0: Alternate setting 2, max size= 1448
em28xx #0: Alternate setting 3, max size= 2048
em28xx #0: Alternate setting 4, max size= 2304
em28xx #0: Alternate setting 5, max size= 2580
em28xx #0: Alternate setting 6, max size= 2892
em28xx #0: Alternate setting 7, max size= 3072
input: em2880/em2870 remote control as /class/input/input11
em28xx-input.c: remote control handler attached
trying to set disabled gpio? (00)
tuner' 0-0061: chip found @ 0xc2 (em28xx #0)
attach inform (default): detected I2C address c2
attach_inform: tvp5150 detected.
tvp5150 0-005c: tvp5150am1 detected.
successfully attached tuner
em28xx #0: V4L2 VBI device registered as /dev/vbi0
em28xx #0: V4L2 device registered as /dev/video0
em28xx-audio.c: probing for em28x1 non standard usbaudio
em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
em2880-dvb.c: DVB Init
analog tv open()
modelock active!
vbi open()
modelock active!
DVB: registering new adapter (em2880 DVB-T)
DVB: registering frontend 0 (Micronas DRX3973D DVB-T)...
em28xx #0: Found Pinnacle Hybrid Pro (em2882)
A tím je tuner připravený k použití. V systému se objeví pár nových zařízení:
root@audi ~ # ls -hal /dev/video0 lrwxrwxrwx 1 root root 10 25. kvě 11.31 /dev/video0 -> v4l/video0 root@audi ~ # ls -hal /dev/dvb/adapter0/ celkem 0 drwxr-xr-x 2 root root 0 25. kvě 11.31 . drwxr-xr-x 3 root root 0 25. kvě 11.31 .. crw-rw---- 1 root video 212, 4 25. kvě 11.31 demux0 crw-rw---- 1 root video 212, 5 25. kvě 11.31 dvr0 crw-rw---- 1 root video 212, 3 25. kvě 11.31 frontend0 crw-rw---- 1 root video 212, 7 25. kvě 11.31 net0
O přepínání mezi analogem a digitálem se stará sám driver. Při čtení z video0 pustí analogovou část (a DVB hlásí Resource busy) a naopak.
Ještě v krátkosti popíšu způsob naladění digitálních stanic (pro Prahu) a způsob přehrání. Pro přehrávání používám mplayer.
Jako root nainstalujeme balíčky.
pacman -Sy linuxtv-dvb-apps mplayer
Dále již pracuji jako běžný uživatel. Je nutné si vytvořit soubor s frekvencemi Multiplexů v Praze (stačí zkopírovat kód níže)
# DVB-T Praha (Prague, Czech Republic) # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy # CRa - Ceske radiokomunikace T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # CDG - Czech Digital Group T 674000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE # Telecom T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
Naladění stanic obstará nástroj scan. Jeho výstup přesměruji do channels.conf. Tento formát používá většina přehrávačů v Linuxu.
scan cz-Praha > channels.conf
Na obrazovce se vypíše, jaký tuner se použivá a průběh hledání. Na konci vypíše do souboru channels.conf stanice a jejich údaje nutné pro přehrávání.
Jak jsem zmínil, pro přehrávání televize používám mplayer. Ten potřebuje channels.conf ve svém adresáři.
mkdir .mplayer
cp channels.conf .mplayer/channels.cof
A nakonec, přehráváme 
mplayer dvb://"CT 1"
Doporučuji si ještě prohlédnout channels.conf a upravit si názvy stanic. Například u mě má Nova nesmyslně na začátku mezeru. Pro hezčí obraz je vhodné také zapnout korekci prokládání.
mplayer dvb://"CT 1" -vf pp=lb
A zase mám o důvod méně restartovat do Windows 
Webdesing & kód: Tomáš Kopečný
, tomas@kopecny.info, Praha, Česká republika, centrum holdings
Komentáře
Žádné komentáře zde nejsou. Buď první!
Nový komentář