Difference between revisions of "Hauppauge HVR-1600"
m (Added minor error handling to tune.sh.) |
(→Issues and Problems) |
||
Line 51: | Line 51: | ||
3. The first analog capture after modprobe experiences dropped frames and/or no audio. All subsequent analog captures are fine. | 3. The first analog capture after modprobe experiences dropped frames and/or no audio. All subsequent analog captures are fine. | ||
− | 4. Unbuffered decoding of live captures (as with mplayer defaults) will | + | 4. Unbuffered decoding of live captures (as with mplayer defaults) will not have smooth playback. Buffered decoding of live captures with MythTV is usually fine. S-Video/CVBS capture has been improved in v1.0.4 (Dec.2008). Check your version using <tt>dmesg | grep "Start initialization"</tt> |
5. Simultaneous analog and digital captures work, but the early v1.0.2 and earlier driver versions intermittently cannot keep up with buffer transfer notifications from the CX23418 and errantly remove buffers from the transfer rotation when this happens. A stream transfer will cease abruptly when enough buffers fall out of rotation. A fix is in work as of 14 Nov 2008. Note the mythbackend will usually keep a TS stream open to scan for EPG data if configured to do so, and that counts as a digital capture as far as the driver is concerned. | 5. Simultaneous analog and digital captures work, but the early v1.0.2 and earlier driver versions intermittently cannot keep up with buffer transfer notifications from the CX23418 and errantly remove buffers from the transfer rotation when this happens. A stream transfer will cease abruptly when enough buffers fall out of rotation. A fix is in work as of 14 Nov 2008. Note the mythbackend will usually keep a TS stream open to scan for EPG data if configured to do so, and that counts as a digital capture as far as the driver is concerned. |
Revision as of 15:19, 24 January 2009
Contents
Hauppauge HVR-1600
Note: The Linux cx18 driver module v1.0.0 may need the mmio_ndelay parameter explicitly set; v1.0.1 should not. See below.
WinTV-HVR-1600 | |
Vendors Website | http://www.hauppauge.com/pages/products/data_hvr1600.html |
Input Formats | not applicable |
Support Status | Works with MythTV 0.21, but not explicitly supported |
Driver | Linux cx18 driver |
Sound Driver | Not needed, the hardware encoder will multiplex the audio with the video stream. |
Chipset | Conexant CX23418 MPEG-2 encoder, and CX24227 ATSC demodulator |
The Hauppauge WinTV-HVR-1600 is a dual tuner ATSC/NTSC capture board by Hauppauge Computer Works. The card is PCI based, and is designed for use in North America where NTSC and ATSC signals are used for television broadcast.
Description
The HVR-1600 is the latest capture card from Hauppauge (pronounced /hɔphɔg/ like the Hamlet on Long Island, New York where the company originated and still resides) Computer Works. The design is made entirely of Conexant chips. The Conexant CX23418 is the TV broadcast decoder, MPEG2 encoder, and host bus interface chip. The CX23418 is the next generation of the CX23416 that was used on the very well supported PVR-150 and PVR-500 series cards, it combines the hardware encoding engine of the CX23416 with a CX25843 broadcast decoder/digitizer core on one chip. The only other chip worth mentioning is the new Conexent CX24227 ATSC demodulator used for digital TV reception. The retail version of the card supports and comes with an IR Blaster and Receiver, as well as a Remote. The over-the-air tuner supports all ATSC formats, up to the high definition 1080i format. Some of the HVR-1600's (product code 74021 and 74041 found on the tuner label) also support Clear QAM, which is most likely the stuff your cable company uses for your local HD channels. Again the analog tuner supports encoding NTSC into MPEG-2 at 720x480 resolution with a data rate of up to 12Mbits/sec.
IVTV
There is a driver for CX23418 MPEG-2 encoder at this time. For more information see: http://ivtvdriver.org/index.php/Cx18
Options for Linux Drivers
Drivers are released and included in recent kernels. Concurrent NTSC and ATSC capture are working. The latest stable version can be found here: http://www.linuxtv.org/hg/v4l-dvb
Output Messages
Further information that may be useful are the following lspci command outputs.
lspci returns
02:02.0 Multimedia video controller: Conexant Unknown device 5b7a
lspci -vn
02:02.0 0400: 14f1:5b7a Subsystem: 0070:7404 Flags: bus master, medium devsel, latency 64, IRQ 5 Memory at f8000000 (32-bit, non-prefetchable) [size=64M] Capabilities: <access denied>
lspci -v
02:02.0 Multimedia video controller: Conexant Unknown device 5b7a Subsystem: Hauppauge computer works Inc. Unknown device 7404 Flags: bus master, medium devsel, latency 64, IRQ 5 Memory at f8000000 (32-bit, non-prefetchable) [size=64M] Capabilities: <access denied>
Issues and Problems
The cx18 driver has the following known, major issues as of 14 Sept 2008:
1. Some users experience I2C bus failures, usually caused by PCI bus MMIO write errors, that essentially make the card unusable. The solution is upgrade to v1.0.1 or later of the cx18 driver and leave the retry_mmio module parameter set to it's default of 1. For v1.0.0 of the driver, the solution is to set the mmio_ndelay module parameter to 31, 61, 91, 121 or some higher multiple of the PCI bus clock period (30.3 ns) until the card is found to hopefully work in your system.
2. VBI data is not implemented yet
3. The first analog capture after modprobe experiences dropped frames and/or no audio. All subsequent analog captures are fine.
4. Unbuffered decoding of live captures (as with mplayer defaults) will not have smooth playback. Buffered decoding of live captures with MythTV is usually fine. S-Video/CVBS capture has been improved in v1.0.4 (Dec.2008). Check your version using dmesg | grep "Start initialization"
5. Simultaneous analog and digital captures work, but the early v1.0.2 and earlier driver versions intermittently cannot keep up with buffer transfer notifications from the CX23418 and errantly remove buffers from the transfer rotation when this happens. A stream transfer will cease abruptly when enough buffers fall out of rotation. A fix is in work as of 14 Nov 2008. Note the mythbackend will usually keep a TS stream open to scan for EPG data if configured to do so, and that counts as a digital capture as far as the driver is concerned.
Installation Guide
0. You must stop the MythBackend from running or you will receive errors while installing these drivers.
1. Install the latest v4l-dvb drivers
First find your kernel version. Run uname -r and you should get something like this:
uname -r > 2.6.24-19-generic
1a. Download the latest
sudo apt-get install mercurial linux-headers-$KERNEL_VERSION build-essential hg clone http://linuxtv.org/hg/v4l-dvb
1b. Compile and add the module to your kernel:
cd v4l-dvb make sudo make install sudo make unload sudo modprobe cx18
2. Download and install the latest firmware. Conexant gave permission to redistribute the firmware files. Get them here.
Unzip and untar the firmware files, read the License agreement, and copy the files to your distribution's firmware directory (usually under /lib/firmware/).
wget http://dl.ivtvdriver.org/ivtv/firmware/cx18-firmware.tar.gz tar -xzvf cx18-firmware.tar.gz sudo cp cx18-firmware/*.fw /lib/firmware/$KERNEL_VERSION/
Reboot
sudo shutdown -r now
Verify that everything was installed correctly by running dmesg. You should see something like the following:
dmesg | grep cx18 > [ 42.230394] cx18-0: Initialized card #0: Hauppauge HVR-1600
Note: Steps 1 & 2 must be repeated after each kernel update. When these drivers are out of beta, this will hopefully all be handled by the package manager.
3. Configure MythTV to use both "halves" of the card
- Enter mythsetup and go to Capture cards
- Select (New capture card)
3a. Configure the analog half of the card as you would a supported MPEG-2 Encoder PVR-150 card
Treating the analog half of the card as an ivtv based card in MythTV works as the cx18 driver is heavily based on (i.e. cut and pasted from) the ivtv driver.
- Under Card type, choose 'MPEG-2 encoder card (PVR-x50, PVR-500)'.
- Choose the correct video device (usually /dev/video0 unless you have more than one card).
- Probed info should populate with 'Hauppauge HVR-1600 [cx18]'.
- To use NTSC RF from an antenna or cable TV provider, choose 'Tuner 1' under Default input.
- Select Finish.
3b. Configure the ATSC (digital) half of the card as you would any other DVB DTV capture card
- Add another tuner card
- Under Card type choose 'DVB DTV capture card (v3.x)'.
- Choose the correct value under DVB Device Number (usually 0, this should be the same number appended to /dev/video when configuring the analog portion of the card).
- Frontend ID should populate to something like "Samsung S5H1409 QAM/Subtype: ATSC'.
- Select Recording Options.
- Change Max recordings to 1, since this card can only record one thing at a time.
- Select Finish.
- Select Finish again.
To scan for channels:
- Go back to the main menu an select Input connections, then select the correct DVB input for the card you just configured.
- Select Scan for channels.
- You should have your DVB device selected under Input.
- Scan Type should be 'Full Scan'.
- For cable, change Frequency Table to 'Cable' (you'll probably want to use 'Cable High' since most QAM channels are in the high range).
- For cable, change Modulation to 'Cable (QAM-256)'. All U.S. cable companies either use QAM-256 or QAM-64, most including Comcast use QAM-256.
- Choose an ATSC Channel Separator (most television tuners use a period).
- Select Next and then wait for the scan to complete. This may take a while.
- When it's done scanning, select Finish
MythTV has been known to have some issues scanning for all ATSC channels, see Adding Digital Cable Channels (For ATSC/QAM Tuner Cards -- USA/Canada) for more information.
Because the first analog capture after system startup experiences dropped frames and/or no audio, you may want to add a script to use the analog tuner on startup so that your first recording isn't garbled. The following script tunes to the analog tuner for one second and saves it under /tmp/temp.mpg.
1. Save this script as tune.sh (probably in /usr/share/mythtv).
#!/bin/bash function tune { # Make sure an argument was passed. if [ -z "$1" ]; then echo "Use: $0 /dev/<device>" ; return ; fi # Try to make sure we're working with a /dev/xxx item. if [ -c "$1" ]; then cat "$1" > /tmp/tuner-startup.$$ & pid=$! sleep 1 kill "$pid" &>/dev/null rm -f /tmp/tuner-startup.$$ &>/dev/null else echo "Error: $1 is not a device." return fi }
tune "/dev/video0"
If you have more than one of these cards installed, you'll need to copy the last line for each of the analog tuners (tune /dev/video0, tune /dev/video1, etc).
2. In MythSetup under General > Shutdown/Wakeup Options, under Startup Command put "bash /usr/share/mythtv/tune.sh" (or whatever the path to the script is).
Resources
Here are some resources to take a look at. The data sheets for the Hauppauge HVR-1600 and the Conexant CX23418 MPEG-2 encoder chip.
The mailing lists at http://www.ivtvdriver.org where use and development of the cx18 driver is discussed for the HVR-1600 and other CX23418 based cards.
Hauppauge product page for the HVR-1600
Conexant product page for the CX23418-chip
This is a link to a thread claiming development has started on a driver
This is a link to the linuxtv.org page that lists currently supported cards, as well as the unsupported cards.
From the Hauppauge product support page: "Linux support for the WinTV-HVR-1600 is in the upcoming kernel 2.6.26 release. Also, there is WinTV-HVR-1600 Linux support for both the analog TV tuner and the digital TV tuner available at LinuxTV.ORG in the "cx18" section."