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

Bill Paxton goawaypleaseus at yahoo.com
Mon Apr 12 16:36:45 CDT 2010


Hi Mike and list,

> 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.

I'm using a 64-bit 2.6.33.2 stable vanilla kernel, all the capture/frontend/tuner modules are enabled, and also things I thought might help (ie. CONFIG_USB_C67X00_HCD=Y, I can't imagine it needs host controller mode, I'm just "preparing".) I've pulled v4l-dvb from their Hg repository, and am working with pvrusb2-mci-20100221.tar.bz2. As suggested, I added new device elements to the pvr2_device_table and pvr2_device_desc structures. I cloned the simplest entry and modified that.

I'm wading much deeper than my skill level, but I am trying to comprehend it. With regards to the analog tuner, the Xceive 2038 has both it's own module & firmware in v4l__experimental, and in the kernel inclusion of ivtv's tuner.h as tuner #71. Also since I don't know any better, I've made new entries for ROUTING_SCHEME, DIGITAL_SCHEME, LED_SCHEME, and IR_SCHEME for the HC80 in prbusb2-devattr.h...

----
/* AVerMedia HC80 AVerTV Hybrid ExpressCard/54 */

static const struct pvr2_device_client_desc pvr2_cli_hc80[] = {
	{ .module_id = PVR2_CLIENT_ID_CX25840 },
	{ .module_id = PVR2_CLIENT_ID_TUNER },
//	{ .module_id = PVR2_CLIENT_ID_TUNER_XC2028 },
//	{ .module_id = PVR2_CLIENT_ID_WM8739 },
	{ .module_id = PVR2_CLIENT_ID_DEMOD },
};

static const struct pvr2_device_desc pvr2_device_hc80 = {
		.description = "AVerMedia HC80 AVerTV Hybrid USB tuner",
		.shortname = "hc80",
		.client_table.lst = pvr2_cli_hc80,
		.client_table.cnt = ARRAY_SIZE(pvr2_cli_hc80),
		.default_tuner_type = TUNER_XC2028,
		.flag_has_analogtuner = !0,
		.flag_has_fmradio = !0,
		.flag_has_composite = !0,
		.flag_has_cx25840 = !0,
		.flag_has_svideo = !0,
		.flag_digital_requires_cx23416 = !0,
		.signal_routing_scheme = PVR2_ROUTING_SCHEME_HC80,
		.digital_control_scheme = PVR2_DIGITAL_SCHEME_HC80,
		.led_scheme = PVR2_LED_SCHEME_HC80,
		.ir_scheme = PVR2_IR_SCHEME_HC80,
		.default_std_mask = V4L2_STD_NTSC_M,
};
<--snip-->
	{ USB_DEVICE(0x07ca, 0x0c80),
	  .driver_info = (kernel_ulong_t)&pvr2_device_hc80},
----

It compiles and installs and I get:

---
[root at lappy]# modprobe pvrusb2 debug=1 tuner=71 ; tail /var/log/messages

pvrusb2: Hardware description: AVerMedia HC80 AVerTV Hybrid USB tuner
usbcore: registered new interface driver pvrusb2
pvrusb2: 20100221 (from www.isely.net):Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
pvrusb2: Debug mask is 31 (0x1f)
cx25840 2-0044: Unable to detect h/w, assuming cx23887
cx25840 2-0044: cx23887 A/V decoder found @ 0x88 (pvrusb2_a)
pvrusb2: Attached sub-driver cx25840
pvrusb2: Module ID 4 (tuner) for device AVerMedia HC80 AVerTV Hybrid USB tuner failed to load.  Possible missing sub-device kernel module or initialization failure within module.
tuner 2-0043: chip found @ 0x86 (pvrusb2_a)
tda9887 2-0043: creating new instance
tda9887 2-0043: tda988[5/6/7] found
tda9887 2-0043: i2c i/o error: rc == -5 (should be 4)
pvrusb2: Attached sub-driver tuner
pvrusb2: Device being rendered inoperable
pvrusb2: ***WARNING*** pvrusb2 driver initialization failed due to the failure of one or more sub-device kernel modules.
pvrusb2: You need to resolve the failing condition before this driver can function.  There should be some earlier messages giving more information about the problem.

[root at lappy]# lsmod

Module                  Size  Used by
tda9887                 9545  1 
tda8290                10728  0 
tuner                  18177  1 
cx25840                26761  1 
pvrusb2               137202  0 
dvb_core               88897  1 pvrusb2
cx2341x                11086  1 pvrusb2
v4l2_common            16247  5 wm8739,tuner,cx25840,pvrusb2,cx2341x
videodev               35699  5 wm8739,tuner,cx25840,pvrusb2,v4l2_common
v4l1_compat            12658  2 pvrusb2,videodev
v4l2_compat_ioctl32    10021  1 videodev
tveeprom               12918  1 pvrusb2

----

However, it at least does try and talk thru USB. "chip found @ 0x86" whether or not it's correct sounds like it was able to query something. And loading the module turns on the card's in-use LED, too. Would you consider that an indicator that the FX2 gets bootstrapped from that EEPROM? Also, if I modprobe wm8739 & tuner_xc2028 from v4l-dvb, they load, but do nothing. (and defining them as .module_id list items in pvrusb2 generates undef'd compile errors, go figure.)

As always, thanks so much for reading, and if there's any way you can help me along I'd greatly appreciate it.
-BP



      


More information about the pvrusb2 mailing list