The problem: >From reading around this list and elsewhere, it appears that you simply cannot run more than one webcam video stream per USB root hub.
When enabled for video streaming, the webcam reserves the full isochronous bandwidth needed to stream data at the selected resolution and framerate, regardless of whether your application acquires the full framerate or just samples at one frame per second. Hence, trying to set a low framerate in your user application has no effect to reduce the bandwidth from the webcam. The webcam is still streaming at the maximum framerate regardless. I'm guessing that the video stream is being 'pushed' out by the webcam firmware and so the UVC driver must take all that it is given... *A possible solution* ? Instead, could the UVC driver 'simulate' a reduced framerate by instead using the "STILL_IMAGE_FRAME" mode of the webcam and grab for itself a set number of images per second? Or even only when polled by a read from the user application? On *nix, "everything is a file"... Could the uvc driver accept reading of /dev/videoX by the command "cp" so that still image data is copied, formatted for a jpg or png? Could the "quirks" setting be abused to set the image grab rate? Or some other neater method? Further details: I'm trying to use two webcams simultaneously: iManufacturer 1 Sweex iProduct 2 WC060 Series HD Webcam On separate hubs, they work fine. On the same hub, the second one to start shows the error: "Error starting stream VIDIOC_STREAMON: No space left on device". I've only got the one root hub on the system I want to use for the two webcams! Their descriptors show: bFrameIntervalType 2 dwFrameInterval( 0) 2000000 dwFrameInterval( 1) 4000000 Can I tweak the UVC driver to preferentially choose the slower frame rate available? Aside: The MJPG format doesn't seem to work, nor are any compression settings visible... Given a few hints or a patch, I can hack the kernel module to test :-) This is running on Gentoo, kernel 2.6.34 using the in-kernel uvc module. Any comment/ideas welcomed. Regards, Martin >From lsusb -v (excerpt): VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 9 bmCapabilities 0x00 Still image unsupported wWidth 1600 wHeight 1200 dwMinBitRate 768000 dwMaxBitRate 196608000 dwMaxVideoFrameBufferSize 3840000 dwDefaultFrameInterval 2000000 bFrameIntervalType 2 dwFrameInterval( 0) 2000000 dwFrameInterval( 1) 4000000 VideoStreaming Interface Descriptor: bLength 42 bDescriptorType 36 bDescriptorSubtype 3 (STILL_IMAGE_FRAME) bEndpointAddress 0 bNumImageSizePatterns 9 wWidth( 0) 640 wHeight( 0) 480 wWidth( 1) 352 wHeight( 1) 288 wWidth( 2) 320 wHeight( 2) 240 wWidth( 3) 176 wHeight( 3) 144 wWidth( 4) 160 wHeight( 4) 120 wWidth( 5) 800 wHeight( 5) 600 wWidth( 6) 1280 wHeight( 6) 960 wWidth( 7) 1280 wHeight( 7) 1024 wWidth( 8) 1600 wHeight( 8) 1200 bNumCompressionPatterns 9 _______________________________________________ Linux-uvc-devel mailing list Linux-uvc-devel@lists.berlios.de https://lists.berlios.de/mailman/listinfo/linux-uvc-devel