Ok guys, I am proud to announce that I was able to run a DVB-T tuner on my Nexus 7
If your kernel is 3.1.10-g52027f9 and your dongle is RTL2832U based
If you have a rooted Nexus 7 with kernel 3.1.10-g52027f9 and a RTL2832U based DVB-T dongle, then you can also have your dongle up and running in a matter of minutes. Here are the steps:
- Download http://dl.dropbox.com/u/24106229/NexusDvb.rar
- Install droidtv.apk from the rar (you can also find it at https://github.com/chrulri/droidtv)
- Get a Terminal emulator and cd to the folder where you have extracted the rar. Type in:
- sh startdvb
- Make sure that all of the files and folders inside /dev/dvb have highest permissions.
- Start DroidTV and enjoy!!!
Different dongle, kernel 3.1.10-g52027f9
If you have the same kernel and a dongle that has its drivers built in the kernel according to http://www.linuxtv.org/wiki/index.php/DVB-T_USB_Devices , then you can download this rar file - http://dl.dropbox.com/u/24106229/all-modules.rar (Last updated 20 Aug 22:22 GMT). Those are all of the kernel modules I compiled. You may be able to find your usb driver there.
Compiling kernel modules
If you don't have the same kernel or a dongle is not supported, you will need to get the kernel source and compile the modules yourself. Here's how you do that.
- Make sure you are running Linux and have make and git already installed
- Download dvbn7comp and put it into a new directory. Make sure dvbn7comp is executable by running chmod +x dvbn7comp inside the folder
- Invoke the script like this ./dvbn7comp <kernel_version>. For example if you want to have the modules compiled for 3.1.10-g05b777c, you would run ./dvbn7comp 3.1.10-g05b777c
- Wait - it may take a while. Usually about 15 minutes depending on your network and CPU speed.
- After the script finishes running, the .ko files would be put in a directory called output_3.1.10-g05b777c
Note: The script will download the kernel source and the toolchain and it will attempt to find the commit that contains the required kernel version. Then it will configure the kernel for DVB-T support and will compile the modules and copy them to the output folder. If you run the script again and the sources are already present, it will not download them again, so any subsequent runs of the script would be faster!
Patching the precompiled binaries [NEW]
For those who have another kernel version, you don't need to recompile dvb modules. If your kernel version is not in git revisions, you will just fail with 'fatal: ambiguous argument '3.1.10-xxxxxxxx': unknown revision or path not in the working tree'. Fortunately, there's a much faster and much simpler way to get dvb modules for your kernel version. You don't need git, make, toolchain, kernel source...
Nearly every Android kernel for Nexus 7 is based on 3.1.10 linux kernel (because of nvidia's closed source driver for graphics card), so kernel version for your Nexus 7 will be always 3.1.10-xxxxxxxx.
You can get directly precompiled binary modules (aka *.ko files) at post #1 and patch them for your kernel version:
perl -pi -e 's/3.1.10-g52027f9/3.1.10-xxxxxxxx/g' *.ko
perl -pi -e 's/3.1.10-g22b4fcd/3.1.10-xxxxxxxx/g' *.ko
perl -pi -e 's/3.1.10-g05b777c/3.1.10-xxxxxxxx/g' *.ko
Replace xxxxxxxx by your kernel-version, for example if your kernel version is 3.1.10-g30c5396, use:
perl -pi -e 's/3.1.10-g52027f9/3.1.10-g30c5396/g' *.ko
More info: This way works with Cyanogen Mod kernels/ROMs!!!
echo "Starting DVB support" insmod dvb-core.ko # core support for DVB insmod dvb-pll.ko # I am not sure if this is even needed insmod rc-core.ko # Support for remote control, some drivers won't load otherwise insmod dvb-usb.ko # Support for usb tuners insmod dvb-usb-***** # Add here your driver. If more than one needed, add another line # if firmware is needed, make sure the firmware is in the right folder, it should be /lib/firmware, but I'm not 100% sure # Also some devices won't need the steps below echo "Waiting for device" sleep 5 cd / mkdir /dev/dvb mkdir /dev/dvb/adapter0 cd /dev/dvb/adapter0 ln -s /dev/dvb0.frontend0 frontend0 ln -s /dev/dvb0.demux0 demux0 ln -s /dev/dvb0.dvr0 dvr0 ln -s /dev/dvb0.dvr0 dvr0.ts chmod -R 777 /dev/dvb* # The original script doesn't have it, but try adding a -R before 777 might ease things a bit echo "DONE!"
If any error message occurs, type in dmesg in the terminal. This will give more information why something failed.
How do I know if I'm successful
To check whether you have insmoded the kernels right and after connecting the device whether it has been discovered, use dmesg and look for message similar to "Found DVB device xxx in warm state".
I got it running!!!
If you got it running, please do share with us! It seems like there's a lot of fiddling for some devices to be done so any information will prove invaluable for somebody!!!
NOTE: I don't have the time to support this thread any more, sorry if I am not responding to it! All of the directions above are still valid and working! Browse the comments, you might find that someone has compiled the correct modules for your device/kernel or you might ask someone to do it for you! If you want any of the information above to be edited, please PM me!