Difference between revisions of "Hauppauge PVR-500"
m (→Introduction: Moved the Capture Card Info section up to the top like hte rest of the pages. Updated as well) |
(→Introduction: People really shouldn't just cut and paste product documentation and press releases. It's tacky. A near-complete rewrite here as well.) |
||
Line 8: | Line 8: | ||
|chipset=Conexant cx2341x | |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 [[Hauppauge PVR-150|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 | + | 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. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= Installation = | = Installation = |
Revision as of 02:32, 25 January 2010
End Of Life: This product is no longer being manufactured and may only be available in limited quantities, if it is available at all.
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.
Installation
The IVTV project develops a kernel driver for Linux and a driver for X11 for hardware based on Conexant's CX23415/CX23416 codec chip such as the Hauppauge PVR 150/250/350/500 models.
You need a 2.6.x kernel (2.6.14 or newer recommended) to make this work properly.
- Download IVTV
- Installation guides for IVTV
- Distribution specific guides
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 PVR150 (Remember the PVR-500 is dual PVR-150's so you will need to configure two capture cards. Since each Capture Card has its own tuner, you will want to select the first tuner for each card which is Tuner0.)
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