Note: This is a technical guide aimed at a specific audience. If you happen to read this blog and have no interest in Linux and TV cards, skip this post.
Note 2: This guide is obsolete! Use at your own risk. This guide is a lot better!
My father and I recently bought a Hauppauge Nova-T 500 TV card to extend the functionality of our current TV computer. The nice thing with this card is the fact that it contains two tuners in one card, allowing two simultaneous TV recordings or watchings at the same time.
We unpacked the box and plugged the card in to our computer. The manual recommended the card to be put in PCI slot #1 or 2 for unknown reasons, but it felt best to comply. When we booted, however, I got confused.
We had indeed installed a PCI card, but there was no TV card in the PCI listing (given by the ‘lspci’ command). We thought there was something wrong with the card at first.
When inserting the card into a Windows computer, we understood where the problem was. At first, Windows recognized a new USB root hub on the computer, and only after that came the TV card. Hauppauge had made the ingenious decision of having two USB TV receivers on the card, controlled by an internal USB hub. The reasons for that I can guess is to save costs using the same chipset for both their external USB cards, and the internal what-seems-to-be-PCI cards.
So, back with the card to the Linux box, and discovering that there actually were a lot of new entries in the PCI listing, USB controllers. A quick glance on the USB listing (‘lsusb’ under Linux), showed a happy Hauppauge card.
After discovering the inner workings of the card, it was time to configure it. Apparently, the drivers were not included in the Linux kernel before version 2.6.19, and the most recent stock kernel for the Ubuntu system was 2.6.17. Time to go back and compile your own kernel from kernel.org.
If your system has at least kernel version 2.6.19, there is no need for compiling your own. The kernel version is checked with the command ‘uname -r’. In the kernel, you need to enable modular support for the “dib0700″ chipset, which is somewhere under Device Drivers > Multimedia. Make sure the dialog says “(M)” and not “(*)” for the specific driver.
After compiling and installing the kernel (providing those instructions is outside the scope of this document) you must reboot and then find a firmware file for the kernel to use. For this specific card I needed the file “dvb-usb-dib0700-01.fw”, which I couldn’t find anywhere on the net at first. The primary mirror for this file was offline, but after one hour of searching I luckily found an RPM containing several firmwares, along with this one.
To make the path easier for everybody else, I here provide these files on my server here.
NOTE: The above files are very obsolete, and should not be used. linuxtv.org has newer files.
So, extract the file named “dvb-usb-dib0700-01.fw” and copy it to the directory /lib/firmware. Then load the module dvb-usb-dib0700 using the following command:
modprobe dvb-usb-dib0700
(many systems require that you add “sudo” to the command line before the “modprobe” command.
You just loaded the driver into the kernel. Felt something? That was just the feeling of being one step closer to a working dual TV tuner card. Note that the “modprobe” command should return nothing if it works. If you get outputs like “FATAL: Module dvb-usb-dib0700 not found.” you have to make sure that you compiled in support for the TV card into the kernel.
If modprobe worked, check the output of the command ‘dmesg’. If it works, you should have something like this in the last few lines:
[ 47.706381] dib0700: loaded with support for 2 different device-types
[ 47.755845] dvb-usb: found a 'Hauppauge Nova-T 500 Dual DVB-T' in cold state, will try to load a firmware
[ 47.831894] dvb-usb: downloading firmware from file 'dvb-usb-dib0700-01.fw'
[ 48.004945] dib0700: firmware started successfully.
[ 48.106970] dvb-usb: found a 'Hauppauge Nova-T 500 Dual DVB-T' in warm state.
[ 48.107568] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 48.107929] DVB: registering new adapter (Hauppauge Nova-T 500 Dual DVB-T).
[ 48.191285] DVB: registering frontend 1 (DiBcom 3000MC/P)...
[ 48.192903] MT2060: successfully identified (IF1 = 1220)
[ 48.657038] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 48.657373] DVB: registering new adapter (Hauppauge Nova-T 500 Dual DVB-T).
[ 48.661165] DVB: registering frontend 2 (DiBcom 3000MC/P)...
[ 48.663158] MT2060: successfully identified (IF1 = 1220)
[ 49.129041] dvb-usb: Hauppauge Nova-T 500 Dual DVB-T successfully initialized and connected.
[ 49.129071] usbcore: registered new interface driver dvb_usb_dib0700
Basically, what it says is that the firmware gets loaded (“dib0700: firmware started successfully“) and that the frontend gets registered (“MT2060: successfully identified“) and finally gets the card to work (“dvb-usb: Hauppauge Nova-T 500 Dual DVB-T successfully initialized and connected“)
If this is your case, you can happily go on and set up MythTV or <insert your favorite PVR system here>.
Otherwise, let’s do some debugging. Most often, you forgot to provide the system with the correct firmware file. Extract the file “dvb-usb-dib0700-01.fw” to /lib/firmware, nothing else. Make sure you got support for your dib0700 in the kernel configuration and that the kernel is really 2.6.19 or higher. If you get stuck, post a comment in the form on the bottom of the page, and I or one of my many readers will probably help you.
Your TV card should show up in the directory /dev/dvb (might vary on other systems than my Ubuntu installation) as two entries; adapter0 and adapter1 (This might also vary if you have more TV cards in the computer).
Now, configure the DVB card as you would with any card. I use MythTV, and those instructions can be found here. I don’t feel like writing another MythTV guide here, there are so many out there already.
Happy tuning!
Note that I never tried connecting the remote control, many readers have commented that the remote doesn’t work yet. You will need a third-party remote or do as I am doing and use another card with a remote control.
As a conclusion, I find the Nova-T 500 an excellent card with good support under Linux except for the remote control. The driver seems pretty new, though, so there are probably improvements and bugfixes on the way in new Linux versions. Still, with our computer, a 1.8 GHz with 768 MB of memory, we can now record three DVB-T streams simultaneously (using one Nova-T 500 and one older Nova-T card) without any problems at all.
I can only recommend this card, although it still requires some compiling to get working. I believe Ubuntu Feisty Fawn (in beta at the time of writing) has support for the card out of the box (but you still need the firmware).
If this guide was helpful, I would appreciate you leaving a comment here. Also comment if something doesn’t work or if you have additional suggestions. Thank you!