Difference between revisions of "AVerMedia AVerTV Hybrid+FM PCI (A16D)"

From LinuxTVWiki
Jump to: navigation, search
 
(Identification)
 
(47 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[http://linuxtv.org/v4lwiki/index.php/Avermedia Avermedia]
+
[[Image:AVerMedia_A16D_Front.jpg|thumb|AVerMedia A16D Front]]
 +
A [[DVB-T]] [[DVB-T PCI Cards|PCI card]] produced by [[AVerMedia]].
  
== AVerMedia AverTV+FM PCI A16D ==
+
This card is supported under Linux, having since been added to kernel 2.6.26.
  
==== Info ====
+
{{Note|There are actually two different [[AVerMedia]] cards that bear the identical name "AVerTV Hybrid+FM PCI", so one must be careful to distinguish between this one, the [[AVerMedia AVerTV Hybrid+FM PCI (A16D)|A16D]], and the other, the [[AVerMedia AVerTV Hybrid+FM PCI (A16AR)|A16AR]].}}
[http://www.avermedia.com/cgi-bin/products_digitvtuner_hybridPCI(A16D).asp?show=1 Official Product Page]
+
  
No precompiled or source linux driver from the [http://www.avermedia.com/cgi-bin/support_driverbympdpro.asp?category=TV%20Card&category2=Hybrid&proname=173&modelno=A16D Driver download page]
 
  
Avermedia offers two "Hybrid+FM PCI" cards that,
+
{{Note|The kernel 2.6.26 only supports analogue mode. Please use the kernel 2.6.27 for DVB-T suport.}}
unlike their names feature different tuner chipset;
+
* model [http://www.avermedia.com/cgi-bin/products_digitvtuner_hybridPCI.asp?show=1 A16AR] has a good support in v4l and some bynary driver from [http://www.avermedia.com/cgi-bin/support_driverbympdpro.asp?category=TV%20Card&category2=Hybrid&proname=173&modelno=A16AR Driver download page]
+
* while model A16D has no support in v4l and [http://www.avermedia.com/cgi-bin/support_driverbympdpro.asp?category=TV%20Card&category2=Hybrid&proname=12&modelno=A16AR Driver download page].
+
+
Looking on the card we can find:
+
  
* Philips SAA7135HL PCI Audio/Video Broadcast Decoder
 
* Xceive XC3018 Silicon Tuner
 
* Zarlink MT352 Digital Terrestrial TV Demodulator
 
  
It seem that the card is quite similar to the
+
==Overview/Features==
Cardbus version (E506R).
+
  
Analogue TV seems to work already, but without audio.
 
  
Remote can be enabled as well, but I am not able to let
+
===Components Used===
it work together with the tuner at the moment.
+
The A16D model consists of the following hardware components:
 +
* Xceive XC3028 (tuner & analog demodulator)
 +
* Philips SAA7135HL (A/V decoder)
 +
* Zarlink MT352 (DVB-T demodulator)
  
==== Installation with TV tuning support: ====
+
===Identification===
 +
If you have an A16D correctly detected then "<tt>sudo lspci -vvnn</tt>" should be similar to:  
 +
(Example from Ubuntu 8.04 using 2.6.24-19-generic x86_64)
 +
03:07.0 Multimedia controller [0480]: Philips Semiconductors SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
 +
Subsystem: Avermedia Technologies Inc Unknown device [1461:f936]
 +
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
 +
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
 +
Latency: 32
 +
Interrupt: pin A routed to IRQ 21
 +
Region 0: Memory at fdcfe000 (32-bit, non-prefetchable) [size=2K]
 +
Capabilities: [40] Power Management version 2
 +
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
 +
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
  
As for the (E506R) there's some experimental code in
+
* Note: the above output from lspci shows the card NOT being properly/automagically detected/recognized! ... it would be nice if someone could provide the output from lspci where it shows the card being properly detected
  
http://linuxtv.org/hg/~mrechberger/v4l-dvb-kernel
+
<pre>(From Gentoo, kernel 2.6.30-gentoo-r5 x86_64)
 
+
04:05.0 Multimedia controller [0480]: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
<pre>
+
Subsystem: Avermedia Technologies Inc Hybrid+FM PCI (rev A16D) [1461:f936]
$ hg clone http://linuxtv.org/hg/~mrechberger/v4l-dvb-kernel
+
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
$ cd v4l-dvb-kernel/v4l
+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
$ make
+
Latency: 64
$ make install
+
Interrupt: pin A routed to IRQ 20
 +
Region 0: Memory at fddff000 (32-bit, non-prefetchable) [size=2K]
 +
Capabilities: [40] Power Management version 2
 +
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
 +
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
 
</pre>
 
</pre>
  
Install firmware for the XC3028 as reported for the [http://www.linuxtv.org/v4lwiki/index.php/Em2880#Installation em2880]
+
==Making it work==
 
+
<pre>
+
$ modprobe xc3028-tuner
+
$ modprobe saa7134 card=104 alsa=1 tuner=71
+
</pre>
+
 
+
==== Installation with IR Remote support: ====
+
 
+
get code from the master developement repository
+
 
+
http://linuxtv.org/hg/v4l-dvb
+
 
+
<pre>
+
$ hg clone http://linuxtv.org/hg/v4l-dvb
+
$ cd v4l-dvb/v4l
+
$ make
+
$ make install
+
$ modprobe saa7134 card=85 alsa=1
+
</pre>
+
 
+
(See the useful [http://www.ubuntu-es.org/index.php?q=node/27239 thread] on (spanish) ubuntu forum.
+
 
+
Thanks to [[User:SunnyBUG|SunnyBUG]], the autor of the original
+
article "CARDBUS Hybrid TV FM (E506R)" from which most of this was taken.
+
 
+
==== Adding its own driver ====
+
I did many tests to get both TV and remote working, without success:
+
 
+
in saa7134-cards.c at the end of  "saa7134_board saa7134_boards[]"
+
 
+
  [SAA7134_BOARD_AVERMEDIA_A16D] = {
+
                .name          = "AVerMedia Hybrid TV/Radio (A16D)",
+
                .audio_clock    = 0x187de7,
+
                .tuner_type    = TUNER_XCEIVE_XC3028,
+
                .radio_type    = UNSET,
+
                .tuner_addr    = 0x61,
+
                .radio_addr    = ADDR_UNSET,
+
                .inputs        = {{
+
                        .name = name_tv,
+
                        .vmux = 1,
+
                        .amux = TV,
+
                        .tv  = 1,
+
                },{
+
                        .name = name_svideo,
+
                        .vmux = 8,
+
                        .amux = LINE1,
+
                }},
+
                .radio = {   
+
                        .name = name_radio,
+
                        .amux = LINE1,
+
                },
+
        },
+
 
+
in saa7134-cards.c near the end of  "pci_device_id saa7134_pci_tbl[]"
+
 
+
      },{
+
                .vendor      = PCI_VENDOR_ID_PHILIPS,
+
                .device      = PCI_DEVICE_ID_PHILIPS_SAA7133,
+
                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
+
                .subdevice    = 0xf936,
+
                .driver_data  = SAA7134_BOARD_AVERMEDIA_A16D,
+
 
+
in saa7134-cards.c in "saa7134_board_init1(struct saa7134_dev *dev)"
+
  
  case SAA7134_BOARD_AVERMEDIA_A16D:
+
===Firmware===
                /* enable remote */
+
                dev->has_remote = SAA7134_REMOTE_GPIO;
+
                /* power-up tuner chip conflict with remote */
+
                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,  0xffffffff, 0xffffffff);
+
                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
+
                /* probably above values need tuning*/
+
                msleep(1);
+
                break;
+
  
in saa7134-input.c in "saa7134_input_init1(struct saa7134_dev *dev)"
+
===Drivers===
  
      case SAA7134_BOARD_AVERMEDIA_A16D:
+
===Sample kernel output===
        case SAA7134_BOARD_AVERMEDIA_777:
+
If you have an A16D correctly detected then the related dmesg output should be similar to:  
                ir_codes = ir_codes_avermedia;
+
(Example from Ubuntu 8.04 using 2.6.24-19-generic x86_64)
                mask_keycode = 0x02F200;
+
[  63.704203] Linux video capture interface: v2.00
                mask_keydown = 0x000400;
+
[  63.752924] ACPI: WMI-Acer: Mapper loaded
                polling = 50; // ms
+
[  64.099345] saa7130/34: v4l2 driver version 0.2.14 loaded
                saa_setl(SAA7134_GPIO_GPMODE0 >> 2, 0x100);
+
[  64.099459] ACPI: PCI Interrupt 0000:03:07.0[A] -> GSI 21 (level, low) -> IRQ 21
                saa_setl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x100);
+
[  64.099467] saa7133[0]: found at 0000:03:07.0, rev: 209, irq: 21, latency: 32, mmio: 0xfdcfe000
                break;
+
[  64.099475] saa7133[0]: subsystem: 1461:f936, board: AVerMedia Hybrid TV/Radio (A16D) [card=137,autodetected]
 +
[  64.099485] saa7133[0]: board init: gpio is 2a200
 +
[  64.121124] input: saa7134 IR (AVerMedia Hybrid TV as /devices/pci0000:00/0000:00:14.4/0000:03:07.0/input/input6
 +
[  64.201694] ACPI: PCI Interrupt 0000:00:14.2[A] -> GSI 16 (level, low) -> IRQ 16
 +
[  64.236208] hda_codec: Unknown model for ALC882, trying auto-probe from BIOS...
 +
[  64.312889] saa7133[0]: i2c eeprom 00: 61 14 36 f9 00 00 00 00 00 00 00 00 00 00 00 00
 +
[  64.312897] saa7133[0]: i2c eeprom 10: ff ff ff ff ff 20 ff ff ff ff ff ff ff ff ff ff
 +
[  64.312902] saa7133[0]: i2c eeprom 20: 01 40 01 02 02 01 01 00 08 ff 00 0e ff ff ff ff
 +
[  64.312907] saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312911] saa7133[0]: i2c eeprom 40: ff 65 00 ff c2 1e ff ff ff ff ff ff ff ff ff ff
 +
[  64.312915] saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312919] saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312923] saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312927] saa7133[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312931] saa7133[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312935] saa7133[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312939] saa7133[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312944] saa7133[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312948] saa7133[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312952] saa7133[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.312956] saa7133[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 +
[  64.344915] tuner' 1-0061: chip found @ 0xc2 (saa7133[0])
 +
[  64.387946] xc2028 1-0061: creating new instance
 +
[  64.387952] xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
 +
[  64.444501] xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
 +
[  64.460800] xc2028 1-0061: Loading firmware for type=BASE F8MHZ (3), id 0000000000000000.
 +
[  72.998152] (0), id 00000000000000ff:
 +
[  72.998156] xc2028 1-0061: Loading firmware for type=(0), id 0000000100000007.
 +
[  73.166017] SCODE (20000000), id 0000000100000007:
 +
[  73.166019] xc2028 1-0061: Loading SCODE for type=MONO SCODE HAS_IF_5320 (60008000), id 0000000800000007.
 +
[  73.605999] saa7133[0]: registered device video0 [v4l2]
 +
[  73.606016] saa7133[0]: registered device vbi0
 +
[  73.606032] saa7133[0]: registered device radio0
 +
[  73.606187] ACPI: PCI Interrupt 0000:01:05.1[B] -> GSI 19 (level, low) -> IRQ 19
 +
[  73.606833] PCI: Setting latency timer of device 0000:01:05.1 to 64
 +
[  73.770676] xc2028 1-0061: attaching existing instance
 +
[  73.770682] xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
 +
[  73.770686] DVB: registering new adapter (saa7133[0])
 +
[  73.770689] DVB: registering frontend 0 (Zarlink MT352 DVB-T)...
  
--[[User:Lucarasp|Lucarasp]] 03:51, 20 February 2007 (CET)
+
==External Links==
 +
* [http://www.avermedia.com/avertv/product/ProductDetail.aspx?Id=25 AVerTV Hybrid+FM PCI (A16D) product page]
 +
* [http://mcentral.de/wiki/index.php5/AVerMedia_AverTV_Hybrid_FM_PCI_A16D mrec's 3rd party driver]
 +
* [http://www.hardwareportal.ru/Multimedia/Aver.hybridfmpci/index.html Russian Review]
 +
[[Category:DVB-T PCI Cards]]

Latest revision as of 08:48, 4 January 2010

AVerMedia A16D Front

A DVB-T PCI card produced by AVerMedia.

This card is supported under Linux, having since been added to kernel 2.6.26.

Note: There are actually two different AVerMedia cards that bear the identical name "AVerTV Hybrid+FM PCI", so one must be careful to distinguish between this one, the A16D, and the other, the A16AR.


Note: The kernel 2.6.26 only supports analogue mode. Please use the kernel 2.6.27 for DVB-T suport.


Overview/Features

Components Used

The A16D model consists of the following hardware components:

  • Xceive XC3028 (tuner & analog demodulator)
  • Philips SAA7135HL (A/V decoder)
  • Zarlink MT352 (DVB-T demodulator)

Identification

If you have an A16D correctly detected then "sudo lspci -vvnn" should be similar to:

(Example from Ubuntu 8.04 using 2.6.24-19-generic x86_64)
03:07.0 Multimedia controller [0480]: Philips Semiconductors SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
	Subsystem: Avermedia Technologies Inc Unknown device [1461:f936]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 32
	Interrupt: pin A routed to IRQ 21
	Region 0: Memory at fdcfe000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: [40] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME- 
  • Note: the above output from lspci shows the card NOT being properly/automagically detected/recognized! ... it would be nice if someone could provide the output from lspci where it shows the card being properly detected
(From Gentoo, kernel 2.6.30-gentoo-r5 x86_64)
04:05.0 Multimedia controller [0480]: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
	Subsystem: Avermedia Technologies Inc Hybrid+FM PCI (rev A16D) [1461:f936]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64
	Interrupt: pin A routed to IRQ 20
	Region 0: Memory at fddff000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: [40] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

Making it work

Firmware

Drivers

Sample kernel output

If you have an A16D correctly detected then the related dmesg output should be similar to:

(Example from Ubuntu 8.04 using 2.6.24-19-generic x86_64)
[   63.704203] Linux video capture interface: v2.00
[   63.752924] ACPI: WMI-Acer: Mapper loaded
[   64.099345] saa7130/34: v4l2 driver version 0.2.14 loaded
[   64.099459] ACPI: PCI Interrupt 0000:03:07.0[A] -> GSI 21 (level, low) -> IRQ 21
[   64.099467] saa7133[0]: found at 0000:03:07.0, rev: 209, irq: 21, latency: 32, mmio: 0xfdcfe000
[   64.099475] saa7133[0]: subsystem: 1461:f936, board: AVerMedia Hybrid TV/Radio (A16D) [card=137,autodetected]
[   64.099485] saa7133[0]: board init: gpio is 2a200
[   64.121124] input: saa7134 IR (AVerMedia Hybrid TV as /devices/pci0000:00/0000:00:14.4/0000:03:07.0/input/input6
[   64.201694] ACPI: PCI Interrupt 0000:00:14.2[A] -> GSI 16 (level, low) -> IRQ 16
[   64.236208] hda_codec: Unknown model for ALC882, trying auto-probe from BIOS...
[   64.312889] saa7133[0]: i2c eeprom 00: 61 14 36 f9 00 00 00 00 00 00 00 00 00 00 00 00
[   64.312897] saa7133[0]: i2c eeprom 10: ff ff ff ff ff 20 ff ff ff ff ff ff ff ff ff ff
[   64.312902] saa7133[0]: i2c eeprom 20: 01 40 01 02 02 01 01 00 08 ff 00 0e ff ff ff ff
[   64.312907] saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312911] saa7133[0]: i2c eeprom 40: ff 65 00 ff c2 1e ff ff ff ff ff ff ff ff ff ff
[   64.312915] saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312919] saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312923] saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312927] saa7133[0]: i2c eeprom 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312931] saa7133[0]: i2c eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312935] saa7133[0]: i2c eeprom a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312939] saa7133[0]: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312944] saa7133[0]: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312948] saa7133[0]: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312952] saa7133[0]: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.312956] saa7133[0]: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
[   64.344915] tuner' 1-0061: chip found @ 0xc2 (saa7133[0])
[   64.387946] xc2028 1-0061: creating new instance
[   64.387952] xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
[   64.444501] xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
[   64.460800] xc2028 1-0061: Loading firmware for type=BASE F8MHZ (3), id 0000000000000000.
[   72.998152] (0), id 00000000000000ff:
[   72.998156] xc2028 1-0061: Loading firmware for type=(0), id 0000000100000007.
[   73.166017] SCODE (20000000), id 0000000100000007:
[   73.166019] xc2028 1-0061: Loading SCODE for type=MONO SCODE HAS_IF_5320 (60008000), id 0000000800000007.
[   73.605999] saa7133[0]: registered device video0 [v4l2]
[   73.606016] saa7133[0]: registered device vbi0
[   73.606032] saa7133[0]: registered device radio0
[   73.606187] ACPI: PCI Interrupt 0000:01:05.1[B] -> GSI 19 (level, low) -> IRQ 19
[   73.606833] PCI: Setting latency timer of device 0000:01:05.1 to 64
[   73.770676] xc2028 1-0061: attaching existing instance
[   73.770682] xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
[   73.770686] DVB: registering new adapter (saa7133[0])
[   73.770689] DVB: registering frontend 0 (Zarlink MT352 DVB-T)...

External Links