I just bought a Hauppauge
PVR-150 MCE (NTSC) from Amazon.com
for about $65. It provides hardware MPEG-2 encoding of analog TV signals
-- i.e., broadcast or most cable systems. It works reasonably well under
Linux, but the process for getting it to work is not well documented yet.
That's where this page comes in -- it's a a run-down of what worked for
me, but not quite a HOWTO. Feedback
is always welcome!
- Product: Hauppauge PVR-150 MCE (NTSC)
- Tuner label: 26552 Rev. B268
- Encoder: CX 23416-12 (iTVC16)
- PCI ID: 4444:0016 (rev 01)
- Tuner: working at 720x480 for all channels; other resolutions do
- Sound: working, good quality
- S-Video: not tested; produces a stable black screen
- Composite: working, good quality
- FM Radio: not tested; is this even supported under Linux?
A vague HOWTO
- Get a 2.6.18 or newer Linux kernel, and configure it to enable the
"Cryptographic API." You'll have an easier time if you do not enable bttv
(i.e., bt-878 drivers), because ivtv wants to use its own tuner and
msp3400 modules. But it's doable.
- Compile, install, and boot said kernel.
- Get the ivtv drivers. I used 0.10.4.
- NB: the 2.6.22 Linux kernel includes the IVTV drivers. For Linux
2.6.22, you should get ivtv-1.0 package, which includes tuning tools,
etc., but not the driver. I haven't tested this yet.
- untar the ivtv drivers. cd ivtv-x.y.z/driver/. make. make
- Depending on your kernel config, ivtv may recommend that you delete
tuner.ko and/or msp3400.ko from your /lib/modules. Do it.
- Get the firmware files recommended by the IVTV
- Extract the video-encoder firmware using utils/ivtvfwextract.pl
- Copy ivtv-fw-enc.bin to /usr/lib/hotplug/firmware/v4l-cx2341x-enc.fw.
Your directory may vary according to distribution. Try grep
FIRMWARE_DIR `locate firmware.agent` for hints.
- Unzip the audio firmware, preferably into its own directory.
- Copy HcwMakoA.ROM to /usr/lib/hotplug/firmware/v4l-cx25840.fw.
- Copy v4l-cx2341x-init.mpg from the ivtv directory to
- modprobe ivtv. I used to use module parameters to set the
tuner type and "no black magic," but they are no longer necessary.
- Check dmesg and see if the module loaded OK. The last few lines will
indicate the ivtv error (e.g., no firmware) if there is one.
- cd to ivtv-x.y.z/utils/ and make ivtvctl. You
should probably copy it to /usr/local/bin.
- Make the appropriate video devices if they do not already exist:
- mknod /dev/video0 c 81 0
- mknod /dev/video1 c 81 1
- You may also want to chgrp them to video or mythtv, chmod them 660
or 666, etc. Make them accessible to the appropriate non-root accounts.
- Now, the card may or may not be tuned. Mine was tuned to channel 4,
so a simple mplayer /dev/video0 got me a signal. You can also
cp /dev/video0 foo.mpg and just hit control+C after a few
seconds. If the card is untuned, you should get static. If it's set to
the wrong input (e.g., s-video), you may get a black screen.
- If you need to switch the inputs, type ivtvctl -d /dev/video0
-n to get a list of the inputs. Find "Tuner 0" (probably #6) and use
ivtvctl -d /dev/video0 -p 6 (or whichever number) to set it.
- If you need to switch channels, find the frequency for the desired
channel. Here is a
list for US cable channels 2 through 125 -- use the "Standard" column.
For example, channel 3 is 61.25 MHz. Multiply the frequency in MHz by 16
-- e.g., channel 3 is 980. Now use ivtvctl -r 980 (or whichever)
to set the channel.
- Once you've set the tuner and the channels, use mplayer or
cp to test your video again.
- Use lspci to make sure Linux found and identified your card.
- Check the output of dmesg to see if there were errors
initializing, tuning, or recording from the card.
- Use ivtvctl -d /dev/video0 -a to see everything ivtv knows
about your card.
- If the card works with mplayer but not MythTV, use ivtvtcl
-a before and after starting mythbackend to see which settings
- Check /var/log/mythtv/mythbackend.log to see if MythTV reports any
- More at the ivtv
Notes and hints
- MPEG-2 needs a high bitrate to look good, particularly if you have a
moderately noisy cable signal. I record at 4.5 Mbps, with a max of 6.0
Mbps. Audio sounds fine at 192 Kbps. You can always transcode later
(even automatically) if you want to save space.