So I tried to use the HD_PVR with LInuxMCE... but the newer 1480 or gameplayer edition. LinuxMCE didn't respond at all when I plugged it into the MD and I've verified it's working so it seemed to be a driver issue or similar.
lsusb showed:
Bus 001 Device 003: ID 2040:e502 Hauppauge
So it was connected etc but dmesg had no record of a driver responding.
On doing some reading, it appears that this model is not supported by LInux. Blast. Apparently the driver in question is called hdpvr and I even came across some forum entries where people had managed to get newer HDPVR versions (than the original 1212) working by modifying the driver code to detect the model.
I gave this a bash - adding a new product id with the code (e502) reported on lsusb for my model-
i media/drivers/media/usb/hdpvr/hdpvr.h
added ID5:
#define HD_PVR_VENDOR_ID 0x2040
#define HD_PVR_PRODUCT_ID 0x4900
#define HD_PVR_PRODUCT_ID1 0x4901
#define HD_PVR_PRODUCT_ID2 0x4902
#define HD_PVR_PRODUCT_ID4 0x4903
#define HD_PVR_PRODUCT_ID3 0x4982
#define HD_PVR_PRODUCT_ID5 0xe502
vi media/drivers/media/usb/hdpvr/hdpvr-core.c
/* table of devices that work with this driver */
static struct usb_device_id hdpvr_table[] = {
{ USB_DEVICE(HD_PVR_VENDOR_ID, HD_PVR_PRODUCT_ID) },
{ USB_DEVICE(HD_PVR_VENDOR_ID, HD_PVR_PRODUCT_ID1) },
{ USB_DEVICE(HD_PVR_VENDOR_ID, HD_PVR_PRODUCT_ID2) },
{ USB_DEVICE(HD_PVR_VENDOR_ID, HD_PVR_PRODUCT_ID3) },
{ USB_DEVICE(HD_PVR_VENDOR_ID, HD_PVR_PRODUCT_ID4) },
{ USB_DEVICE(HD_PVR_VENDOR_ID, HD_PVR_PRODUCT_ID5) },
{ } /* Terminating entry */
};
And then recompiled the driver and modprobed it. Then, on plugging in the hdpvr, at least the driver did try to respond but dmesg shows it crashing out on initialisation with the message -
kern.log:Jan 18 06:21:18 moon76 kernel: [49733.312114] hdpvr 1-1:1.0: unexpected answer of status request, len -32
kern.log:Jan 18 06:21:18 moon76 kernel: [49733.312127] hdpvr 1-1:1.0: device init failed
kern.log:Jan 18 06:21:18 moon76 kernel: [49733.312206] hdpvr: probe of 1-1:1.0 failed with error -12
Am I on a hiding to nothing here or is there a chance I'll be able to sort out this driver to support the device? Any suggestions?
The offending bit of code, if anyone eats C++ for breakfast, is at
http://pastebin.com/3eeNqkfBand it's in a function called "device_authorization":
ret = usb_control_msg(dev->udev,
usb_rcvctrlpipe(dev->udev, 0),
rcv_request, 0x80 | request_type,
0x0400, 0x0003,
dev->usbc_buf, 46,
10000);
if (ret != 46) {
v4l2_err(&dev->v4l2_dev,
"unexpected answer of status request, len %d\n", ret);
goto unlock;
So I guess it's requesting control of the usb device, expecting 46 back but getting 32 and, quite understandably, getting flustered when it receives 32. And then cowardly bailing out.
Any thoughts or suggestions?
cheers
James