[pvrusb2] AVerMedia HC80 AVerTV Hybrid ExpressCard/54 support?

Mike Isely isely at isely.net
Wed Apr 7 22:22:50 CDT 2010




On Wed, 7 Apr 2010, Bill Paxton wrote:

> Hi Mike and list,
> 
> I've got a USB card that uses the CX23416, and from a cursory search, 
> it seems the pvrusb2 driver will be the best hope of making this card 
> work anytime soon. If this is incorrect and there is a better place to 
> hold this conversation, please let me borrow your internet compass...
> 
> As stated in the subject, the card in question is an AVerMedia HC80 
> AVerTV Hybrid ExpressCard/54. This *is* a USB device, only in the 
> ExpressCard format. (ExpressCard supports both PCI & USB modes, for 
> the non-laptop crowd.) I'm pretty sure the reason is because the 
> ExpressCard spec allows the card to pull a lot more current than a USB 
> port, the spec is 1.75A @ 3.3V; so no wall wart required.

I'm familiar (somewhat) with the ExpressCard format.  Interesting device 
you've found here...

   [...]


> 
> ----
> 
> Googling around turned up nothing WRT linux support. In fact the card 
> and it's successors HC81/82 are rarely mentioned at all. Figuring I'd 
> have to know what I was holding before I start asking around, I went 
> ahead with the delicate surgery required to open and then identify all 
> the major components. This is what led me to this list.

Ouch.  That *is* delicate.  But you've uncovered some interesting 
bits...

> 
> ----
> 
> Main ICs:
> 

> EEPROM:    Atmel AT24C64AN-10SU-2.7, 64K I2C, 8-pin SOIC

I2C EEPROMs all use a relatively standard interface (I2C).  Odds are 
this contains USB config info for the FX2, maybe even the FX2's firmware 
(that would be a lucky break).


> Encoder:   Conexant CX23416-22, 233-pin BGP

Yup, that's the mpeg encoder.


> Decoder:   Conexant CX25843-24Z, 80-pin TQFP 

The cx25840 sub-device driver will handle this.


> Analog:    Xceive XC3028ACQ, NTSC/PAL/FM, 40-pin QFN
> Digital:   LG LGDT3033 VSB/QAM, 100-pin TQFP

I'm not specifically familiar with these, but the tuner infrastructure 
in v4l-dvb is generally so good that I don't have to care very much 
either :-)


> Line In:   Wolfson WM8739S 24-bit Delta/Sigma stereo ADC, 20-pin SSOP

Another familiar part.


> SDRAM:     Elite SMT M12L64322A, 512K x 32 bit x 4 banks, 86-pin TSOP(II)

Nothing unusual there.


> USB:       Cypress CY7C68013A-100AXC, USB 2.0 Microcontroller, 100-pin TQFP

And that's the FX2...

> 
> Others ICs:
> 
> Voltage regulator IC, GMT G965 1.5A positive regulator, 8-pin SSOP
> EMI reduction IC, PulseCore (now On Semi) P2781AF, 8-pin SSOP
> 2x bus switch ICs, Pericom PI3B3861, 10-bit, 2-port bus switch, 24-pin QSOP
> unknown, (opamp?) markings "4231 / 4553 / 550" located near Xceive inside tuner shield.
> 
> ----
> 
> I've casually read the entire pvrusb2-list archives for a couple 
> hours. There is never a mention of this card, I don't think the word 
> "Aver" is ever spoken. I know Mike's adage that for pvrusb2 to have 
> hopes of supporting a unit, it should have a 23416 & an FX2 
> (CY7C68xxx) USB micro. This meets those requirements! :^)
> 
> Great, but here's where I get lost. I'm sure extracting the firmware 
> from the Windows drivers is going to be different. And that's just the 
> start.
> 
> So... what do you think? Is there hope? Any help greatly appreciated, 
> and any further info or work required, just post or email.

So far it sounds like this device fits the pedigree.  I don't see 
anything that would prevent the pvrusb2 driver from supporting this.  
But obviously the devil is in the details.

The first and biggest step is to ensure that the FX2 runs properly, and 
for that it requires firmware.  The FX2 can load firmware by itself from 
a connected I2C ROM or it can be downloaded from the host.  My 
experience is generally that Hauppauge devices get their FX2 firmware 
downloaded while non-Hauppauge devices (not that I have a large sample 
set here) have the firmware in ROM.  Given the size of that I2C ROM 
(64K) it may contain the firmware already.

A starting point for you would be to edit pvrusb2-devattr.c and add a 
new item for your device.  Look in pvrusb2-devattr.h for the structure 
declarations; for now just poke around and see what you can figure out.  
You'll need your device's USB manufacturer ID and device ID added to 
pvrusb2-devattr.c as well so the kernel can recognize your device and 
associate it with the pvrusb2 driver.  From the USB endpoint map, this 
data is:

  Manufacturer ID: 0x07ca
  Product ID:      0x0c80

Look at the other pvrusb2-devattr.c items to get a general idea.

Odds are you'll get the analog side working first - it's actually the 
more complex side however there is less variance among models there so 
the pvrusb2 driver might already be able to handle it without many 
changes.  (Yes, there will still be changes.)  

There's certainly a lot more to describe, but that's a starting point.

  -Mike

-- 

Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8


More information about the pvrusb2 mailing list