Hauppauge WinTV-HVR-1800

From LinuxTVWiki
Jump to navigation Jump to search

The Hauppauge WinTV-HVR-1800 is an ATSC PCIe card from Hauppauge. Support for the card's digital TV reception capabilities (8-VSB and 64/256-QAM) is currently provided within the latest drivers from the LinuxTV Hg repository, and should make its way into the 2.6.24 kernel. Analog support for the WinTV-HVR-1800 will hopefully be added in the future, but is contingent upon the addition of such to the CX23385/7 driver.

Full-height version (Medford)

WinTV-HVR-1800, full-height

This dual tuner card is also known as model 1129 and has a Subdevice ID of 0x7800.

It features three RF inputs (one for analog TV, one for digital TV, and one for radio). The card also sports an A/V header, which allows for additional inputs when when used with PC cases that have built in front or rear panel A/V connectors (S-Video, Composite and L/R Audio).

Components used

This card features:

  • NXP/Philips TDA18271 (tuner for analog)
  • Microtune MT2131 (tuner for digital)
  • NXP/Philips TDA8295 (analog IF demodulator)
  • Samsung S5H1409/Conexant CX24227 (digital demodulator)
  • Conexant CX23417 (MPEG-2 encoder)
  • Elpida (RAM)
  • Conexant CX23887 (A/V decoder and PCIe bridge)

Low-profile version (Brentwood)

When information about a "HVR-1800" model first became known, photos accompanying this news were of this low profile card. However, as it turned out, it was the full-height HVR-1800 rendition discussed above that was widely released. Whether or not this low profile HVR-1800, or a revision like it, is ever released for mass production is still unknown. In any regard, the very small quantity that were produced are indeed supported by LinuxTV drivers. This card has a Subdevice ID of 0x7600.

Components used

This card features the same components as the later full height version (see above) with the exception that a NXP/Philips TDA8275A tuner was used for analog, as opposed to the later card's switch to the NXP/Philips TDA18271.

Making it work


To get analog to work, follow the steps as shown in How to build from Mercurial up to "Build the Modules" and build the driver.

After "make install" is finished and if the system has loaded the default kernel's module, unload it with:

modprobe -r cx23885

Note: I have spoken to support in the MythTV-users IRC channel and they say the driver support / MythTV combination just doesn't work, and that the driver's author is aware of the issue.

Note: This doesn't work on Ubuntu 10.10 with the 1850 pcix; it still fails to see the analog tuner.


Download the firmware and all the files for cx23885 from HVR-1800 Firmware (it is also a good idea to keep checking for new firmware updates from this page). Run the .sh script and it will make two files v4l-cx23885-avcore-01.fw and v4l-cx23885-enc.fw. Copy these two files into /lib/firmware/ (not /lib/firmware/2.6.26-1-amd64 as stated by the script).


Once that's finished, load the modules with:

modprobe cx23885
modprobe tuner

Sample kernel output

Run dmesg and it should look something like this:

cx23885 driver version 0.0.1 loaded
ACPI: PCI Interrupt 0000:04:00.0[A] -> Link [AXV7] -> GSI 16 (level, low) -> IRQ 16
CORE cx23885[0]: subsystem: 0070:7801, board: Hauppauge WinTV-HVR1800 [card=2,autodetected]
cx25840' 4-0044: cx25  0-21 found @ 0x88 (cx23885[0])
tveeprom 2-0050: Hauppauge model 78521, rev C2E9, serial# 2872525
tveeprom 2-0050: MAC address is XX-XX-XX-XX-XX-XX
tveeprom 2-0050: tuner model is Philips 18271_8295 (idx 149, type 54)
tveeprom 2-0050: TV standards NTSC(M) ATSC/DVB Digital (eeprom 0x88)
tveeprom 2-0050: audio processor is CX23887 (idx 42)
tveeprom 2-0050: decoder processor is CX23887 (idx 37)
tveeprom 2-0050: has radio
cx23885[0]: hauppauge eeprom: model=78521
cx23885[0]/0: registered device video0 [v4l2]
firmware: requesting v4l-cx23885-avcore-01.fw
cx25840' 4-0044: loaded v4l-cx23885-avcore-01.fw firmware (16382 bytes)
cx23885[0]: registered device video1 [mpeg]
cx23885_dvb_register() allocating 1 frontend(s)
cx23885[0]: cx23885 based dvb card
MT2131: successfully identified at address 0x61
DVB: registering new adapter (cx23885[0])
DVB: registering adapter 0 frontend 6752 (Samsung S5H1409 QAM/8VSB Frontend)...
cx23885_dev_checkrevision() Hardware revision = 0xb1
cx23885[0]/0: found at 0000:04:00.0, rev: 15, irq: 16, latency: 0, mmio: 0xdfc00000
PCI: Setting latency timer of device 0000:04:00.0 to 64
tuner' 2-0061: chip found @ 0xc2 (cx23885[0])
tuner' 3-0042: chip found @ 0x84 (cx23885[0])
tda829x 3-0042: could not clearly identify tuner address, defaulting to 60
tda18271 3-0060: creating new instance
TDA18271HD/C1 detected @ 3-0060
tda829x 3-0042: type set to tda8295+18271

Tvtime and Mplayer

Tvtime will be used for switching channels while mplayer will be used for watching with audio. Tvtime uses /dev/video0 which is raw video signal so it can change the station. Mplayer uses /dev/video1 which is encoded mpg2 with audio. Install tvtime and mplayer with:

apt-get install tvtime mplayer

Run tvtime as normal user (tvtime -v), configure with proper settings for your region and scan for analog channels. Run mplayer with:

mplayer /dev/video1 -vo x11 -nobps -autosync 30 -forceidx -hardframedrop -vc ffmpeg12 -idle -menu -cache 16384 -cache-seek-min 50 -mc 0 -ni

If there are artifacts, unload and reload cx23385 with modprobe and restart mplayer/tvtime.


According to the MythTV wiki, analog is not supported due to driver issues.


Install the firmware and driver as stated above.

ATSC-QAM (United States)

Get the newest wscan from here w_scan. Extract it and manually scan for frequency using the following command: (use -A1 for Terrestrial, -A2 for Cable, -A3 for both)

 ./w_scan -fa -A2 -X -cUS > channels.conf

If the file channels.conf does not have any channel names and looks like this: service_id 808:79000000:QAM_256:33:34:808 , then follow instruction as found here to get the proper channel name.


For use with mplayer in Debian, copy the file channels.conf to /etc/mplayer/ or ~/.mplayer/

To start watching a particular channel use the following command: (where CHANNEL is the name of the channel in channels.conf)

mplayer -autosync 30 -cache 2048 dvb://CHANNEL