Hi Thomas, On Wednesday 16 January 2008, Thomas Netter wrote: > Laurent Pinchard wrote: > > Please get the kernel log messages using dmesg instead. The > > networkmanager and hal messages just cripple the output. > > Load modules: > modprobe v4l2-common > modprobe videodev > modprobe v4l1-compat > modprobe compat_ioctl32 > modprobe video-buf > insmod uvcvideo.ko > > /etc/syslog/messages: > Jan 16 16:43:43 zadig kernel: [ 7844.608000] Linux video capture interface: > v2.00 Jan 16 16:44:17 zadig kernel: [ 7877.848000] usbcore: registered new > interface driver uvcvideo Jan 16 16:44:17 zadig kernel: [ 7877.852000] USB > Video Class driver (v0.1.0) > > dmesg: > [ 7844.608000] Linux video capture interface: v2.00 > [ 7877.848000] usbcore: registered new interface driver uvcvideo > [ 7877.852000] USB Video Class driver (v0.1.0) > > > Start camera into PC CAMERA mode: > [ 8037.988000] usb 2-1: new high speed USB device using ehci_hcd and > address 3 [ 8038.120000] usb 2-1: configuration #1 chosen from 1 choice > [ 8038.132000] uvcvideo: Found UVC 1.00 device SANYO Digital Camera > (0474:0241) > > Start luvcview. Image is good. No dmesg output. > Stop luvcview. No dmesg output > Start luvcview. Error: > > 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 > > dmesg: > [ 8191.364000] uvcvideo: Failed to query (1) UVC control 1 (unit 0) : -110 > (exp. 26).
This is quite weird. The camera starts streaming without any problem, but after streaming for a while it fails to answer all USB requests. The requests sent before stream start probably confuse the camera somehow. I'll have another wild guess, could you please try the attached patch ? It removes a few differences in requests sent to the device compared to what the Windows driver does. Best regards, Laurent Pinchart
Index: uvc_video.c =================================================================== --- uvc_video.c (revision 163) +++ uvc_video.c (working copy) @@ -858,11 +858,8 @@ break; } - /* Commit the default settings. */ probe->bFormatIndex = format->index; probe->bFrameIndex = frame->bFrameIndex; - if ((ret = uvc_set_video_ctrl(video, probe, 0)) < 0) - return ret; video->streaming->cur_format = format; video->streaming->cur_frame = frame; @@ -897,6 +894,10 @@ if ((ret = uvc_queue_enable(&video->queue, 1)) < 0) return ret; + /* Commit the streaming parameters. */ + if ((ret = uvc_set_video_ctrl(video, &video->streaming->ctrl, 0)) < 0) + return ret; + return uvc_init_video(video); } Index: uvc_v4l2.c =================================================================== --- uvc_v4l2.c (revision 167) +++ uvc_v4l2.c (working copy) @@ -256,9 +256,6 @@ if (ret < 0) return ret; - if ((ret = uvc_set_video_ctrl(video, &probe, 0)) < 0) - return ret; - memcpy(&video->streaming->ctrl, &probe, sizeof probe); video->streaming->cur_format = format; video->streaming->cur_frame = frame; @@ -319,10 +316,6 @@ if ((ret = uvc_probe_video(video, &probe)) < 0) return ret; - /* Commit the new settings. */ - if ((ret = uvc_set_video_ctrl(video, &probe, 0)) < 0) - return ret; - memcpy(&video->streaming->ctrl, &probe, sizeof probe); /* Return the actual frame period. */
_______________________________________________ Linux-uvc-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/linux-uvc-devel
