Hi Michael,
On Saturday 07 June 2008, MIchael Sparks wrote:
> Hi Laurent,
>
> Many thanks for getting back to me :)
You're welcome.
> On Friday 06 June 2008 23:12:50 Laurent Pinchart wrote:
> ..
>
> > *sigh*. I hate protocol errors. They are most of the time caused by buggy
> > devices, and buggy devices mean I have to find a software workaround :-S
>
> I guessed that might be the case :-/
>
> > Could you please try to blindly ignore the usb_set_interface return value
> > ? I'd like to know if the second call is really required.
>
> I've tried changing it to specifically ignore that error:
> Index: uvc_video.c
> ===================================================================
> --- uvc_video.c (revision 213)
> +++ uvc_video.c (working copy)
> @@ -750,8 +750,10 @@
> if (i >= intf->num_altsetting)
> return -EIO;
>
> - if ((ret = usb_set_interface(video->dev->udev, intfnum, i))
> < 0) - return ret;
> + if ((ret = usb_set_interface(video->dev->udev, intfnum, i))
> < 0) { + if (ret != -71) // Let's try blindly
> ignoring protocol errors as requested +
> return ret;
> + }
>
> ret = uvc_init_video_isoc(video, ep);
> } else {
>
> Any when I now retry, I get the following error:
>
> ~/> ./WebCam.py
> Traceback (most recent call last):
> File "./WebCam.py", line 214, in <module>
> VideoCapturePlayer().run() # Runs at full speed - basic test case
> File "./WebCam.py", line 27, in __init__
> self.camera.start()
> EnvironmentError: ioctl(VIDIOC_STREAMON) failure : 90, Message too long
>
> For good measure I also tried this ...
>
> Index: uvc_video.c
> ===================================================================
> --- uvc_video.c (revision 213)
> +++ uvc_video.c (working copy)
> @@ -749,10 +749,13 @@
>
> if (i >= intf->num_altsetting)
> return -EIO;
> +
> + ret = usb_set_interface(video->dev->udev, intfnum, i);
> +// if ((ret = usb_set_interface(video->dev->udev, intfnum, i))
> < 0) { +// if (ret != -71) // Let's try blindly
> ignoring protocol errors as requested +//
> return ret;
> +// }
>
> - if ((ret = usb_set_interface(video->dev->udev, intfnum, i))
> < 0) - return ret;
> -
> ret = uvc_init_video_isoc(video, ep);
> } else {
> /* Bulk endpoint, proceed to URB initialization. */
>
> ... ie completely ignoring the return code, and again I get this error:
>
> ~/> ./WebCam.py
> Traceback (most rcall last):
> File "./WebCam.py", line 214, in <module>
> VideoCapturePlayer().run() # Runs at full speed - basic test case
> File "./WebCam.py", line 27, in __init__
> self.camera.start()
> EnvironmentError: ioctl(VIDIOC_STREAMON) failure : 90, Message too long
>
> Making it simply retry just seems to work.
Thanks for testing.
> > What kernel version are you running ?
>
> This is the output from uname -a & /proc/version
>
> ~/> uname -a
> Linux kamaelia-NG 2.6.22.17-0.1-default #1 SMP 2008/02/10 20:01:04 UTC i686
> i686 i386 GNU/Linux
>
> ~/> more /proc/version
> Linux version 2.6.22.17-0.1-default ([EMAIL PROTECTED]) (gcc version 4.2.1
> (SUSE Linux)) #1 SMP 2008/02/10 20:01:04 UTC
Would you be able to try 2.6.26-rc5 ? I'd like to know if the recent patches
to the EHCI driver solve the issue (or maybe make it worse :-)).
Best regards,
Laurent Pinchart
_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel