Realtek RTL2832U USB DVB-T tuner

In April 2010 I brought the ezcap DVB-T FM DAB USB device from Zazz, a digital TV tuner that contains the Realtek RTL2832U chipset. The USB ID is 0bda:2838.

It was advertised with Linux support, this came in the form of a zip file DVBT-DAB LinuxDriver hosted on Zazz's website. This file contained a snapshot of the v4l-dvb mercurial repository, a changelog, readme and install script. The snapshot files are mostly dated 2009-09-17 (perhaps a mercurial person could identify the exact revision from the hash present?). There were a number of files dated 2009-10-23 that had the executable bit set, and these contain the driver for my USB device.

Bulding a driver

The lastest kernels contain upstream support for this device. If you're running an old distro, then use the media_build git tree to build the latest dvb drivers for your system.

$ sudo apt-get install linux-headers-generic git build-essential
$ git clone --depth=1 git://linuxtv.org/media_build.git
$ cd media_build 
$ ./build

How to Obtain, Build and Install V4L-DVB Device Drivers

Building a driver (old)

I wrote a makefile that allows the driver to be built out of tree.

I tested this with 2.6.38, as provided by Ubuntu Natty. If you're on Debian Squeeze (stable), you can checkout the squeeze-2.6.32 branch using $ git checkout -b squeeze-2.6.32 origin/squeeze-2.6.32 after the third step.

If you're running a different variety of kernel, such as -pae, then you'll want to install linux-headers-generic-pae.

 $ sudo apt-get install linux-headers-generic
 $ git clone http://jms.id.au/~shenki/git/rtl2832u
 $ cd rtl2832u
 $ make
 $ sudo make modules_install

Then simply plug in your device and use it like any well supported DVB tuner.

Note: modules_install suggests that it runs depmod, but in some cases the driver is still not used when attaching the USB device. If it doesn't work after running make install and re-inserting the device, try running sudo depmod -a first.

Old instructions

Don't follow these, they exist only for historical purposes.

Getting it working

If you're just keen to get the driver working, it is trivial to make this happen. Easiest is to download the kernel module I have compiled for the Ubuntu Lucid 2.6.32-23-generic 64-bit kernel

wget http://jms.id.au/~shenki/RTL2832U/dvb-usb-rtl2832u.ko
wget http://jms.id.au/~shenki/RTL2832U/dvb-usb-ec168.fw
sudo mkdir /lib/modules/2.6.32-23-generic/kernel/update/
sudo cp dvb-usb-rtl2832u.ko /lib/modules/2.6.32-23-generic/kernel/update/
sudo cp dvb-usb-ec168.fw /lib/firmware/
sudo depmod -a

Secondly, use the diff I created. This is based atop 2.6.34; however it should work with most versions around .32 as the only modification to existing files is adding the makefile and Kconfig rules to build the module. You'll need to enable Device Drivers -> Multimedia support -> DVB/ATSC adapters -> Support for various USB DVB devices -> Realtek RTL2832U DVB-T USB2.0 support (through menuconfig, or using the hack described below).

sudo apt-get install linux-image-2.6.32
tar xvf /usr/src/linux-source-2.6.32.tar.bz2
wget http://jms.id.au/~shenki/RTL2832U/build-linux-2.6.32-23-generic.patch
wget http://jms.id.au/~shenki/RTL2832U/rt1283x.patch
cd linux-source-2.6.32
patch -p1 < ../rt1283x.patch
patch -p1 < ../build-linux-2.6.32-23-generic.patch
cp /boot/config-2.6.32-23-generic .config
echo "CONFIG_DVB_USB_RTL2832U=m" >> .config
make

Once the module has been built, you can copy out drivers/media/dvb/dvb-usb/dvb-usb-rtl2832u.ko as mentioned above.

Finally, and perhaps least dogey of all, is to grab the sources from Zazz, copy this list of files to drivers/media/dvb/dvb-usb in your kernel tree, make the required patch to Kconfig and Makefile in that directory, and build the module as mentioned above.

Crazy Copyrights

Some googling revealed that the driver has appeared a few times over the past few months, but hasn't made it into any official repo due to the dubious copyright information in some of the files. Interesting, the driver itself claims authorship of Realtek, version 1.4, with license being GPL.

This source code file contains confidential information and/or trade
secrets of Microtune, Inc. or its affiliates and is subject to the
terms of your confidentiality agreement with Microtune, Inc. or one of
its affiliates, as applicable.

Any software supplied free of charge for use with elonics
evaluation kits is supplied without warranty and for
evaluation purposes only. Incorporation of any of this
code into products for open sale is permitted but only at
the user's own risk. Elonics accepts no liability for the 
integrity of this software whatsoever.

fitipower: Compile in Visual Studio 2005 C++ Win32 Console