Archived:AVerMedia AVerTV Hybrid+FM Cardbus (E506R)-V4L
AVerMedia TV+FM CardBus E506R
AVermedia released their card with binary only driver for Mandriva and FC3/4. For ancient kernels of course. Due to licensing from chip vendor and the fact that AVerMedia is a proud GPL violator -- they do not bother publishing source for their driver that is actually based on V4L.
Looking inside the card we can see that it is:
- Philips SAA7135HL PCI Audio/Video Broadcast Decoder - Xceive XC3028 Silicon Tuner - Zarlink MT352 Digital Terrestrial TV Demodulator
So...
Excuse me for beeing dumb and stupid, but I just took Marcus' code for Em2880 from his repository at http://linuxtv.org/hg/~mrechberger/v4l-dvb
And added XC3028 tuner defintion to SAA7134 code, leaving gpio initialization as for AverMedia E500 card.
Guess what? It worked :)
Screenshot is here
Dmesg follows:
Linux video capture interface: v1.00 em28xx v4l2 driver version 0.0.1 loaded usbcore: registered new driver em28xx /home/lesha/dev/e506r/v4l-dvb/v4l/mt2060-tuner.c: mt2060_module_init saa7130/34: v4l2 driver version 0.2.14 loaded ACPI: PCI Interrupt 0000:03:00.0[A] -> Link [LNKB] -> GSI 11 (level, low) -> IRQ 11 saa7133[0]: found at 0000:03:00.0, rev: 209, irq: 11, latency: 64, mmio: 0x58000000 saa7133[0]: subsystem: 1461:f436, board: AVerMedia Cardbus TV/Radio (E506) [card=99,insmod option] saa7133[0]: board init: gpio is effffff tuner 0-0061: chip found @ 0xc2 (saa7133[0]) xc3028-tuner.c: only analogue and DVB-T are supported at the moment saa7133[0]: i2c eeprom 00: 61 14 36 f4 00 00 00 00 00 00 00 00 00 00 00 00 saa7133[0]: i2c eeprom 10: 00 ff e2 0e ff 20 ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 20: 01 40 01 02 02 01 01 03 08 ff 00 ff ff ff ff ff saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 40: ff 65 00 ff c2 1e ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff xc3028-tuner.c: selected videostandard PAL-B/G xc3028-tuner.c: ANALOG Mode! xc3028-tuner.c: loading new firmware xc3028-tuner.c: Successfully loaded Firmware: 1027 xc3028-tuner.c: V4L2_STD_PAL xc3028-tuner.c: V4L2_STD_PAL saa7133[0]: registered device video0 [v4l2] saa7133[0]: registered device vbi0 saa7133[0]: registered device radio0 saa7134 ALSA driver for DMA sound loaded saa7133[0]/alsa: saa7133[0] at 0x58000000 irq 11 registered as card -1
The patches (dirty way, sorry, I'm not a programmer)
--- v4l-dvb/linux/drivers/media/video/saa7134/saa7134.h 2006-10-18 06:10:22.000000000 +0400 +++ /home/lesha/saa7134.h 2006-10-18 06:09:20.000000000 +0400 @@ -229,6 +229,8 @@ #define SAA7134_BOARD_ELSA_700TV 89 #define SAA7134_BOARD_KWORLD_ATSC110 90 +#define SAA7134_BOARD_AVERMEDIA_CARDBUS_506 99 + #define SAA7134_MAXBOARDS 8 #define SAA7134_INPUT_MAX 8
--- v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c 2006-10-18 06:10:22.000000000 +0400 +++ /home/lesha/saa7134-cards.c 2006-10-18 06:09:02.000000000 +0400 @@ -1564,11 +1564,38 @@ .gpio = 0x01, }, }, - [SAA7134_BOARD_AVERMEDIA_CARDBUS] = { + [SAA7134_BOARD_AVERMEDIA_CARDBUS] = { + /* Kees.Blom@cwi.nl */ + .name = "AVerMedia Cardbus TV/Radio (E500)", + .audio_clock = 0x187de7, + .tuner_type = TUNER_PHILIPS_TDA8290, + .radio_type = UNSET, + .tuner_addr = ADDR_UNSET, + .radio_addr = ADDR_UNSET, + .inputs = {{ + .name = name_tv, + .vmux = 1, + .amux = TV, + .tv = 1, + },{ + .name = name_comp1, + .vmux = 3, + .amux = LINE2, + },{ + .name = name_svideo, + .vmux = 8, + .amux = LINE1, + }}, + .radio = { + .name = name_radio, + .amux = LINE1, + }, + }, + [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = { /* Kees.Blom@cwi.nl */ - .name = "AVerMedia Cardbus TV/Radio (E500)", + .name = "AVerMedia Cardbus TV/Radio (E506)", .audio_clock = 0x187de7, - .tuner_type = TUNER_PHILIPS_TDA8290, + .tuner_type = TUNER_XCEIVE_XC3028, .radio_type = UNSET, .tuner_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET, @@ -3002,6 +3029,13 @@ .subdevice = 0xd6ee, .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS, },{ + /* AVerMedia CardBus 506 */ + .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7134, + .subvendor = 0x1461, /* Avermedia Technologies Inc */ + .subdevice = 0xf436, + .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_506, + },{ /* TransGear 3000TV */ .vendor = PCI_VENDOR_ID_PHILIPS, .device = PCI_DEVICE_ID_PHILIPS_SAA7130, @@ -3435,6 +3469,7 @@ saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00); break; case SAA7134_BOARD_AVERMEDIA_CARDBUS: + case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: /* power-up tuner chip */ saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
Also you should use tv-audio.c patch from AVerMedia_Cardbus_Plus_E501R E501R card how-to
So... someone, please assign E506R valid card id insted 99, cleanup and include this code to the tree, etc.
I'm going to go enjoy my TV ;)