Hi Mark,

> I have a integrated webcam in my Acer laptop.  The manufacter is Bison (not
> logitech) and I'm having a problem with uvcvideo driver which is similar to
> the logitech orbicam issue.  The cam itself is 1.3 Megapixels, whether that
> is obtained through interpolation is another question.

From the luvcview -L output you posted, it seems the camera has a VGA 
(640x480) sensor. Higher resolutions are probably achieved using software 
interpolation.

> Please read through this as I provided additional information throughout.
>
> Here is the output of lsusb:
[snip]

Could you please post lsusb output with usbutils 0.72 or newer ?

> When running lucview I get the following error:
>
> # /usr/local/bin/luvcview
> luvcview version 0.2.1
> Video driver: x11
> A window manager is available
> video /dev/video0
> Unable to set format: 5.
> Init v4L2 failed !! exit fatal
>
> # /usr/local/bin/luvcview -L
> luvcview version 0.2.1
> Video driver: x11
> A window manager is available
> video /dev/video0
> /dev/video0 does not support read i/o
> { pixelformat = 'MJPG', description = 'MJPEG' }
> { discrete: width = 640, height = 480 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 320, height = 240 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 160, height = 120 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 352, height = 288 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 176, height = 144 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { pixelformat = 'YUYV', description = 'Uncompressed' }
> { discrete: width = 640, height = 480 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 320, height = 240 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 160, height = 120 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 352, height = 288 }
>         Time interval between frame: 1/30, 1/15, 1/10,
> { discrete: width = 176, height = 144 }
>         Time interval between frame: 1/30, 1/15, 1/10,

As mentioned above, the highest resolution supported by the device is 640x480.

> I patched the current svn release with the USB Reset patch, this adds an
> extra line to my messages:

The reset patch should only be useful with Logitech devices. This was worth a 
try though, as the webcam might have been a rebranded Logitech device, or 
have been based on the same hardware.

> Jun  3 18:50:31 localhost kernel: uvcvideo: Failed to query (130) UVC
> control 1 (unit 0) : 2 (exp. 26).

This is the issue. The webcam sends a wrong response to a video format 
negotiation command. I suspect the Windows driver not to use that command, 
which is why the bug has gone undetected.

> Jun  3 18:50:31 localhost kernel: usb 3-5: reset high speed USB device
> using ehci_hcd and address 2
>
> Adding trace=255 does not produce much more in the way of useful
> information.
>
> At no time does the webcam function, in saying that it is *recognised*.  I
> can confirm that using Ekiga and the webcam appears in the list.  Ekiga is
> unable to obtain the requested pallete.
>
> It appears to fail, when using luvcview, at the following section:
>
> /* set format in */
>     memset(&vd->fmt, 0, sizeof(struct v4l2_format));
>     vd->fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
>     vd->fmt.fmt.pix.width = vd->width;
>     vd->fmt.fmt.pix.height = vd->height;
>     vd->fmt.fmt.pix.pixelformat = vd->formatIn;
>     vd->fmt.fmt.pix.field = V4L2_FIELD_ANY;
>     ret = ioctl(vd->fd, VIDIOC_S_FMT, &vd->fmt);
>     if (ret < 0) {
>       printf("Unable to set format: %d.\n", errno);
>       goto fatal;
>
> Any suggestions???

Please try the attached patch. Don't forget to post lsusb output with usbutils 
0.72 or newer.

Best regards,

Laurent Pinchart
Index: uvc_driver.c
===================================================================
--- uvc_driver.c	(revision 108)
+++ uvc_driver.c	(working copy)
@@ -1642,6 +1642,16 @@
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_PROBE_EXTRAFIELDS
 	},
+	/* Bison */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x5986,
+	  .idProduct		= 0x0100,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_PROBE_MINMAX
+	},
 	/* Generic USB Video Class */
 	{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) },
 	{}
_______________________________________________
Linux-uvc-devel mailing list
Linux-uvc-devel@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to