uvcvideo: Finally fix Logitech Quickcam for Notebooks Pro
Hello,
I have a Logitech Quickcam for Notebooks Pro camera (046d:08c3) which just does not work even with kernel 2.6.31 and has never worked well before.
On http://linux-uvc.berlios.de/, there are two problems listed. I want to really fix these two problems so the camera will just work after plugging in (and not disconnect). I started with problem no. 2 as this causes the camera not to work at all when plugged in:
usb 5-2.4: new high speed USB device using ehci_hcd and address 7 usb 5-2.4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).
When I do "modprobe snd_usb_audio", then "rmmod snd_usb_audio" and finally "modprobe uvcvideo", it works. So it looks like snd_usb_audio does some initialization that allows uvcvideo to work. It didn't work at all I didn't have snd_usb_audio module compiled.
What was the change that supposedly broke this in 2.6.22?
Signature · 1 line
Ondrej Zary
Quoted 17 lines · Ondrej Zary
Hello,
I have a Logitech Quickcam for Notebooks Pro camera (046d:08c3) which just does not work even with kernel 2.6.31 and has never worked well before.On http://linux-uvc.berlios.de/, there are two problems listed. I want to really fix these two problems so the camera will just work after plugging in (and not disconnect). I started with problem no. 2 as this causes the camera not to work at all when plugged in:
usb 5-2.4: new high speed USB device using
ehci_hcdand address 7 usb 5-2.4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).
Quoted 6 lines
When I do "modprobe
snd_usb_audio", then "rmmodsnd_usb_audio" and finally "modprobe uvcvideo", it works. So it looks likesnd_usb_audiodoes some initialization that allows uvcvideo to work. It didn't work at all I didn't havesnd_usb_audiomodule compiled.What was the change that supposedly broke this in 2.6.22?
I discovered that it's not related to usb audio at all. Doing "rmmod uvcvideo" and "modprobe uvcvideo" repeatedly succeeded after a couple of tries. Increasing UVC_CTRL_STREAMING_TIMEOUT to 3000 helped (2000 was not enough).
Increase UVC_CTRL_STREAMING_TIMEOUT to fix initialization of Logitech Quickcam for Notebooks Pro.
This fixes following error messages:
uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).
drivers/media/video/uvc/uvcvideo.h +1 -1
@@ -304,7 +304,7 @@#define UVC_MAX_STATUS_SIZE 16#define UVC_CTRL_CONTROL_TIMEOUT 300 -#define UVC_CTRL_STREAMING_TIMEOUT 1000 +#define UVC_CTRL_STREAMING_TIMEOUT 3000/* Devices quirks */ #define UVC_QUIRK_STATUS_INTERVAL 0x00000001
Signature · 1 line
Ondrej Zary
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 1 line · Gianluca Cecchi
On Wed, Oct 7, 2009 at 2:59 PM, Ondrej Zary
Quoted 44 lines · <[email protected]>wrote:
Quoted 37 lines
[snip]
Quoted 1 line
What was the change that supposedly broke this in 2.6.22?
I discovered that it's not related to usb audio at all. Doing "rmmod uvcvideo"
and "modprobe uvcvideo" repeatedly succeeded after a couple of tries. IncreasingUVC_CTRL_STREAMING_TIMEOUTto 3000 helped (2000 was not enough).Increase
UVC_CTRL_STREAMING_TIMEOUTto fix initialization of Logitech Quickcam for Notebooks Pro.
This fixes following error messages:
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).Signed-off-by Ondrej Zary <[email protected]>---
linux-2.6.31-orig/drivers/media/video/uvc/uvcvideo.h2009-09-10 00:13:59.000000000 +0200+++
linux-2.6.31/drivers/media/video/uvc/uvcvideo.h2009-10-07
13:47:27.000000000 +0200drivers/media/video/uvc/uvcvideo.h +1
-2@@ -304,7 +304,7 @@#define UVC_MAX_STATUS_SIZE 16#define UVC_CTRL_CONTROL_TIMEOUT 300 -#define UVC_CTRL_STREAMING_TIMEOUT 1000 +#define UVC_CTRL_STREAMING_TIMEOUT 3000/* Devices quirks */ #define UVC_QUIRK_STATUS_INTERVAL 0x00000001 --Quoted 1 line
Ondrej Zary
Could this kind of fix also be useful in my case with Omnivision oem in Dell sp2208wfp monitor, in your opinion?
See thread
https://lists.berlios.de/pipermail/linux-uvc-devel/2008-February/003076.html
Quoted 2 lines
incidentally at that time I was using Fedora 8 32bit with kernel 2.6.23.15-137.fc8 that indeed is post 2.6.22....
I don't know - try it. My patch is not related to 2.6.22 and usb-audio at all.
Signature · 1 line
Ondrej Zary
Hi Ondrej,
Quoted 49 lines · On Wednesday 07 October 2009 14:59:40 Ondrej Zary wrote:
Quoted 18 lines · Ondrej Zary
Hello,
I have a Logitech Quickcam for Notebooks Pro camera (046d:08c3) which just does not work even with kernel 2.6.31 and has never worked well before.On http://linux-uvc.berlios.de/, there are two problems listed. I want to really fix these two problems so the camera will just work after plugging in (and not disconnect). I started with problem no. 2 as this causes the camera not to work at all when plugged in:
usb 5-2.4: new high speed USB device using
ehci_hcdand address 7 usb 5-2.4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).Quoted 6 lines
When I do "modprobe
snd_usb_audio", then "rmmodsnd_usb_audio" and finally "modprobe uvcvideo", it works. So it looks likesnd_usb_audiodoes some initialization that allows uvcvideo to work. It didn't work at all I didn't havesnd_usb_audiomodule compiled.What was the change that supposedly broke this in 2.6.22?
I discovered that it's not related to usb audio at all. Doing "rmmod
uvcvideo" and "modprobe uvcvideo" repeatedly succeeded after a couple of tries. IncreasingUVC_CTRL_STREAMING_TIMEOUTto 3000 helped (2000 was not enough).Increase
UVC_CTRL_STREAMING_TIMEOUTto fix initialization of Logitech Quickcam for Notebooks Pro.
This fixes following error messages:
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling
workaround. uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26). uvcvideo: Failed to initialize the device (-5).Signed-off-by Ondrej Zary <[email protected]>---
linux-2.6.31-orig/drivers/media/video/uvc/uvcvideo.h2009-09-10
00:13:59.000000000 +0200 +++
linux-2.6.31/drivers/media/video/uvc/uvcvideo.h2009-10-07
13:47:27.000000000 +0200 @@ -304,7 +304,7 @@
#defineUVC_MAX_STATUS_SIZE16#define
UVC_CTRL_CONTROL_TIMEOUT300
drivers/media/video/uvc/uvcvideo.h line 310
Quoted 5 lines
drivers/media/video/uvc/uvcvideo.h +1
-1-#define UVC_CTRL_STREAMING_TIMEOUT 1000 +#define UVC_CTRL_STREAMING_TIMEOUT 3000/* Devices quirks */ #define UVC_QUIRK_STATUS_INTERVAL 0x00000001
Thanks for the patch. I wonder if it will help other Logitech users.
The UVC specification unfortunately doesn't give a time boundary for answering streaming requests, so that's up to the developers. I'm pretty sure we will find at least one webcam model that will require 3001ms at some point :-)
I was thinking about adding a module parameter to set the streaming control timeout. I'm not sure what the default value should be though. What's your opinion on this ? If we decide to increase the default value, where should we stop ?
Signature · 3 lines
Regards, Laurent Pinchart
Quoted 64 lines · Laurent Pinchart
Hi Ondrej,
Quoted 48 lines · On Wednesday 07 October 2009 14:59:40 Ondrej Zary wrote:
Quoted 18 lines · Ondrej Zary
Hello,
I have a Logitech Quickcam for Notebooks Pro camera (046d:08c3) which just does not work even with kernel 2.6.31 and has never worked well before.On http://linux-uvc.berlios.de/, there are two problems listed. I want to really fix these two problems so the camera will just work after plugging in (and not disconnect). I started with problem no. 2 as this causes the camera not to work at all when plugged in:
usb 5-2.4: new high speed USB device using
ehci_hcdand address 7 usb 5-2.4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).Quoted 6 lines
When I do "modprobe
snd_usb_audio", then "rmmodsnd_usb_audio" and finally "modprobe uvcvideo", it works. So it looks likesnd_usb_audiodoes some initialization that allows uvcvideo to work. It didn't work at all I didn't havesnd_usb_audiomodule compiled.What was the change that supposedly broke this in 2.6.22?
I discovered that it's not related to usb audio at all. Doing "rmmod
uvcvideo" and "modprobe uvcvideo" repeatedly succeeded after a couple of tries. IncreasingUVC_CTRL_STREAMING_TIMEOUTto 3000 helped (2000 was
not enough).Increase
UVC_CTRL_STREAMING_TIMEOUTto fix initialization of Logitech Quickcam for Notebooks Pro.
This fixes following error messages:
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling
workaround. uvcvideo: Failed to query (129) UVC probe control : -110
(exp. 26). uvcvideo: Failed to initialize the device (-5).Signed-off-by Ondrej Zary <[email protected]>---
linux-2.6.31-orig/drivers/media/video/uvc/uvcvideo.h2009-09-10
00:13:59.000000000 +0200 +++
linux-2.6.31/drivers/media/video/uvc/uvcvideo.h2009-10-07
13:47:27.000000000 +0200 @@ -304,7 +304,7 @@
#defineUVC_MAX_STATUS_SIZE16#define
UVC_CTRL_CONTROL_TIMEOUT300drivers/media/video/uvc/uvcvideo.h line 310
Quoted 5 lines
drivers/media/video/uvc/uvcvideo.h +1
-1-#define UVC_CTRL_STREAMING_TIMEOUT 1000 +#define UVC_CTRL_STREAMING_TIMEOUT 3000/* Devices quirks */ #define UVC_QUIRK_STATUS_INTERVAL 0x00000001Thanks for the patch. I wonder if it will help other Logitech users.
The UVC specification unfortunately doesn't give a time boundary for answering streaming requests, so that's up to the developers. I'm pretty sure we will find at least one webcam model that will require 3001ms at some point :-)
Quoted 4 lines
I was thinking about adding a module parameter to set the streaming control timeout. I'm not sure what the default value should be though. What's your opinion on this ? If we decide to increase the default value, where should we stop ?
I really don't know. Maybe only the first request is slow as the hardware needs some time to initialize?
If someone knows what value is used by Windows or Mac OS X, that's probably the "right" choice as most devices are tested with them.
Signature · 1 line
Ondrej Zary
Hi Ondrej,
Quoted 65 lines · On Friday 09 October 2009 08:32:06 Ondrej Zary wrote:
Quoted 64 lines · Laurent Pinchart
Hi Ondrej,
Quoted 48 lines · On Wednesday 07 October 2009 14:59:40 Ondrej Zary wrote:
Quoted 18 lines · Ondrej Zary
Hello,
I have a Logitech Quickcam for Notebooks Pro camera (046d:08c3) which just does not work even with kernel 2.6.31 and has never worked well before.On http://linux-uvc.berlios.de/, there are two problems listed. I want to really fix these two problems so the camera will just work after plugging in (and not disconnect). I started with problem no. 2 as this causes the camera not to work at all when plugged in:
usb 5-2.4: new high speed USB device using
ehci_hcdand address 7 usb 5-2.4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling workaround.
uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26).
uvcvideo: Failed to initialize the device (-5).Quoted 6 lines
When I do "modprobe
snd_usb_audio", then "rmmodsnd_usb_audio" and finally "modprobe uvcvideo", it works. So it looks likesnd_usb_audiodoes some initialization that allows uvcvideo to work. It didn't work at all I didn't havesnd_usb_audiomodule compiled.What was the change that supposedly broke this in 2.6.22?
I discovered that it's not related to usb audio at all. Doing "rmmod
uvcvideo" and "modprobe uvcvideo" repeatedly succeeded after a couple
of tries. IncreasingUVC_CTRL_STREAMING_TIMEOUTto 3000 helped (2000 was not enough).Increase
UVC_CTRL_STREAMING_TIMEOUTto fix initialization of Logitech Quickcam for Notebooks Pro.
This fixes following error messages:
uvcvideo: UVC non compliance -GET_DEF(PROBE)not supported. Enabling
workaround. uvcvideo: Failed to query (129) UVC probe control : -110
(exp. 26). uvcvideo: Failed to initialize the device (-5).Signed-off-by Ondrej Zary <[email protected]>---
linux-2.6.31-orig/drivers/media/video/uvc/uvcvideo.h2009-09-10
00:13:59.000000000 +0200 +++
linux-2.6.31/drivers/media/video/uvc/uvcvideo.h2009-10-07
13:47:27.000000000 +0200 @@ -304,7 +304,7 @@
#defineUVC_MAX_STATUS_SIZE16#define
UVC_CTRL_CONTROL_TIMEOUT300drivers/media/video/uvc/uvcvideo.h line 310
Quoted 5 lines
drivers/media/video/uvc/uvcvideo.h +1
-1-#define UVC_CTRL_STREAMING_TIMEOUT 1000 +#define UVC_CTRL_STREAMING_TIMEOUT 3000/* Devices quirks */ #define UVC_QUIRK_STATUS_INTERVAL 0x00000001Thanks for the patch. I wonder if it will help other Logitech users.
The UVC specification unfortunately doesn't give a time boundary for answering streaming requests, so that's up to the developers. I'm pretty sure we will find at least one webcam model that will require 3001ms at some point :-)
Quoted 7 lines
Quoted 4 lines
I was thinking about adding a module parameter to set the streaming control timeout. I'm not sure what the default value should be though. What's your opinion on this ? If we decide to increase the default value, where should we stop ?
I really don't know. Maybe only the first request is slow as the hardware needs some time to initialize?
That's my guess as well.
Quoted 2 lines
If someone knows what value is used by Windows or Mac OS X, that's probably the "right" choice as most devices are tested with them.
I've committed a patch that turns the timeout value into a module parameter and asked Mauro to pull from my repository. The default timeout value has been increased to 3000ms.
It seems the value used by the Windows driver is 5000ms. I have no information about what's done on Mac OS X. If it works with 3000ms lets keep it that way. I wouldn't be surprised if the 5000ms was some kind of rounded-up guessed value anyway :-)
Signature · 3 lines
Regards, Laurent Pinchart