Chip rtl2832u
Tento návod popisuje zprovoznění DVB-T tunerů s chipem RTL2832u (idVendor=1d19, idProduct=110x), jako jsou např:
- LifeView DVB-T USB LV5T (idVendor=1d19, idProduct=1101)
- DVB-T MSI DigiVOX micro HD (idVendor=1d19, idProduct=1102)
- MSI DigiVox mini II V3.0 (idVendor=1d19, idProduct=1101)
- Leadtek Winfast DTV dongle mini (idVendor=0413, idProduct=6a03)
- Not Only TV LV5TDLX (idVendor=1f4d idProduct=c803)
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í:
- Není úplně vhodný pro starší a pomalejší PC ( z dob Celeronů atd. ) v kombinaci s HD vysíláním
- Pokud nemá Váš dongle potlačeny netelevizní frekvence, dokáže zpracovat i FM a DAB rozhlasové vysílání
- Tento chipset je pilířem pro tzv. Software Defined Radio - aplikaci pro příjem a demodulaci radiových signálů v řádu od desítek MHz do jednotek GHz.
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