Hauppauge WinTV-HVR-1110: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
No edit summary
 
(33 intermediate revisions by 11 users not shown)
Line 1: Line 1:
[[Image:HVR-1110.jpg|thumb|250px|WinTV-HVR-1110]]
[[Image:HVR-1110.jpg|thumb|250px|WinTV-HVR-1110]]
The [[Hauppauge]] WinTV-HVR-1110 is a hybrid receiver card (analog and DVB-T).
The [[Hauppauge]] WinTV-HVR-1110 is a [[hybrid]] [[analog TV|analog]] and [[DVB-T]] [[DVB-T PCI Cards|PCI card]] that sometimes ships in a [[Hauppauge WinTV-HVR-1100|HVR-1100]] box.


It sometimes ships in a [[Hauppauge WinTV-HVR-1100|HVR-1100]] box. The HVR-1110, however, is of triangular shape, while the HVR-1100 board is a typical rectangular shaped card. There are significant component differences too. See [http://www.hauppauge.co.uk/board/showthread.php?p=40031 here for more details].
The HVR-1110, however, is of triangular shape, while the HVR-1100 board is a typical rectangular shaped card.


There are significant component differences between the HVR-1100 and the HVR-1110:
The HRV-1110 uses the following components:

===Tuner:===
* HVR-1100 - Philips FMD1216ME MK3 hybrid
* HVR-1110 - Unknown

===Video Decoder/PCI Interface:===
* HVR-1100 - Conexant CX23880/881/882
* HVR-1110 - Philips SAA7131

===Demodulator:===
* HVR-1100 - Conexant CX22702
* HVR-1110 - Philips TDA10046

The latest version of the card is called [[Hauppauge WinTV-HVR-1120|WinTV-HVR-1120]] under Linux.

==Overview/Features==

===Components Used===
* a [[Philips SAA7134|Philips SAA7131]] A/V decoder & bridge
* a [[Philips SAA7134|Philips SAA7131]] A/V decoder & bridge
* a [[Philips TDA10046]] digital demodulator
* an [[NXP Semiconductors|NXP]] [[NXP TDA1004x#TDA10046|TDA10046]] digital demodulator

<br>
===Other Images===


===Identification===

==Installing the HVR-1110 to Work Under Ubuntu 14.04.05 LTS (Trusty Tahr)==

===1. Turn the machine off.===


===2. Physically install the WinTV HVR-1110 PCI card in the machine.===


===3. Turn the machine on.===


===4. Check to see if the saa7134 driver has been properly loaded, by issuing the following command:===

$ sudo modprobe -r saa7134
modprobe: FATAL: Module saa7134 is in use.

This error message indicates that the module has already been loaded (and cannot be re-loaded), indicating that the module is available.

Issue the following command to validate that the WinTV HVR-1110 card has been registered as a device:

$ sudo dmesg | grep "saa"
[ 25.932079] saa7134 0000:03:02.0: DVB: registering adapter 0 frontend 0 (Philips TDA10046H DVB-T)...

This means that the WinTV card has been registered with the Linux system as device hw:0,0

You may also want to issue the following command to verify that the dvb device now exists in the /dev directory, also indicating the saa7134 driver has been successfully loaded.

$ ls /dev/dvb
adapter0


===5. Enable the saa7134 driver to load the firmware file needed to program its DSP Chip (/lib/firmware/dvb-fe-tda10045.fw)===

Issue the following command to obtain and install the correct firmware file for the WinTV HVR-1110:

$ sudo apt-get install linux-firmware-nonfree


===6. Verify that the dvb-fe-tda10045.fw file has been successfully loaded===

$ sudo dmesg | grep "tda1004x"
[ 26.020071] tda1004x: setting up plls for 48MHz sampling clock
[ 26.332041] tda1004x: found firmware revision 20 -- ok


At this point the installation of the WinTV HVR-1110 should be finished and the card ready for use.

Possible applications: mythtv, ffmpeg


==Installing the HVR-1110 to Work Under Fedora Core 6==
==Installing the HVR-1110 to Work Under Fedora Core 6==
The Howto applies to a x86_64 architecture running Fedora Core 6 and kernel 2.6.20-1.2933.fc6.
The Howto applies to a x86_64 architecture running Fedora Core 6 and kernel 2.6.20-1.2933.fc6.
====Installing the [[Philips SAA7134|SAA7134]] Driver====
====Installing the [[Philips SAA7134|SAA7134]] Driver====
The analog tuner of the HVR-1110 runs out of the box. The kernel moduls are already included in the 2.6.20 kernel. No driver installation is required. Look out for something like
The analog tuner of the HVR-1110 runs out of the box. The kernel modules are already included in the 2.6.20 kernel. No driver installation is required. Look out for something like
kernel: saa7130/34: v4l2 driver version 0.2.14 loaded
kernel: saa7130/34: v4l2 driver version 0.2.14 loaded
in the /var/log/messages to make sure the driver is loaded.
in the /var/log/messages to make sure the driver is loaded.
Line 32: Line 105:


====Installing the Firmware====
====Installing the Firmware====
This card requires a firmware file (dvb-fe-tda10046.fw) for the demodulator, which can be obtained using the get_dvb_firmware perl script included in the kernel sources:
Additionally to the kernel module the firmware has to be installed. In order to do that use get_dvb_firmware, which is this perl script:
# cd /[kernel source directory]/scripts/
# perl get_dvb_firmware tda10046


Once the download is complete, place a copy of the firmware file in your /lib/firmware directory. (This directory may differ with some distros; consult your distro's documentation for the appropriate location).


#!/usr/bin/perl
# DVB firmware extractor
#
# (c) 2004 Andrew de Quincey
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# -----------------------------------------------------------------------
#
# Updated by Doctor Jekyll - 06-10-2007
#
# -----------------------------------------------------------------------
#
# 06-10-2007 - Doctor Jekyll
#
# Update technotrend dvb (Url and sourcefile)
#
use File::Temp qw/ tempdir /;
use IO::Handle;
@components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t", "dec2540t", "dec3000s", "vp7041", "dibusb" );
# Check args
syntax() if (scalar(@ARGV) != 1);
$cid = $ARGV[0];
# Do it!
for($i=0; $i < scalar(@components); $i++) {
if ($cid eq $components[$i]) {
$outfile = eval($cid);
die $@ if $@;
print STDERR "Firmware $outfile extracted successfully. Now copy it to either /lib/firmware or /usr/lib/hotplug/firmware/ (depending on your hotplug version).\n";
exit(0);
}
}
# If we get here, it wasn't found
print STDERR "Unknown component \"$cid\"\n";
syntax();
# ---------------------------------------------------------------
# Firmware-specific extraction subroutines
sub sp8870 {
my $sourcefile = "tt-premium_219h.zip";
my $url = "http://technotrend-online.com/download/software/219/$sourcefile";
my $hash = "53970ec17a538945a6d8cb608a7b3899";
my $outfile = "dvb-fe-sp8870.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
verify("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $hash);
copy("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $outfile);
$outfile;
}
sub sp887x {
my $sourcefile = "Dvbt1.3.57.6.zip";
my $url = "http://www.avermedia.com/software/$sourcefile";
my $cabfile = "DVBT Net Ver1.3.57.6/disk1/data1.cab";
my $hash = "237938d53a7f834c05c42b894ca68ac3";
my $outfile = "dvb-fe-sp887x.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
checkunshield();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
unshield("$tmpdir/$cabfile", $tmpdir);
verify("$tmpdir/sc_main.mc", $hash);
copy("$tmpdir/sc_main.mc", $outfile);
$outfile;
}
sub tda10045 {
my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip";
my $url = "http://technotrend-online.com/download/software/219/$sourcefile";
my $hash = "6a7e1e2f2644b162ff0502367553c72d";
my $outfile = "dvb-fe-tda10045.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
extract("$tmpdir/TT_PCI_2.19h_28_11_2006/software/OEM/PCI/App/ttlcdacc.dll", 0x65389, 24478, "$tmpdir/fwtmp");
verify("$tmpdir/fwtmp", $hash);
copy("$tmpdir/fwtmp", $outfile);
$outfile;
}
sub tda10046 {
my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip";
my $url = "http://technotrend-online.com/download/software/219/$sourcefile";
my $hash = "6a7e1e2f2644b162ff0502367553c72d";
my $outfile = "dvb-fe-tda10046.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
extract("$tmpdir/TT_PCI_2.19h_28_11_2006/software/OEM/PCI/App/ttlcdacc.dll", 0x65389, 24478, "$tmpdir/fwtmp");
verify("$tmpdir/fwtmp", $hash);
copy("$tmpdir/fwtmp", $outfile);
$outfile;
}
sub av7110 {
my $sourcefile = "dvb-ttpci-01.fw-261c";
my $url = "http://www.linuxtv.org/download/dvb/firmware/$sourcefile";
my $hash = "7b263de6b0b92d2347319c65adc7d4fb";
my $outfile = "dvb-ttpci-01.fw";
checkstandard();
wgetfile($sourcefile, $url);
verify($sourcefile, $hash);
copy($sourcefile, $outfile);
$outfile;
}
sub dec2000t {
my $sourcefile = "dec217g.exe";
my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
my $hash = "bd86f458cee4a8f0a8ce2d20c66215a9";
my $outfile = "dvb-ttusb-dec-2000t.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $hash);
copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $outfile);
$outfile;
}
sub dec2540t {
my $sourcefile = "dec217g.exe";
my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
my $hash = "53e58f4f5b5c2930beee74a7681fed92";
my $outfile = "dvb-ttusb-dec-2540t.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $hash);
copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $outfile);
$outfile;
}
sub dec3000s {
my $sourcefile = "dec217g.exe";
my $url = "http://hauppauge.lightpath.net/de/$sourcefile";
my $hash = "b013ececea83f4d6d8d2a29ac7c1b448";
my $outfile = "dvb-ttusb-dec-3000s.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $hash);
copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $outfile);
$outfile;
}
sub vp7041 {
my $sourcefile = "2.422.zip";
my $url = "http://www.twinhan.com/files/driver/USB-Ter/$sourcefile";
my $hash = "e88c9372d1f66609a3e7b072c53fbcfe";
my $outfile = "dvb-vp7041-2.422.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 12503, 3036, "$tmpdir/fwtmp1");
extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 2207, 10274, "$tmpdir/fwtmp2");
my $CMD = "\000\001\000\222\177\000";
my $PAD = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";
my ($FW);
open $FW, ">$tmpdir/fwtmp3";
print $FW "$CMD\001$PAD";
print $FW "$CMD\001$PAD";
appendfile($FW, "$tmpdir/fwtmp1");
print $FW "$CMD\000$PAD";
print $FW "$CMD\001$PAD";
appendfile($FW, "$tmpdir/fwtmp2");
print $FW "$CMD\001$PAD";
print $FW "$CMD\000$PAD";
close($FW);
verify("$tmpdir/fwtmp3", $hash);
copy("$tmpdir/fwtmp3", $outfile);
$outfile;
}
sub dibusb {
my $url = "http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-5.0.0.11.fw?rev=1.1&content-type=text/plain";
my $outfile = "dvb-dibusb-5.0.0.11.fw";
my $hash = "fa490295a527360ca16dcdf3224ca243";
checkstandard();
wgetfile($outfile, $url);
verify($outfile,$hash);
$outfile;
}
# ---------------------------------------------------------------
# Utilities
sub checkstandard {
if (system("which unzip > /dev/null 2>&1")) {
die "This firmware requires the unzip command - see ftp://ftp.info-zip.org/pub/infozip/UnZip.html\n";
}
if (system("which md5sum > /dev/null 2>&1")) {
die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n";
}
if (system("which wget > /dev/null 2>&1")) {
die "This firmware requires the wget command - see http://wget.sunsite.dk/\n";
}
}
sub checkunshield {
if (system("which unshield > /dev/null 2>&1")) {
die "This firmware requires the unshield command - see http://sourceforge.net/projects/synce/\n";
}
}
sub wgetfile {
my ($sourcefile, $url) = @_;
if (! -f $sourcefile) {
system("wget -O \"$sourcefile\" \"$url\"") and die "wget failed - unable to download firmware";
}
}
sub unzip {
my ($sourcefile, $todir) = @_;
$status = system("unzip -q -o -d \"$todir\" \"$sourcefile\" 2>/dev/null" );
if ((($status >> 8) > 2) || (($status & 0xff) != 0)) {
die ("unzip failed - unable to extract firmware");
}
}
sub unshield {
my ($sourcefile, $todir) = @_;
system("unshield -d \"$todir\" \"$sourcefile\" > /dev/null" ) and die ("unshield failed - unable to extract firmware");
}
sub verify {
my ($filename, $hash) = @_;
my ($testhash);
open(CMD, "md5sum \"$filename\"|");
$testhash = <CMD>;
$testhash =~ /([a-zA-Z0-9]*)/;
$testhash = $1;
close CMD;
die "Hash of extracted file does not match!\n" if ($testhash ne $hash);
}
sub copy {
my ($from, $to) = @_;
system("cp -f \"$from\" \"$to\"") and die ("cp failed");
}
sub extract {
my ($infile, $offset, $length, $outfile) = @_;
my ($chunklength, $buf, $rcount);
open INFILE, "<$infile";
open OUTFILE, ">$outfile";
sysseek(INFILE, $offset, SEEK_SET);
while($length > 0) {
# Calc chunk size
$chunklength = 2048;
$chunklength = $length if ($chunklength > $length);
$rcount = sysread(INFILE, $buf, $chunklength);
die "Ran out of data\n" if ($rcount != $chunklength);
syswrite(OUTFILE, $buf);
$length -= $rcount;
}
close INFILE;
close OUTFILE;
}
sub appendfile {
my ($FH, $infile) = @_;
my ($buf);
open INFILE, "<$infile";
while(1) {
$rcount = sysread(INFILE, $buf, 2048);
last if ($rcount == 0);
print $FH $buf;
}
close(INFILE);
}
sub syntax() {
print STDERR "syntax: get_dvb_firmware <component>\n";
print STDERR "Supported components:\n";
for($i=0; $i < scalar(@components); $i++) {
print STDERR "\t" . $components[$i] . "\n";
}
exit(1);
}


Download the firmware by issuing the command (this assumes that get_dvb_firmware resides in /usr/bin)
/usr/bin/get_dvb_firmware tda10046
This downloads and extracts the file dvb-fe-tda10046.fw automatically. All that needs to be done now is to copy that file into
/lib/firmware


====Making the Modules Load into the Kernel at Startup====
====Making the Modules Load into the Kernel at Startup====
Line 407: Line 127:
===Next Step===
===Next Step===
The next step is to create a channels.conf. To this end follow the link [[Testing your DVB device]]
The next step is to create a channels.conf. To this end follow the link [[Testing your DVB device]]

===Notes===

The HVR-1110 requires http://linuxtv.org/hg/v4l-dvb/rev/40d58d92d183 for Audio in (S-Video and Composite) and Radio support. Sound redirect (sox or arecord) is required if you use Tvtime or Xawtv, Mplayer,Mythtv can use the sound directly. For more details about redirection see [[Saa7134-alsa#ALSA_audio_with_other_applications|Saa7134-alsa]].

==Installing the HVR-1110 to Work Under Gentoo==

For the sake of completes, here are the [http://en.gentoo-wiki.com/wiki/Saa7134 installation instructions for Gentoo].
[[Category:DVB-T PCI Cards]]

Latest revision as of 06:09, 13 March 2017

WinTV-HVR-1110

The Hauppauge WinTV-HVR-1110 is a hybrid analog and DVB-T PCI card that sometimes ships in a HVR-1100 box.

The HVR-1110, however, is of triangular shape, while the HVR-1100 board is a typical rectangular shaped card.

There are significant component differences between the HVR-1100 and the HVR-1110:

Tuner:

  • HVR-1100 - Philips FMD1216ME MK3 hybrid
  • HVR-1110 - Unknown

Video Decoder/PCI Interface:

  • HVR-1100 - Conexant CX23880/881/882
  • HVR-1110 - Philips SAA7131

Demodulator:

  • HVR-1100 - Conexant CX22702
  • HVR-1110 - Philips TDA10046

The latest version of the card is called WinTV-HVR-1120 under Linux.

Overview/Features

Components Used

Other Images

Identification

Installing the HVR-1110 to Work Under Ubuntu 14.04.05 LTS (Trusty Tahr)

1. Turn the machine off.

2. Physically install the WinTV HVR-1110 PCI card in the machine.

3. Turn the machine on.

4. Check to see if the saa7134 driver has been properly loaded, by issuing the following command:

 $ sudo modprobe -r saa7134
 modprobe: FATAL: Module saa7134 is in use.

This error message indicates that the module has already been loaded (and cannot be re-loaded), indicating that the module is available.

Issue the following command to validate that the WinTV HVR-1110 card has been registered as a device:

 $ sudo dmesg | grep "saa"
 [   25.932079] saa7134 0000:03:02.0: DVB: registering adapter 0 frontend 0 (Philips TDA10046H DVB-T)... 

This means that the WinTV card has been registered with the Linux system as device hw:0,0

You may also want to issue the following command to verify that the dvb device now exists in the /dev directory, also indicating the saa7134 driver has been successfully loaded.

 $ ls /dev/dvb
 adapter0


5. Enable the saa7134 driver to load the firmware file needed to program its DSP Chip (/lib/firmware/dvb-fe-tda10045.fw)

Issue the following command to obtain and install the correct firmware file for the WinTV HVR-1110:

 $ sudo apt-get install linux-firmware-nonfree


6. Verify that the dvb-fe-tda10045.fw file has been successfully loaded

 $ sudo dmesg | grep "tda1004x"
 [   26.020071] tda1004x: setting up plls for 48MHz sampling clock
 [   26.332041] tda1004x: found firmware revision 20 -- ok  


At this point the installation of the WinTV HVR-1110 should be finished and the card ready for use.

Possible applications: mythtv, ffmpeg


Installing the HVR-1110 to Work Under Fedora Core 6

The Howto applies to a x86_64 architecture running Fedora Core 6 and kernel 2.6.20-1.2933.fc6.

Installing the SAA7134 Driver

The analog tuner of the HVR-1110 runs out of the box. The kernel modules are already included in the 2.6.20 kernel. No driver installation is required. Look out for something like

 kernel: saa7130/34: v4l2 driver version 0.2.14 loaded

in the /var/log/messages to make sure the driver is loaded.

Installing the SAA7134-dvb Modules

In order for the DVB-T to work an additional module, SAA7134-dvb, and the firmware has to be installed. First of all, check whether the module is already installed. Scan through

dmesg

and look out for something like

DVB: registering new adapter (saa7133[0]).
DVB: registering frontend 1 (Philips TDA10046H DVB-T)...

If you find that, than the SAA7134-dvb kernel module is already installed. Please not that in this case the HVR-1110 is the second DVB card registered in the system. You see that since frontend is 1 and not 0. If kernel module is not installed, load it into the kernel like this

modprobe saa7134-dvb.

This should automatically create a folder in /dev:

/dev/dvb/adapterN

where N is an integer. The first dvb card will be numbered starting at N=0, each following card will increase N by one. Issue an

dmesg

command to check whether the kernel module has been loaded. Output should be

DVB: registering new adapter (saa7133[0])
DVB: registering frontend 1 (Philips TDA10046H DVB-T)...

Installing the Firmware

This card requires a firmware file (dvb-fe-tda10046.fw) for the demodulator, which can be obtained using the get_dvb_firmware perl script included in the kernel sources:

# cd /[kernel source directory]/scripts/
# perl get_dvb_firmware tda10046

Once the download is complete, place a copy of the firmware file in your /lib/firmware directory. (This directory may differ with some distros; consult your distro's documentation for the appropriate location).


Making the Modules Load into the Kernel at Startup

In order that the saa7134-svb module gets loaded at startup add following line

install saa7134 /sbin/modprobe  --ignore-install saa7134 && { /sbin/modprobe saa7134-alsa; } && { /sbin/modprobe saa7134-dvb;}

to the modprobe.conf in

/etc/modprobe.conf

Now check whether everything is working as it should. Restart the PC and check the /var/log/messages. Look out for something like:

kernel: DVB: registering new adapter (saa7133[0]).
kernel: DVB: registering frontend 1 (Philips TDA10046H DVB-T)...

telling you the dvb modules got loaded. Please note that in this case the system has two DVB cards. The second one (frontend 1) is the HVR 1110.

kernel: tda1004x: found firmware revision 20 -- ok

tells you that firmware has also been loaded.

Next Step

The next step is to create a channels.conf. To this end follow the link Testing your DVB device

Notes

The HVR-1110 requires http://linuxtv.org/hg/v4l-dvb/rev/40d58d92d183 for Audio in (S-Video and Composite) and Radio support. Sound redirect (sox or arecord) is required if you use Tvtime or Xawtv, Mplayer,Mythtv can use the sound directly. For more details about redirection see Saa7134-alsa.

Installing the HVR-1110 to Work Under Gentoo

For the sake of completes, here are the installation instructions for Gentoo.