Installation of the RT2832U driver in Linux

Updated info for kernels 3.6 and 3.7 here

This guide describes briefly how to install an RT2832U compatible DVB stick in Linux. It has been also tested with kernel 3.1. The key IDs working with the code provided are:

Realtek
0BDA: 2832
0BDA: 2838
0BDA: 2836
0BDA: 2839
0BDA: 2840
0BDA: 2841
0BDA: 2834
0BDA: 2837
0BDA: 2820
0BDA: 2821
0BDA: 2822
0BDA: 2833
0BDA: 2810
0BDA: 2811
0BDA: 2824
0BDA: 2825
Dexatek
1D19: 1101
1D19: 1102
1D19: 1103
1D19: 1104
1D19: 1105
1D19: 1106
1D19: 1107
1D19: 1108
1D19: 2101
1D19: 8202
1D19: 9201
1D19: 3103
1D19: 9202
Kworld
1B80: D393
1B80: D394
1B80: D395
1B80: D396
1B80: D397
1B80: D398
1B80: D39A
1B80: D39B
1B80: D39C
1B80: D39E
1B80: E77B
1B80: D3A1
1B80: D3A4
1B80: E41D
Yuan
1164: 6601

Gtek
1f4d: 0837
1f4d: B803
1f4d: C803
1f4d: D803
1f4d: C280
1f4d: D286
1f4d: 0139
1f4d: A683

Leadtek
0413: 6680
0413: 6F11

Thp
1554: 5013
1554: 5020
1554: 5026

Compro
185B: 0620
185B: 0630
185B: 0640
185B: 0650
185B: 0680
185B: 9580
185B: 9550
185B: 9540
185B: 9530
185B: 9520

Goldenbridge
1680: A332

Azurewave
13D3: 3234
13D3: 3274
13D3: 3282

Terratec
0ccd: 00A9
0ccd: 00B3

Just check your ID of the device that you have plugging it to your computer and then using the command:

lsusb

You will see something like:

Bus 002 Device 007: ID 1b80:d394 Afatech

If the ID of your device is on the table at the start of this post, then you may continue with the installation, otherwise you may have to edit the file rtl2832u.h adding the ID of your device.

Now unplug your usb.

Installation

You will need to install the headers of the kernel that you are using in order to compile the sources of the rtl2832u driver. You may use this command for the debian based systems:

apt-get install linux-headers-`uname-r`

Download the sources

wget http://www.dfragos.me/datasources/dvb/rtl2832u-3.0.tar.bz2

unpack the sources

tar xjf rt2832u-3.0.tar.bz

compile and install the sources

cd rtl2832u-3.0
make
sudo make install

Test the installation

Now you may plug your UDB Stick. You can check whether it works properly by checking the log file

dmesg | tail -n 30

You will see something like

[15272.737542] usb 2-1.2: new high speed USB device number 7 using ehci_hcd
[15272.839885] usb 2-1.2: New USB device found, idVendor=1b80, idProduct=d394
[15272.839892] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[15272.839896] usb 2-1.2: Product: usbtv
[15272.839899] usb 2-1.2: Manufacturer: realtek
[15272.970147] IR NEC protocol handler initialized
[15272.981840] IR RC5(x) protocol handler initialized
[15273.008510] IR RC6 protocol handler initialized
[15273.033304] dvb-usb: found a 'USB DVB-T DEVICE' in warm state.
[15273.033309] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[15273.035048] DVB: registering new adapter (USB DVB-T DEVICE)
[15273.055748] IR JVC protocol handler initialized
[15273.062081] IR Sony protocol handler initialized
[15273.073775] IR MCE Keyboard/mouse protocol handler initialized
[15273.081372] lirc_dev: IR Remote Control driver registered, major 251
[15273.085806] IR LIRC bridge handler initialized
[15273.890881] DVB: registering adapter 0 frontend 0 (Realtek DVB-T RTL2832)...
[15273.891091] input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/input/input18
[15273.891488] dvb-usb: schedule remote query interval to 287 msecs.
[15273.891493] dvb-usb: USB DVB-T DEVICE successfully initialized and connected.
[15273.891526] usbcore: registered new interface driver dvb_usb_rtl2832u

You can now use the DVB-T player (Kaffeine, Xine, etc) that you want and enjoy watching TV

References:

http://forum.ubuntu-it.org/index.php?PHPSESSID=ldeil6q4tcp6prlj5t3vtiu112&topic=413840.0

http://cvs.linuxtv.org/wiki/index.php/DVB-T_USB_Devices/Full

email
  • Eoin McMahon

    This is the only posting that mentions my card ID, which is 185b:0650 .
    Please could you help me to understand how to get to your first step? I’ve tried to run your build on Ubuntu Lucid, even tried building a vanilla kernel to see if that helps. I can’t find out where to get include files with media/rc-core.h in them.
    Thanks for putting up this info, I’m just too stupid to use it!

  • Anonymous

    You need to install the headers of the kernel version that you are using. So if you are using an ubuntu kernel from the repository just run

    apt-get install linux-headers-`uname-r`

    If you have compiled your own kernel, you need to produce and install the headers too, not just the kernel image. Check here

    https://help.ubuntu.com/community/Kernel/Compile

  • Eoin McMahon

    Thanks for replying so quickly, I got a bit lost with other difficulties. For what it’s worth, I found that the ubuntu flavoured kernels only contain the necessary files from 2.6.38 onwards, as shipped with natty and not before. I have just run your instructions on the new oneiric which runs a 3.0.0-15 kernel, and your fix worked like magic.
    Thanks again for putting this stuff up, and sorry to take so long in thanking you.

  • John

    Hi,
    Have been trying to get my device (0bda:2838) working in Opensuse 11.4, and now 12.1 x64, for ages with no joy.
    Have just come across your blog, which is probably the most hopeful article I have found, but unfortunately, I am fairly adept at IT stuff but not programming….
    Following your instructions to the ‘make’ command, and the differences between Ubuntu and Suse become apparent!
    It basically falls over because (I believe..) in Suse the headers aren’t at KDIR = /usr/src/linux-headers-`uname -r`
    but are eg (well, mine..) /usr/src/linux-3.1.10-1.9, and to confuse matters even more, uname – r gives: 3.1.10-1.9-desktop

    Would really appreciate any assistance you could give…..?

  • BirdOfPrey

    With these instructions, I have put a device with the same usb id 0bda:2838 working, try it with yours:
    http://ubuntuforums.org/showthread.php?t=1905057

  • dfragos

    John, check the link that BirdOfPrey gave. The steps are almost the same in terms of installation while the git code is relatively new (the ambrosa one which works with 3.2 kernels). If you want to install your stick for kernel 3.3/3.4 you can use this git repository

    https://github.com/tmair/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0

  • Amadlopes

    I hope that you still see this after so many time. I allready instaed evrithing in my arch box and i get the sucess messages from dmesg. But when i try kaffeine, w_scan, dvbscan, or other program to get channels i don’t have sucess. Is there anything i forgot ?

  • eternal sunset

    There is an error in the list of Terratec devices: it is not 00B3 but 00D3. 00B3 seems to correspond to a NOXON DAB tuner… The kernel sources I downloaded from https://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0 contained this wrong tuner definition as well, both in rtl2832u.c and rtl2832u.h

  • ffk27

    The 0BDA: 2838 has an r820t tuner but there is no tuner_r820t.c file. Is it impossible to watch tv with this stick? sdr works fine

  • soemeperson

    I have two 0BDA:2838 sticks and haven’t had much luck on linux (sdr on windows 7 though)

    Getting erros like this on dmesg..

    [16713.843649] dvb_usb_rtl2832u: Unknown symbol __divdi3 (err 0)
    [16713.843677] dvb_usb_rtl2832u: Unknown symbol __umoddi3 (err 0)
    [16713.843692] dvb_usb_rtl2832u: Unknown symbol __udivdi3 (err 0)
    [16713.846585] dvb_usb_rtl2832u: Unknown symbol __divdi3 (err 0)
    [16713.846613] dvb_usb_rtl2832u: Unknown symbol __umoddi3 (err 0)
    [16713.846627] dvb_usb_rtl2832u: Unknown symbol __udivdi3 (err 0)

  • Rob B

    Hope this thread is still live.
    I am trying to compile for the same 0bda:2838 device for a Rikomagic MK802II by cross compiling using a tool chain and a github sunxi kernel source for 3.4.67.
    I.e. I cannot use linux headers.
    Is there any way to include the source files you have here in my compile? There is obviously some differences in their content. Thanks

  • Rob B

    I get errors:

    make -C /lib/modules/3.4.67-sun4i+/build SUBDIRS=/home/debian/rtl2832u modules
    make[1]: Entering directory `/home/debian/linux-sunxi-pat-3.4.67′
    CC [M] /home/debian/rtl2832u/demod_rtl2832.o
    In file included from /home/debian/rtl2832u/dvb-usb.h:19:0,
    from /home/debian/rtl2832u/foundation.h:17,
    from /home/debian/rtl2832u/dvbt_demod_base.h:278,
    from /home/debian/rtl2832u/demod_rtl2832.h:73,
    from /home/debian/rtl2832u/demod_rtl2832.c:13:
    /home/debian/rtl2832u/dvb_frontend.h:49:33: error: field ‘parameters’ has incomplete type
    /home/debian/rtl2832u/dvb_frontend.h:313:28: error: array type has incomplete element type
    /home/debian/rtl2832u/demod_rtl2832.c: In function ‘rtl2832_GetSignalStrength’:
    /home/debian/rtl2832u/demod_rtl2832.c:732:2: warning: passing argument 2 of ‘pDemod->GetIfAgc’ from incompatible pointer type [enabled by default]
    /home/debian/rtl2832u/demod_rtl2832.c:732:2: note: expected ‘long int *’ but argument is of type ‘int *’
    make[2]: *** [/home/debian/rtl2832u/demod_rtl2832.o] Error 1
    make[1]: *** [_module_/home/debian/rtl2832u] Error 2
    make[1]: Leaving directory `/home/debian/linux-sunxi-pat-3.4.67′
    make: *** [default] Error 2

    Does this mean this method is not suitable for 3.4 kernels?