Hauppauge HVR-1600

From MythTV Official Wiki
Revision as of 15:18, 26 November 2008 by Baylink (Talk | contribs)

Jump to: navigation, search
The Hauppauge HVR-1600 dual tuner capture card

Hauppauge HVR-1600

Important.png Note: The Linux cx18 driver module v1.0.0 may need the mmio_ndelay parameter explicitly set; v1.0.1 should not. See below.

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.


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.


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 have not have smooth playback. Buffered decoding of live captures with MythTV is usually fine.

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
 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/


 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

Important.png 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

  1. Enter mythsetup and go to Capture cards
  2. 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.

  1. Under Card type, choose 'MPEG-2 encoder card (PVR-x50, PVR-500)'.
  2. Choose the correct video device (usually /dev/video0 unless you have more than one card).
  3. Probed info should populate with 'Hauppauge HVR-1600 [cx18]'.
  4. To use NTSC RF from an antenna or cable TV provider, choose 'Tuner 1' under Default input.
  5. Select Finish.

3b. Configure the ATSC (digital) half of the card as you would any other DVB DTV capture card

  1. Add another tuner card
  2. Under Card type choose 'DVB DTV capture card (v3.x)'.
  3. 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).
  4. Frontend ID should populate to something like "Samsung S5H1409 QAM/Subtype: ATSC'.
  5. Select Recording Options.
  6. Change Max recordings to 1, since this card can only record one thing at a time.
  7. Select Finish.
  8. Select Finish again.

To scan for channels:

  1. Go back to the main menu an select Input connections, then select the correct DVB input for the card you just configured.
  2. Select Scan for channels.
  3. You should have your DVB device selected under Input.
  4. Scan Type should be 'Full Scan'.
  5. For cable, change Frequency Table to 'Cable' (you'll probably want to use 'Cable High' since most QAM channels are in the high range).
  6. 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.
  7. Choose an ATSC Channel Separator (most television tuners use a period).
  8. Select Next and then wait for the scan to complete. This may take a while.
  9. 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).

 function tune {
   cat $1 > /tmp/temp.mpg &
   sleep 1
   kill $pid
 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).


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 process. When the WinTV-HVR-1600 is added to the growing list of over 30
  supported Hauppauge products with Linux open source drivers, an entry will be made in the LinuxTV.ORG Wiki."