Hauppauge WinTV-HVR-5525

From LinuxTVWiki
Jump to: navigation, search
Photo of front of WinTV-HVR-5525 card

A combined DVB-T/DVB-T2 or DVB-C or DVB-S/DVB-S2 PCIe card from Hauppauge.


  • PCI-e x1 low profile card (includes standard profile backplate)
  • Single Tuner for DVB-S/DVB-S2
  • Single Tuner for DVB-T/DVB-T2/DVB-C
  • IR Receiver
  • Remote Controller

Technical Details

  • Name: Hauppauge WinTV-HVR-5525
  • Bridge: Conexant PCIe A/V Decoder CX23888
  • DVB-T2/C demodulator: Si2168-B40
  • DVB-T2/C tuner: Si2157-A30
  • DVB-S2 demodulator and tuner: Montage M88RS6000
  • PCI ID 0070:f038

Driver and firmware

  • Following firmware files are needed: dvb-demod-m88rs6000.fw and dvb-demod-si2168-b40-01.fw. All can be found from OpenELEC firmware tree [1].
  • Place the firmware files under /lib/firmware

Making it Work

The driver is included in Linux kernels since 4.1. For older kernels you can use the media_build:


git clone git://linuxtv.org/media_build.git
cd media_build


sudo make install

Download the firmwares mentioned in the previous chapter and place them in /lib/firmware, reboot (or reload appropriate modules) and it should work.

dmesg output:

[   12.075076] media: Linux media interface: v0.10
[   12.393825] Linux video capture interface: v2.00
[   14.471461] cx23885 driver version 0.0.4 loaded
[   14.471581] CORE cx23885[0]: subsystem: 0070:f038, board: Hauppauge WinTV-HVR5525 [card=52,autodetected]
[   14.803585] tveeprom 3-0050: Hauppauge model 150329, rev C3I6, serial# 4035814105
[   14.803589] tveeprom 3-0050: MAC address is 00:0d:fe:8d:a2:d9
[   14.803592] tveeprom 3-0050: tuner model is SiLabs Si2157 (idx 186, type 4)
[   14.803594] tveeprom 3-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4)
[   14.803596] tveeprom 3-0050: audio processor is CX23888 (idx 40)
[   14.803598] tveeprom 3-0050: decoder processor is CX23888 (idx 34)
[   14.803600] tveeprom 3-0050: has radio, has IR receiver, has no IR transmitter
[   14.803601] cx23885[0]: hauppauge eeprom: model=150329
[   14.803604] cx23885_dvb_register() allocating 1 frontend(s)
[   14.803606] cx23885[0]: cx23885 based dvb card
[   14.807030] i2c i2c-3: Added multiplexed i2c bus 6
[   14.872564] a8293 3-000b: Allegro A8293 SEC successfully attached
[   15.014407] m88rs6000t 6-0021: chip_id=64
[   15.086092] m88rs6000t 6-0021: Montage M88RS6000 internal tuner successfully identified
[   15.086105] DVB: registering new adapter (cx23885[0])
[   15.086110] cx23885 0000:03:00.0: DVB: registering adapter 0 frontend 0 (Montage Technology M88RS6000)...
[   15.086452] cx23885_dvb_register() allocating 1 frontend(s)
[   15.086455] cx23885[0]: cx23885 based dvb card
[   15.123685] i2c i2c-3: Added multiplexed i2c bus 7
[   15.123690] si2168 3-0064: Silicon Labs Si2168 successfully attached
[   15.174568] si2157 4-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[   15.174580] DVB: registering new adapter (cx23885[0])
[   15.174584] cx23885 0000:03:00.0: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...
[   15.174937] cx23885_dev_checkrevision() Hardware revision = 0xd0
[   15.174944] cx23885[0]/0: found at 0000:03:00.0, rev: 4, irq: 17, latency: 0, mmio: 0xf9e00000

After accessing the tuner, for example in kaffeine:

[  558.122216] m88ds3103 3-0069: found a 'Montage Technology M88DS3103' in cold state
[  558.135696] m88ds3103 3-0069: downloading firmware from file 'dvb-demod-m88rs6000.fw'
[  559.031833] m88ds3103 3-0069: found a 'Montage Technology M88DS3103' in warm state
[  559.031838] m88ds3103 3-0069: firmware version: 4.1
[  559.190046] si2168 3-0064: found a 'Silicon Labs Si2168-B40'
[  559.197471] si2168 3-0064: downloading firmware from file 'dvb-demod-si2168-b40-01.fw'
[  559.802566] si2168 3-0064: firmware version: 4.0.11
[  559.807715] si2157 4-0060: found a 'Silicon Labs Si2157-A30'
[  559.829809] si2157 4-0060: firmware version: 3.0.5

Using DVB-C in kaffeine version 1.x

If you are running kaffeine, you will see that by default it detects two devices: Device 1 with DVB-S/S2 and Device 2 with DVB-T.

Looking at the dmesg output, we see that the card has two adapters. Adapter 0 is for satellite:

[   15.086110] cx23885 0000:03:00.0: DVB: registering adapter 0 frontend 0 (Montage Technology M88RS6000)...

Adapter 1 is for DVB-T/T2 or DVB-C:

[   15.174584] cx23885 0000:03:00.0: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...

So, adapter 1 can handle two types of TV signal (DVB-T/T2 or DVB-C). To use a certain type, the frontend must be switched to that mode. Older DVB applications, for example kaffeine 1, are not able to do this, and the type of TV signal defaults to DVB-T.

To work around this, you can use the tool 'dvb-fe-tool' that is part of the 'dvb-tools'. The following command sets the delivery system (-d) on adapter 1, frontend 0 to DVB-C:

dvb-fe-tool -a 1 -f 0 -d DVB-C

After that command, kaffeine 1 will use DVB-C on the WinTV-HVR-5525. The command must be run once after each system boot.

Using the Adapter with VLC

As the adapter has 2 tuners the adapter and frontend has to be specified when using VLC.

To create a channel list using w_scan for DVB-C you can use the following command

w_scan -f c -c AT -L -R 1 -T 1 -E 0 -a /dev/dvb/adapter1/ >> ~/Documents/channels.xspf

After the list is generated you need to open channels.xspf in an editor and add some tags specifying the additional parameters.

You need to add it to every <track> element. Just find the <extension application="http://www.videolan.org/vlc/playlist/0"> line and add the following beneath it (you might need to change the values to match your needs):


Example before:

	<title>0174. ATV</title>
	<extension application="http://www.videolan.org/vlc/playlist/0">

And after:

	<title>0174. ATV</title>
	<extension application="http://www.videolan.org/vlc/playlist/0">

After you edited every <track> tag you can open channels.xspf in VLC and watch TV.

If you want to watch DVB-S or DVB-T you need to specify other values but the steps remain the same.

External Links

Hauppauge product page