Live TV with Hauppauge WinTV-HVR2250 in Elementary OS

I've been using elementary OS Luna lately, an Ubuntu derivative, and I really like it so far. It is very smooth and lightweight. Anyway, since I had to reinstall my OS, I've needed to setup all of my hardware again. Here is how I got my WinTV-HVR2250 working.

I followed the guide on linuxtv.org. Here are the steps that I ran to get my setup working.

Download Firmware

wget http://www.steventoth.net/linux/hvr22xx/22xxdrv_27086.zip
wget http://www.steventoth.net/linux/hvr22xx/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
wget http://www.steventoth.net/linux/hvr22xx/extract.sh

chmod +x extract.sh
./extract.sh

You can look at the extract.sh script before you run it. It just unzips the downloaded files and tells you where to copy the fw files next. For me, this is where I needed to copy the extracted firmware:

sudo cp v4l-saa7164-1.0.2.fw /lib/firmware/3.2.0-59-generic
sudo cp v4l-saa7164-1.0.3.fw /lib/firmware/3.2.0-59-generic
sudo cp dvb-fe-tda10048-1.0.fw /lib/firmware/3.2.0-59-generic

Download More Firmware

I then followed some of the directions under the Making it Work Easily section:

wget http://www.steventoth.net/linux/hvr22xx/firmwares/4019072/NXP7164-2010-03-10.1.fw
sudo cp NXP7164-2010-03-10.1.fw /lib/firmware

This just copies more firmware to your firmware directory. Next, you need to determine which type of card you have. You can find that by running the following:

dmesg | grep saa7164

The third line will read something like:

CORE saa7164[0]: subsystem: 0070:8851, board: Hauppauge WinTV-HVR2250 [card=7,insmod option]

Notice the card=7 part. You want to create an options file in /etc/modprobe.d:

sudo nano /etc/modprobe.d/options

The file should contain options saa7164 card=7. Replace the card=7 part with whatever your dmesg output said.

Install Tvheadend

Restart your computer and your hardware should now be working. Next, you'll want to install Tvheadend backend TV server:

sudo apt-add-repository http://apt.tvheadend.org/unstable
sudo apt-get update
sudo apt-get install tvheadend

I'm using the unstable PPA because the stable version didn't correctly parse service names from my over-the-air signal. v3.9.385~g7d8d81a~precise works great for me but YMMV.

Once you install Tvheadend, you can access the web UI from localhost:9981. Go to Configuration DVB Inputs Networks. Add a new ATSC network for us_NTSC_center_frequencies_8VSB if you are like me and trying to pick up HDTV over the air. Don't skip the initial scan for this network. Navigate to TV Adapters and enable each of the dual tuners listed (they both showed up as Samsung tuners for me) with the network you just created.

It should start scanning and picking up channels. Once services start showing up on your Services tab, you can click on Map All to map the services to TV channels.

Install XBMC

Now that you have the backend TV server setup, you'll need a client to connect to it.

sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install xbmc xbmc-pvr-tvheadend-hts

Open XBMC, and navigate to Settings Add Ons Disabled Add Ons PVR Clients and configure the Tvheadend client with whatever username/password you created when you installed Tvheadend. This should enable the client and enable Live TV within XBMC. If it didn't, just navigate to Live TV from the settings menu and enable it.

Finally, go to the XBMC menu home screen and click on Live TV and watch something.

Easy?

Yeah, this was kind of a pain-in-the-ass to get setup. Once you know what to do, it is mostly straight-forward but it is definitely not the ease of setting up TV in Windows Media Center. This solution, however, is much more robust in that I can now share live TV with any device on the network. Once it is all running, it is a very nice setup.

Chad Lee

Chad Lee

Technical Lead at CivicSource, OSS developer. Expert in distributed systems, REST, messaging, domain-driven design, test-driven development, & CQRS. Beginner dad, novice human.

Read More