====== 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. [[SDR|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 [[https://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0|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 [[DigiVox|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#|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 ====== * [[https://build.opensuse.org/package/files?package=v4l-dvb&project=home%3Adirk-s&rev=6a3a60beeb74908fc041a6166e632aee|SUSE repository s rtl2832u kódem a kernel patchem]] * [[http://ubuntuforums.org/showthread.php?t=1678094&page=4|Vlákno s podobným návodem na ubuntuforums.org]] * [[http://linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers|Návod na kompilaci poslední V4L s posledními záplatami]]