Hauppauge WinTV-HVR-950Q: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
Line 54: Line 54:
</pre>
</pre>
Connect the WinTV to a good antenna.
Connect the WinTV to a good antenna.
Then download some tools (using your distribution installer, yum, apt-get, etc):
Then download some tools (using your distribution installer: yum, apt-get, etc):
<pre>
<pre>
yum install dvb-apps mplayer
yum install dvb-apps mplayer
Line 71: Line 71:
</pre>
</pre>
because of my slow video and audio cards.
because of my slow video and audio cards.

== Useful Scripts ==

Instead of using special software for TIVO-like recording (such as MythTV), I use simple scripts. I first created a file in my bin directory, called favorites.txt, with mnemonics for my favorite channels listed in channels.conf (these are actual their channel numbers). Example:
<pre>
4 KDFW DT
5 KXAS-HD
11 KTVT-DT
13 KERA-HD
</pre>
and use the following script, called tape, in my bin directory:
<pre>
#!/bin/sh
ext=`date +'%m-%d-%H-%M-%S'`
tapeit='/tmp/tapeit-'${ext}
stopit='/tmp/stopit'
file='~/Videos/'${ext}'-'$1
pat='s/^'$1' //p;d'
chan=`sed "${pat}" ~/bin/favorites.txt`
if [ "${chan}" == "" ]; then echo "Valid channels:"; cat ~/bin/channels.txt; exit; fi
echo "azap -r -c ~/channels.conf '${chan}' > /dev/null & cat /dev/dvb/adapter0/dvr0 > ${file}" > ${tapeit}
echo 'killall -q azap cat' > ${stopit}
if [ "$2" = "now" ]; then sh ${tapeit}; else at -f ${tapeit} $2; fi
if [ -z "$3" ]; then at -f ${stopit} now + 1 hour; else at -f ${stopit} $3; fi
</pre>
For example, to tape something on KDFW-DT (channel 5) between 5pm and 6pm you execute:
<pre>
tape 4 5pm 6pm
</pre>
(note that for 1080i, you will need 6GB/hour). The result will be written in the directory Video under a name that contains date/time/channel.
Then you can use mplayer to watch this file.

Revision as of 03:03, 9 February 2009

Package.jpg

Overal Impression

This is my first video capture device and I really like it. It currently works great/excellent for ATSC (digital broadcast) but, at the time of writting, it doesn't work at all for NTSC (analog TV/cable). There is a patch[1] already available that fixes this problem, but I haven't tried it. I use WinTV-HVR-950Q on very modest hardware: an old Dell Latitude D600 laptop with 2GHz/500MB connected to a 1080p LCD TV through a VGA cable. Both my TV and the WinTV are connected to an internal amplified antenna (TERK HDTVa). This WinTV tuner is as good as my TV tuner: both found the same channels and have about the same video quality (even for 1080i broadcasts).

Note that it's critical to have a fast video card. My card, ATI Radeon 9000 32Mb, is not supported by ATI anymore, so I had to use the open source radeon driver instead of ATI's fglrx. If you use the default settings for the radeon driver, you will get a pitiful 170FPS in glxgears, which is NOT sufficient for watching digital TV. But after I used this xorg.conf file[2], I got about 1100FPS, which was sufficient. Of course, I had to do the following to get the best resolution on my TV (and a blank screen on my laptop):

xrandr --output LVDS --off --output VGA-0 --mode 1920x1080

Basic Installation

The xc5000 driver needed for this WinTV-HVR-950Q is already part of the latest Linux kernel (part of v4l-dvb drivers). You should upgrade to Linux kernel 2.6.27. First you need to download and install the xc5000 firmware:

wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
wget http://www.steventoth.net/linux/xc5000/extract.sh
sh extract.sh
cp dvb-fe-xc5000-1.1.fw /lib/firmware
modprobe xc5000

The firmware will be added lazily (on-demand) when you first use the driver. After you plug-in the device on a USB 2.0 port (it won't work with a USB 1.1) and use the driver for the first time (eg, by scanning channels), you may see something like this on dmesg:

usb 1-3: new high speed USB device using ehci_hcd and address 3
usb 1-3: configuration #1 chosen from 1 choice
au0828: i2c bus registered
tveeprom 0-0050: Hauppauge model 72001, rev B3F0, serial# 5280879
tveeprom 0-0050: MAC address is 00-0D-FE-XX-XX-XX
tveeprom 0-0050: tuner model is Xceive XC5000 (idx 150, type 4)
tveeprom 0-0050: TV standards NTSC(M) ATSC/DVB Digital (eeprom 0x88)
tveeprom 0-0050: audio processor is AU8522 (idx 44)
tveeprom 0-0050: decoder processor is AU8522 (idx 42)
tveeprom 0-0050: has no radio, has IR receiver, has no IR transmitter
hauppauge_eeprom: hauppauge eeprom: model=72001
xc5000 0-0061: creating new instance
xc5000: Successfully identified at address 0x61
xc5000: Firmware has not been loaded previously
DVB: registering new adapter (au0828)
DVB: registering adapter 0 frontend 0 (Auvitek AU8522 QAM/8VSB Frontend)...
Registered device AU0828 [Hauppauge HVR950Q]
usb 1-3: New USB device found, idVendor=2040, idProduct=7200
usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=10
usb 1-3: Product: WinTV HVR-950
usb 1-3: Manufacturer: Hauppauge
usb 1-3: SerialNumber: 000000000
xc5000: waiting for firmware upload (dvb-fe-xc5000-1.1.fw)...
firmware: requesting dvb-fe-xc5000-1.1.fw
xc5000: firmware read 12332 bytes.
xc5000: firmware upload

Connect the WinTV to a good antenna. Then download some tools (using your distribution installer: yum, apt-get, etc):

yum install dvb-apps mplayer

Then scan your ATSC channels. For example, to scan ATSC channels in US do

scandvb /usr/share/dvb-apps/atsc/us-ATSC-center-frequencies-8VSB > channels.conf

Then copy the file channels.conf to the directory .mplayer/ and test it on of one of the channels listed in channels.conf. For example, if you have a channel called KERA-HD, you do:

mplayer dvb://'KERA-HD'

In my case, for a 1080i broadcast, I had to use the following parameters:

mplayer dvb://'KERA-HD' -vo x11 -framedrop 1 

because of my slow video and audio cards.

Useful Scripts

Instead of using special software for TIVO-like recording (such as MythTV), I use simple scripts. I first created a file in my bin directory, called favorites.txt, with mnemonics for my favorite channels listed in channels.conf (these are actual their channel numbers). Example:

4 KDFW DT
5 KXAS-HD
11 KTVT-DT
13 KERA-HD

and use the following script, called tape, in my bin directory:

#!/bin/sh
ext=`date +'%m-%d-%H-%M-%S'`
tapeit='/tmp/tapeit-'${ext}
stopit='/tmp/stopit'
file='~/Videos/'${ext}'-'$1
pat='s/^'$1' //p;d'
chan=`sed "${pat}" ~/bin/favorites.txt`
if [ "${chan}" == "" ]; then echo "Valid channels:"; cat ~/bin/channels.txt; exit; fi
echo "azap -r -c ~/channels.conf '${chan}' > /dev/null & cat /dev/dvb/adapter0/dvr0 > ${file}" > ${tapeit}
echo 'killall -q azap cat' > ${stopit}
if [ "$2" = "now" ]; then sh ${tapeit}; else at -f ${tapeit} $2; fi
if [ -z "$3" ]; then at -f ${stopit} now + 1 hour; else at -f ${stopit} $3; fi

For example, to tape something on KDFW-DT (channel 5) between 5pm and 6pm you execute:

tape 4 5pm 6pm

(note that for 1080i, you will need 6GB/hour). The result will be written in the directory Video under a name that contains date/time/channel. Then you can use mplayer to watch this file.