Comment 22 for bug 196811

Revision history for this message
Simon Munton (simon-launchpad) wrote : Re: hal does not detect Quickcam Express as v4l-device

You could try adding the following line:

                qc->vdev.dev = &usbdev->dev;

just before the call to:
     r = video_register_device(&qc->vdev, VFL_TYPE_GRABBER, video_nr);
at around line 3160 of the qc-driver.c file in the qc-usb source and recompile the driver.

As a diff:

--- qc-driver.c.orig 2006-10-24 03:06:19.000000000 +0100
+++ qc-driver.c 2008-07-01 20:43:39.000000000 +0100
@@ -3155,6 +3155,7 @@

                /* Register V4L video device */
                memcpy(&qc->vdev, &qc_v4l_template, sizeof(qc_v4l_template));
+ qc->vdev.dev = &usbdev->dev;
                qc->vdev.priv = qc;
                r = video_register_device(&qc->vdev, VFL_TYPE_GRABBER, video_nr);
                if (r<0) goto fail3;

This has the effect of setting the video devices parent device, and then HAL will create the correct entry:

udi = '/org/freedesktop/Hal/devices/usb_device_46d_840_noserial_video4linux'
  info.capabilities = {'video4linux', 'video4linux.video_capture'} (string list)
  info.category = 'video4linux' (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_46d_840_noserial' (string)
  info.product = 'Logitech QuickCam USB' (string)
  info.subsystem = 'video4linux' (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_46d_840_noserial_video4linux' (string)
  linux.device_file = '/dev/v4l/video0' (string)
  linux.hotplug_type = 2 (0x2) (int)
  linux.subsystem = 'video4linux' (string)
  linux.sysfs_path = '/sys/class/video4linux/video0' (string)
  video4linux.device = '/dev/v4l/video0' (string)
  video4linux.version = '1' (string)