Hauppauge PVR-500

From MythTV Official Wiki
Revision as of 03:15, 28 September 2010 by Wagnerrp (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Warning.png Warning: This page has been locked and archived on September 27, 2010. The official documentation for this card can be found at WinTV-PVR-500. This page remains as there is significant information herein not included in the official documentation. Please migrate any such information to the proper location.


Hauppauge PVR-500 MCE
Vendors Website http://hauppage.com/pages/products/data_pvr500mce.html
Input Formats Coax/RF, Composite, S-Video, stereo RCA audio
Support Status Fully supported by MythTV through Video4Linux
Driver IvTV 0.4.0 or newer. ** 0.4.2 is required if you have Samsung tuners **
Sound Driver not applicable
Chipset Conexant cx2341x


Description

The Hauppauge PVR-500 is PCI-based video tuner card which features hardware-accellerated video and audio compression. Technically the card is functionally identical to two PVR-150 cards on their own PCI bridge in one socket, and requiring only one coaxial connection for both tuners due to an internal signal splitter.

The card was marketed almost exclusively at OEMs and system builders and may or may not feature an "MCE" designation in it's packaging. While there remains only one catalog number for the NTSC version of this card, Hauppauge did make several slightly different revisions of both NTSC and PAL/SECAM models of the PVR-500.

There were at least 3 different tuners used in the various revisions of the PVR-500. Some say that Philips tuner inside the older models has a better quality.

  • Hauppauge WinTV-PVR 500 type A - Philips FQ1216AME MK4 TV tuner
  • Hauppauge WinTV-PVR 500 type B - Philips FQ1236A MK4 TV tuner
  • Hauppauge WinTV-PVR 500 type C - Samsung TCPG 6121P30A TV tuner

One notable exception to the apparent "two of everything" behind this card, only the first tuner's FM tuner is usable for recieving terrestrial FM broadcast radio. For obvious reasons if your revision of the card supports an IR reciever or transmitter, there will only be one of each. Additionally, the US version of the card has a dbx-TV stereo audio decoder, while the European version of the card has a Nicam stereo audio decoder. As this card records OTA (over-the-air) analog video it is technically obsolete in the United States, however there exist separate PAL and NTSC versions of this card. Be sure the one you obtain is the correct one for your region.

All known versions of the PVR-150 are handled by the same version of the IVTV driver, now a part of the Video4Linux subsystem found in the 2.6.x Linux kernels.

Important.png Note: Hauppauge no longer ships any of the analog only (PVR) cards due to pressure from FCC.

Installation

The IVTV project developed a driver for this and the other Hauppauge PVR-xx0 cards which has become a part of the Video4Linux project and is now incorporated into the normal Linux kernel.

You will need a 2.6.x kernel (2.6.22 or newer recommended) to make this card work properly.

Installation guides for IVTV

Webpage.png - Generic Howto on ivtvdriver.org (don't forget the ivtv firmware)

Distribution specific guides

Wikipage.png - Debian Etch mythTV wiki page

Wikipage.png - openSUSE 10.2 mythTV wiki page

Wikipage.png - openSUSE 10.3 mythTV wiki page

Troubleshoot Tips

Check the IVTV console output with dmesg

The output of the `dmesg` command should look like the following (used `egrep` to filter IVTV messages only)

dmesg | egrep -i '(ivtv|tveeprom|tuner)'
ivtv:  ==================== START INIT IVTV ====================
ivtv:  version 0.10.1 (tagged release) loading
ivtv:  Linux version: 2.6.18.7 preempt mod_unload K7 gcc-4.1
ivtv:  In case of problems please include the debug info between
ivtv:  the START INIT IVTV and END INIT IVTV lines, along with
ivtv:  any module options, when mailing the ivtv-users mailinglist.
ivtv0: Autodetected Hauppauge card (cx23416 based)
ivtv0: loaded v4l-cx2341x-enc.fw firmware (376836 bytes)
ivtv0: Encoder revision: 0x02060039
tveeprom 0-0050: Hauppauge model 23559, rev E696, serial# 9934323
tveeprom 0-0050: tuner model is Samsung TCPG 6121P30A (idx 96, type 73)
tveeprom 0-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) (eeprom 0x74)
tveeprom 0-0050: second tuner model is Philips TEA5768HL FM Radio (idx 101, type 62)
tveeprom 0-0050: audio processor is CX25843 (idx 37)
tveeprom 0-0050: decoder processor is CX25843 (idx 30)
tveeprom 0-0050: has radio, has no IR remote
ivtv0: Autodetected WinTV PVR 500 (unit #1)
tuner 0-0043: chip found @ 0x86 (ivtv i2c driver #0)
tda9887 0-0043: tda988[5/6/7] found @ 0x43 (tuner)
tuner 0-0060: TEA5767 detected.
tuner 0-0060: chip found @ 0xc0 (ivtv i2c driver #0)
tuner 0-0060: type set to 62 (Philips TEA5767HN FM Radio)
tuner 0-0061: chip found @ 0xc2 (ivtv i2c driver #0)
cx25840 0-0044: cx25843-23 found @ 0x88 (ivtv i2c driver #0)
wm8775 0-001b: chip found @ 0x36 (ivtv i2c driver #0)
ivtv0: Registered device video0 for encoder MPEG (4 MB)
ivtv0: Registered device video32 for encoder YUV (2 MB)
ivtv0: Registered device vbi0 for encoder VBI (1 MB)
ivtv0: Registered device video24 for encoder PCM audio (1 MB)
ivtv0: Registered device radio0 for encoder radio
tuner 0-0061: type set to 73 (Samsung TCPG 6121P30A)
ivtv0: Initialized WinTV PVR 500 (unit #1), card #0
ivtv:  ======================  NEXT CARD  ======================
ivtv1: Autodetected Hauppauge card (cx23416 based)
ivtv1: loaded v4l-cx2341x-enc.fw firmware (376836 bytes)
ivtv1: Encoder revision: 0x02060039
tuner 1-0043: chip found @ 0x86 (ivtv i2c driver #1)
tda9887 1-0043: tda988[5/6/7] found @ 0x43 (tuner)
tuner 1-0061: chip found @ 0xc2 (ivtv i2c driver #1)
cx25840 1-0044: cx25843-23 found @ 0x88 (ivtv i2c driver #1)
wm8775 1-001b: chip found @ 0x36 (ivtv i2c driver #1)
tveeprom 1-0050: Hauppauge model 23559, rev E696, serial# 9934323
tveeprom 1-0050: tuner model is Samsung TCPG 6121P30A (idx 96, type 73)
tveeprom 1-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) (eeprom 0x74)
tveeprom 1-0050: second tuner model is Philips TEA5768HL FM Radio (idx 101, type 62)
tveeprom 1-0050: audio processor is CX25843 (idx 37)
tveeprom 1-0050: decoder processor is CX25843 (idx 30)
tveeprom 1-0050: has radio, has no IR remote
ivtv1: Correcting tveeprom data: no radio present on second unit
ivtv1: Autodetected WinTV PVR 500 (unit #2)
ivtv1: Registered device video1 for encoder MPEG (4 MB)
ivtv1: Registered device video33 for encoder YUV (2 MB)
ivtv1: Registered device vbi1 for encoder VBI (1 MB)
ivtv1: Registered device video25 for encoder PCM audio (1 MB)
tuner 1-0061: type set to 73 (Samsung TCPG 6121P30A)
ivtv1: Initialized WinTV PVR 500 (unit #2), card #1
ivtv:  ====================  END INIT IVTV  ====================

Check your IVTV version

To check what version is installed, issue the command:

rpm -qa | grep ivtv

Your output should look something like:

ivtv-kmp-default-0.10.3
ivtv-0.10.3


Check on http://ivtvdriver.org if you have the correct version for your kernel/hardware.

Check video devices

8.) Check if the video devices are available to the system:

ls /dev/vi* -l

Your output should look something like this example:

lrwxrwxrwx 1 root root 6 Dec 29 06:27 /dev/video -> video0
crw-rw----+ 1 root video 81, 0 Dec 29 06:27 /dev/video0
crw-rw----+ 1 root video 81, 1 Dec 29 06:27 /dev/video1
crw-rw----+ 1 root video 81, 24 Dec 29 06:27 /dev/video24
crw-rw----+ 1 root video 81, 25 Dec 29 06:27 /dev/video25
crw-rw----+ 1 root video 81, 32 Dec 29 06:27 /dev/video32
crw-rw----+ 1 root video 81, 33 Dec 29 06:27 /dev/video33

Here is what each device corresponds to in this case:

Tuner unit #1: - For your info

/dev/video0 – The encoding capture device (Read-only)
/dev/video24 – The raw audio capture device (Read-only)
/dev/video32 – The raw video capture device (Read-only)
/dev/radio – The radio tuner device
/dev/vbi0 – The "vertical blank interval" (Teletext) capture device


Tuner unit #2: - For your info

/dev/video1 – The encoding capture device (Read-only)
/dev/video25 – The raw audio capture device (Read-only)
/dev/video33 – The raw video capture device (Read-only)
/dev/vbi1 – The "vertical blank interval" (Teletext) capture device

mythtv-setup, define 2 x PVR150

Select new Capture Card and configure the first card as a hardware MPEG-2 device like the PVR150 (Remember the PVR-500 is dual PVR-150's so you will need to configure two capture cards. The two cards will have the same tuner (which may be called tuner0 or tuner1, depending on your version of mythtv), but different devices (e.g. /dev/video0 and /dev/video1).


If you are lost; here are some screenshots of mythtv-setup for a PVR-500 in the Netherlands.

Common problems and solutions

Driver refuses to load for mysterious reasons

Under certain memory configurations on 32-bit platforms, using this card's driver and some other drivers (usually but not exclusively nVidia's proprietary driver) at the same time requires more of a particular type of address space allocated than the kernel will allocate by default. If you experience the driver refusing to load for no obvious reason, check the output of `dmesg`. If you see either of the two following messages appear, you will need to go to Common Problem: vmalloc too small to learn how to apply a very small kernel configuration change which requires one reboot.

The messages to look for:

allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.
cx18-1: ioremap failed, perhaps increasing __VMALLOC_RESERVE in page.h

Kernel Recommendations

You need a 2.6.x kernel to make this card work properly. The drivers which work with the 2.4 kernel, even patched, are old and can no longer be expected to work reliably with MythTV 0.22 or newer. Using a kernel 2.6.29 or newer is highly recommended as this brings the kernel driver up to speed with the last release of the userspace tools (ivtv 0.4.0). Reports that you need to compile ivtv yourself outside the kernel tree can be considered old/obsolete information, as the ivtv driver itself completed the move into the kernel around version 2.6.26.

Spontaneous Reboots

Do not attempt to enable pre-emptive kernel locks in your kernel configuration--the ivtv modules do not get along with them and will cause spontaneous reboots.

Signal Strength Warning

Your cable feed usually only has enough drive power for 2 or 3 TV sets. If you're driving a large number of devices, you may need an RF Amplifier to boost signal strength. Conversely, your house cable may be supplying too much power to the PVR 500. Ivtv developers have noted that the Samsung tuners used in later PVR 500s are rather sensitive and will show a grainy picture if supplied with too high a signal level. In this case you must reduce signal strength by either inserting a 'pad' (a resistor) between the PVR and the cable, or if your house has a cable amplifier, by reducing the gain on the amplifier.

Outdated Repository

Additionally, installing current firmware and PVR150/500 specific audio firmware from the ATrpms repo using Jarod's:

 yum install ivtv-firmware
 yum install ivtv-firmware-audio

does not provide you with the latest and greatest recommended firmware as the folks at ivtvdriver.org suggest.

While most of the people will ignore the ivtv warnings displayed by using:

  /bin/dmesg | grep ivtv

related to buggy firmware... it becomes a big problem when you use the PVR500 in conjunction with the PVR350. (Presumably this happens with the use of PVR150 and PVR250s too, but I can't confirm that.)

Symptons include loss of audio on both the PVR500 tuners and inability to change channels. The PVR350(s) will work fine though. Follow the ivtvdriver.org people's advice and download, extract, and install the recommended firmware.

Motherboard Incompatibility

Those of you with the ASUS A8V board will be disappointed to know that there appears to be no way to get this board to work with a PVR-500 if you are using the AGP port. The PVR-500 has its own PCI bridge and the AGP port on the motherboard is also on a PCI bridge, and the second PCI bridge fatally confuses the BIOS when it goes to initialize the hardware for booting after the system inventory screen. The recommended (and only known) workaround is simply to replace your AGP video card with a PCI video card. One might also trade in the PVR-500 for a pair of PVR-150's, but since the PVR-500 costs more than a new motherboard that doesn't make much financial sense (cheaper to buy a different mainboard). Some other ASUS A8V-xx models are also affected by this bug, but can be made to work with a BIOS update. For other uses the ASUS A8V is a fairly nice board, and the PVR-500 is a fairly nice card, the board is just flawed in a way that makes it impossible to use anything with its own PCI bridge.

Audio Instability

There appear to be well-known and repeatable audio quality problems (everywhere you google) about Hauppauge PVR-xxx cards and MythTv. From weeks of Googling for help and testing combinations of IVTV drivers, Myth versions, kernel versions, hardware settings etc., I've come to the conclusion that Myth does not cleanly set (and reset) the audio channel on channel change, or system startup. ivtvctrl -q0 -d0, ivtvctrl -q0 -d1 repeated a couple of times temporarily corrects the audio problems (until next channel change). The problems may be timing-related in the API between MythTv and IVTV. I will be looking into the source to investigate the API issues between IVTV and MythTv. I'll post results. Currently running MythTV 0.20, ivtv 0.4.7, kernel (Ubuntu Dapper) 2.6.15-27-amd64-generic, PVR-500, Nvidia GeForce etc. No dmesg problems reported, no logged mythtv problems, no logged ivtv problems (ivtvctrl -D 99). To the software things look okay - to the listener, audio is clobbered.

More recent versions of ivtvctrl do not provide for the "-q X" option, and running the above commands will therefore return the usage screen and do nothing. The functionality has been moved to the v4l2-ctl program. A workaround that has been successful in some cases is to set the audio source to one where there is no audio, and then set it back to the source where the audio actually is. Assuming that the video capture device is /dev/video2 the following code would set the audio source to 0 and then back to 1:

v4l2-ctl -d 2 --set-audio-source=0; v4l2-ctl -d 2 --set-audio-source=1

As of ivtv-utils 1.2.0, the command is now --set-audio-input=0

As of this writing, the latest iteration of my channel changer is to change the channel on the STB and immediately change the audio input to one where there is no sound, and a few seconds later come along and change the audio input back to one where there the sound exists. Here is a sample perl script that does this with the directv.pl script. Of course adding logging, debugging, and error checking is a good idea. (The reason for the "fork" is to let MythTV believe the channel is tuned, and then "turn on" the sound once MythTV is capturing the feed and the set top box has actually tuned the channel.)

#!/usr/bin/perl
system "directv.pl port /dev/ttyS0 $ARGV[0]";
system "v4l2-ctl -d 2 --set-audio-source=2";
my $pid = fork;
if ($pid == 0) {
  sleep 3;
  system "v4l2-ctl -d 2 --set-audio-source=1";
  exit(0);
}

Unreasonably low latency

The following files in /var/log may contain a message "Unreasonably low latency" from ivtv:

/var/log/debug
/var/log/dmesg
/var/log/kern.log
/var/log/messages
/var/log/syslog

If you find such messages you should probably read the page on PCI Latency


No sound on first recording

I had the problem that the first time mythtv tunes to a channel (live-tv and recording) sound is not working. Changing channels fixed the sound. I had this problem with ivtv 0.4.1 and 0.4.2. After some help from the mailing list, I found out that executing

ivtvctl -d /dev/video0 -q 0

fixes the sound. I don't know what this command does. However, I had to manually issue this each time I tuned the first time with a tuner. If I execute ivtvctl a second time, I get a sound hickup. So only execute this command once if a tuner is recording. To ease my life, I created this script:

  #!/bin/sh
  # Some variables used to remember if the device is in use or not
  record_video0=NO
  record_video1=NO
  # Loop forever
  while true
  do
     # Is the video device in use ?
     fuser /dev/video0 2>/dev/null >/dev/null
     if [ $? -eq 0 ]
     then
        # Something is using video device and this is the first time we notice this
        if [[ "$record_video0" = "NO" ]]
        then
           date
           echo "   recording on video0"
           ivtvctl -d /dev/video0 -q 0
           echo
        fi
        record_video0=YES
     else
        # Not recording
        if [[ "$record_video0" = "YES" ]]
        then
           date
           echo "   not recording anymore on video0"
           echo
        fi
        record_video0=NO
     fi
     # Do the same for the other device .......
     fuser /dev/video1 2>/dev/null >/dev/null
     if [ $? -eq 0 ]
     then
        if [[ "$record_video1" = "NO" ]]
        then
           date
           echo "   recording on video1"
           ivtvctl -d /dev/video1 -q 0
           echo
        fi
        record_video1=YES
     else
        if [[ "$record_video1" = "YES" ]]
        then
           date
           echo "   not recording anymore on video1"
           echo
        fi
        record_video1=NO
     fi
     sleep 1
  done

Only one coax input

Despite having two TV tuners, the PVR-500 has only one coax TV input. The card has two coax connectors, but only one feeds both TV tuners, using an internal splitter; the other allows connection of an FM radio antenna. Thus, the PVR-500 will allow recording two programs via coax from the same underlying source, but will not support two independent coax video sources. For instance, you cannot attach two cable boxes via coax and record independent programs; you must connect at least one cable box via RCA cables.