Obsah

Chip rtl2832u

Tento návod popisuje zprovoznění DVB-T tunerů s chipem RTL2832u (idVendor=1d19, idProduct=110x), jako jsou např:

Architektura a použití

Chip rtl2832u byl navržen tak, aby jeho implementace byla kompaktní, levná, univerzálně použitelná a jednoduše softwarově rozšířitelná. Samotný TV dongle obsahuje pouze širokopásmový zesilovač a AD převodník, o frekvenční zpracování a dekódování se stará vždy až ovladač uvnitř PC. To určuje způsob jeho použití:

Funkčnost ve verzích

12.10 32/64bit

odzkoušeno pro 3.5.0-21 (zjistí se uname -a)

git clone git://linuxtv.org/media_build.git
cd media_build
./build

Může chtít nainstalovat nějaké balíky. Po případné instalaci zadat znovu

./build

Pokud vše proběhlo bez chyb :

sudo make install

kontrola:

lsmod | grep rtl

při úspěchu vypíše zavedené moduly při neúspěchu nic originálí návod: http://ubuntuforums.org/showthread.php?t=2078342.

12.04 32bit

Návod a zdrojový kód pochází z git repository github.com/ambrosa. Před kompilací ovladačů je třeba mít naistalováno následující:

sudo apt-get install build-essential
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install git

Následuje stažení zdrojového kódu

git clone https://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0.git 
cd DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0
cd RTL2832-2.2.2_kernel-3.0.0

Teď je třeba v Makefile zakomentovat starší verzi jádra 3.0 a odkomentova novější

# kernel 3.0.0 / 3.1.0
#INCLUDE_EXTRA_DVB := include-300

# kernel 3.2.0
INCLUDE_EXTRA_DVB := include-320

Nakonec spustíme kompilaci, instalaci a zavedení modulu

make clean
make
sudo make install
modprobe dvb_usb_rtl2832u

11.10 32bit

Ve verzi Ubuntu 11.10 32bit funguje díky uživateli Martin a jeho příspěvku:

Mě funguje MSI DigiVox micro HD (idVendor=1d19, idProduct=1104), která je také na čipu RTL2832u v Ubuntu 11.10 ve 32 bit verzi (jádro 3.0.0-13) podle návodu, který jsem dal do stránky o kartě (klik na DigiVox o řádek výše).

11.10 64bit

Ve verzi Ubuntu 11.10 64bit funguje díky italskému uživateli Xgaz: http://xgazza.altervista.org/Linux/DVB/rtl2832u.html#

Oranžový Leadtek Winfast DTV dongle mini

Návod uživatele Xgaz jsem zkusil na Xubuntu 11.10 64-bit verze. Mám zařízení s ID 0413:6a03 (oranžový Leadtek Winfast DTV dongle mini). V souboru rtl2832u.h jsem změnil na řádku 99 definici

#define USB_PID_LEADTEK_WARM_1      0x6680

na

#define USB_PID_LEADTEK_WARM_1      0x6A03

definice o řádek výš odpovídala. Přeložil jsem, nainstaloval a po znovuvložení karta naběhla.

11.04

Níže uvedený postup byl otestován na tuneru DVB-T MSI DigiVOX micro HD USB a MSI DigiVox mini II V3.0.

Příprava

V této fázi si připrav prostředí pro překlad V4L a nainstaluj jednoduchou DVB-T aplikaci.

sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install  patchutils libproc-processtable-perl git unrar
sudo apt-get install me-tv

Stažení poslední verze V4L

Tento postup provede stažení poslední verze V4L a jejího nainstalování (včetně jejích opravných balíčků).

mkdir ~/tuner ; cd ~/tuner
git clone git://linuxtv.org/media_build.git
cd ~/tuner/media_build/ ; ./build

Stažení zdrojového kódu RTL2832U

mkdir ~/tuner/rtl; cd ~/tuner/rtl
wget http://www.turnovfree.net/~stybla/linux/v4l-dvb/lv5tdlx/090730_RTL2832U_LINUX_Ver1.1.rar
unrar x -yep 090730_RTL2832U_LINUX_Ver1.1.rar ~/tuner/rtl/
cp ~/tuner/rtl/090730_RTL2832U_LINUX_Ver1.1/* ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/

Úprava zdrojového kódu RTL2832U

Tady je nutná trocha úprav popsaných v souboru readme.txt.

Dokopíruj na konec souboru ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/Makefile

gedit ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/Makefile

následující text:

dvb-usb-rtl2832u-objs = demod_rtl2832.o	dvbt_demod_base.o dvbt_nim_base.o foundation.o math_mpi.o nim_rtl2832_mxl5007t.o nim_rtl2832_fc2580.o nim_rtl2832_mt2266.o rtl2832u.o rtl2832u_fe.o rtl2832u_io.o tuner_mxl5007t.o tuner_fc2580.o tuner_mt2266.o tuner_tua9001.o nim_rtl2832_tua9001.o

obj-$(CONFIG_DVB_USB_RTL2832U) += dvb-usb-rtl2832u.o

Dokopíruj na konec souboru ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/Kconfig

gedit ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/Kconfig

následující text:

config DVB_USB_RTL2832U
	tristate "Realtek RTL2832U DVB-T USB2.0 support"
	depends on DVB_USB
	help
	  Realtek RTL2832U DVB-T driver.

Uprav soubor ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/rtl2832u.c

gedit ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/rtl2832u.c

uprav obsah řádku 12

//DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

na

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

uprav obsah řádku 41

  adap->fe = rtl2832u_fe_attach(adap->dev);

na

  adap->fe[0] = rtl2832u_fe_attach(adap->dev);

uprav obsah řádku 61-63

	if ( ( 0== dvb_usb_device_init(intf,&rtl2832u_1st_properties,THIS_MODULE,NULL) )||

		( 0== dvb_usb_device_init(intf,&rtl2832u_2nd_properties,THIS_MODULE,NULL) ) ||

		( 0== dvb_usb_device_init(intf,&rtl2832u_3th_properties,THIS_MODULE,NULL) ))

na

	if ( ( 0== dvb_usb_device_init(intf,&rtl2832u_1st_properties,THIS_MODULE,NULL,adapter_nr) )||

		( 0== dvb_usb_device_init(intf,&rtl2832u_2nd_properties,THIS_MODULE,NULL,adapter_nr) ) ||

		( 0== dvb_usb_device_init(intf,&rtl2832u_3th_properties,THIS_MODULE,NULL,adapter_nr) ))

Uprav soubor ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/tuner_tua9001.c

gedit ~/tuner/media_build/linux/drivers/media/dvb/dvb-usb/tuner_tua9001.c

uprav obsah řádku 951

#elif defined(CRYSTAL_19.2_MHZ)

na

#elif defined(CRYSTAL_19_2_MHZ)

uprav obsah řádku 957

#elif defined(CRYSTAL_20.48_MHZ)

na

#elif defined(CRYSTAL_20_48_MHZ)

Překlad aktualizovaného V4L

Přelož upravené V4L (sice podruhé, ale tentokrát s naším rtl2832u ovladačem)

cd ~/tuner/media_build/
make clean
make distclean
make

Instalace aktualizovaného V4L do systému

Nainstaluj všechny V4L moduly (včetně našeho rtl2832u) a restartuj stroj.

sudo make install
sudo reboot

Kontrola

Po restartu zkontroluj správné zavedení ovladačů

tail -f /var/log/syslog

Vlož kartu do USB, mělo by se objevit něco takového:

Aug 15 00:18:36 ubuntu kernel: [   69.710072] usb 1-7: new high speed USB device using ehci_hcd and address 3
Aug 15 00:18:36 ubuntu kernel: [   70.025083] WARNING: You are using an experimental version of the media stack.
Aug 15 00:18:36 ubuntu kernel: [   70.025090] 	As the driver is backported to an older kernel, it doesn't offer
Aug 15 00:18:36 ubuntu kernel: [   70.025095] 	enough quality for its usage in production.
Aug 15 00:18:36 ubuntu kernel: [   70.025099] 	Use it with care.
Aug 15 00:18:36 ubuntu kernel: [   70.025101] Latest git patches (needed if you report a bug to linux-media@vger.kernel.org):
Aug 15 00:18:36 ubuntu kernel: [   70.025106] 	9bed77ee2fb46b74782d0d9d14b92e9d07f3df6e [media] tuner_xc2028: Allow selection of the frequency adjustment code for XC3028
Aug 15 00:18:36 ubuntu kernel: [   70.025113] 	ffd638e0e613578fbe82d5f2d9c1e5ec503a3a2b [media] v4l: Move event documentation from SUBSCRIBE_EVENT to DQEVENT
Aug 15 00:18:36 ubuntu kernel: [   70.025119] 	31ee95ec2d3dd3b6f68d7fa0f410045652895af2 [media] adp1653: check error code of adp1653_init_controls
Aug 15 00:18:36 ubuntu kernel: [   70.069936] IR NEC protocol handler initialized
Aug 15 00:18:36 ubuntu kernel: [   70.071819] WARNING: You are using an experimental version of the media stack.
Aug 15 00:18:36 ubuntu kernel: [   70.071827] 	As the driver is backported to an older kernel, it doesn't offer
Aug 15 00:18:36 ubuntu kernel: [   70.071832] 	enough quality for its usage in production.
Aug 15 00:18:36 ubuntu kernel: [   70.071835] 	Use it with care.
Aug 15 00:18:36 ubuntu kernel: [   70.071838] Latest git patches (needed if you report a bug to linux-media@vger.kernel.org):
Aug 15 00:18:36 ubuntu kernel: [   70.071843] 	9bed77ee2fb46b74782d0d9d14b92e9d07f3df6e [media] tuner_xc2028: Allow selection of the frequency adjustment code for XC3028
Aug 15 00:18:36 ubuntu kernel: [   70.071849] 	ffd638e0e613578fbe82d5f2d9c1e5ec503a3a2b [media] v4l: Move event documentation from SUBSCRIBE_EVENT to DQEVENT
Aug 15 00:18:36 ubuntu kernel: [   70.071854] 	31ee95ec2d3dd3b6f68d7fa0f410045652895af2 [media] adp1653: check error code of adp1653_init_controls
Aug 15 00:18:36 ubuntu kernel: [   70.116083] IR RC5(x) protocol handler initialized
Aug 15 00:18:37 ubuntu kernel: [   70.148660] IR RC6 protocol handler initialized
Aug 15 00:18:37 ubuntu kernel: [   70.172794] dvb-usb: found a 'DK mini DVBT DONGLE' in warm state.
Aug 15 00:18:37 ubuntu kernel: [   70.172815] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Aug 15 00:18:37 ubuntu kernel: [   70.174581] DVB: registering new adapter (DK mini DVBT DONGLE)
Aug 15 00:18:37 ubuntu kernel: [   70.180615] DVB: registering adapter 0 frontend 0 (Realtek RTL2832 DVB-T)...
Aug 15 00:18:37 ubuntu kernel: [   70.181995] dvb-usb: DK mini DVBT DONGLE successfully initialized and connected.
Aug 15 00:18:37 ubuntu kernel: [   70.182058] dvb-usb: found a 'DK mini DVBT DONGLE' in warm state.
Aug 15 00:18:37 ubuntu kernel: [   70.182075] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Aug 15 00:18:37 ubuntu kernel: [   70.183851] DVB: registering new adapter (DK mini DVBT DONGLE)
Aug 15 00:18:37 ubuntu kernel: [   70.188952] IR JVC protocol handler initialized
Aug 15 00:18:37 ubuntu kernel: [   70.212636] DVB: registering adapter 1 frontend 0 (Realtek RTL2832 DVB-T)...
Aug 15 00:18:37 ubuntu kernel: [   70.217317] IR Sony protocol handler initialized
Aug 15 00:18:37 ubuntu kernel: [   70.221418] dvb-usb: DK mini DVBT DONGLE successfully initialized and connected.
Aug 15 00:18:37 ubuntu kernel: [   70.225984] usbcore: registered new interface driver dvb_usb_rtl2832u
Aug 15 00:18:37 ubuntu kernel: [   70.236932] IR MCE Keyboard/mouse protocol handler initialized
Aug 15 00:18:37 ubuntu kernel: [   70.269353] lirc_dev: IR Remote Control driver registered, major 250
Aug 15 00:18:37 ubuntu kernel: [   70.286256] IR LIRC bridge handler initialized

Použití

Pro začátek velmi jednoduchá aplikace s přímočarým ovládáním Me TV

me-tv

Odkazy