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

From LinuxTVWiki
Jump to: navigation, search
(building and installing)
Line 119: Line 119:
  
 
     options saa7134 card=105 alsa=1 tuner=71
 
     options saa7134 card=105 alsa=1 tuner=71
     install saa7134 /sbin/modprobe --ignore-install saa7134; /sbin/modprobe saa7134-dvb; /sbin/modprobe saa7134-alsa ;/sbin/modprobe xc3028-tuner
+
     install saa7134 /sbin/modprobe xc3028-tuner; /sbin/modprobe --ignore-install saa7134; /sbin/modprobe saa7134-dvb; /sbin/modprobe saa7134-alsa
  
 
==== loading modules ====
 
==== loading modules ====

Revision as of 15:41, 25 February 2007

Avermedia

AVerMedia AverTV Hybrid+FM PCI A16D

Info

Avermedia offers two "Hybrid+FM PCI" cards that, unlike their names, feature different tuner chipset;

A16Dboard.jpg

Looking on the card we can find:

  • Philips SAA7135HL PCI Audio/Video Broadcast Decoder
  • Xceive XC3018 Silicon Tuner File:Xc3018.jpg
  • Zarlink MT352 Digital Terrestrial TV Demodulator

Googlin' around it seem to me that Xceive XC3018 and 3028 are more than similar.

Also it seem that the card is quite similar to the Cardbus version (E506R).

Analogue TV seems to work already, but without audio.

Remote can be enabled as well: see remote controller section in this wiki.

Installation

As for the (E506R) there's some experimental code in

http://linuxtv.org/hg/~mrechberger/v4l-dvb-kernel

   $ hg clone http://linuxtv.org/hg/~mrechberger/v4l-dvb-kernel
   $ cd v4l-dvb-kernel/v4l

Adding A16D driver

in linux/drivers/media/video/saa7134/saa7134-cards.c at the end of "saa7134_board saa7134_boards[]" add:

 [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 linux/drivers/media/video/saa7134/saa7134-cards.c near the end of "pci_device_id saa7134_pci_tbl[]" add:

     },{
               .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 linux/drivers/media/video/saa7134/saa7134-cards.c in "saa7134_board_init1(struct saa7134_dev *dev)" add:

  case SAA7134_BOARD_AVERMEDIA_A16D:
               /* power-up tuner chip */
               saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x80600100,0x80600100);
               saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00623100,0x00623100);
               /* probably above values still need tuning*/
               msleep(1);
               /* enable remote */
               dev->has_remote = SAA7134_REMOTE_GPIO;
               break;

in linux/drivers/media/video/saa7134/saa7134-input.c in "saa7134_input_init1(struct saa7134_dev *dev)" add:

       case SAA7134_BOARD_AVERMEDIA_777:
       case SAA7134_BOARD_AVERMEDIA_A16D:
               ir_codes = ir_codes_avermedia;
               mask_keycode = 0x02F200;
               mask_keydown = 0x000400;
               polling = 50; // ms
               saa_setl(SAA7134_GPIO_GPMODE0 >> 2, 0x100);
               saa_setl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x100);
               break;

in linux/drivers/media/video/saa7134/saa7134.h add:

   #define SAA7134_BOARD_AVERMEDIA_A16D 105

P.S.: I know, this is not the right way to write patches, but, right now, it's my best ;-).

building and installing

   $ make
   $ make install

Unfortunately with Fedora core 6 modules are installed in /usr/src/2.6.xxxx/kernel/ while modprobe looks for updated modules in /usr/src/2.6.xxxx/updates/. Maybe you need to give the correct path as an install options; by now I simply copied patched modules over the old ones.

Install firmware for the XC3028 as reported for the em2880

As stated in this thread create /etc/modprobe.d/saa7134 containing:

   options saa7134 card=105 alsa=1 tuner=71
   install saa7134 /sbin/modprobe xc3028-tuner; /sbin/modprobe --ignore-install saa7134; /sbin/modprobe saa7134-dvb; /sbin/modprobe saa7134-alsa

loading modules

Unfortunately things don't work if you load saa7134 before xc3028-tuner, so:

   $ modprobe xc3028-tuner
   $ modprobe saa7134

Thanks to SunnyBUG, the autor of the original article "CARDBUS Hybrid TV FM (E506R)" from which most of this was taken.

--Lucarasp 13:47, 23 February 2007 (CET)