AnsweredAssumed Answered

imx28 USB Camera - USB bandwidth issue?

Question asked by simong on Oct 5, 2012
Latest reply on Oct 8, 2012 by simong
Branched to a new discussion

Hi all,

I am attempting to add a USB camera to an existing system based around a Karo Tx28 module which utilises the imx28 processor.

The camera is UVC compatible and I have built video4linux and the ucvvideo driver into the system.

The camera works when plugged into a laptop running Ubuntu 10.10. 

I have built the libv4l2 libraries and am attempting to use the example v4l2grab application to grab an image on the target.

However upon running the application I receive the following errors:

 

uvcvideo: Failed to submit URB 0 (-28).

libv4l2: error turning on stream: No space left on device

error 28, No space left on device

 

I have googled this error and it seems to suggest that we have insufficient USB bandwidth however there is nothing else connected to the USB host port and as a high speed usb 2.0 port I would assume there is sufficient bandwidth for a camera. 

I have tried lowering the framesize the v4l2grab application requests but even at 160x120 (the lowest resolution our camera supports) the error was the same. 


Does anybody have any experience of this error and any potential solutions or areas worth investigating?


I am curious to know if anyone has any experience of using cameras with the imx28 and if it is actually possible to get a camera working on the USB host port?


If i turn on trace output for the uvcvideo driver ( modprobe uvcvideo trace=0xffff) i get the following output:

 

root@sw /home$ ./v4l2grab

uvcvideo: uvc_v4l2_open

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYCAP)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_G_FMT)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_G_PARM)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FMT)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FMT)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FRAMESIZES)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUM_FMT)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYCAP)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_G_INPUT)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_ENUMINPUT)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYCTRL)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_S_FMT)

uvcvideo: Trying format 0x56595559 (YUYV): 320x240.

uvcvideo: Using default frame interval 33333.3 us (30.0 fps).

uvcvideo: uvc_v4l2_ioctl(VIDIOC_G_PARM)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_REQBUFS)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYBUF)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYBUF)

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYBUF)

uvcvideo: uvc_v4l2_mmap

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QUERYBUF)

uvcvideo: uvc_v4l2_mmap

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QBUF)

uvcvideo: Queuing buffer 0.

uvcvideo: uvc_v4l2_ioctl(VIDIOC_QBUF)

uvcvideo: Queuing buffer 1.

uvcvideo: uvc_v4l2_ioctl(VIDIOC_STREAMON)

uvcvideo: Device requested 2688 B/frame bandwidth.

uvcvideo: Selecting alternate setting 6 (2688 B/frame bandwidth).

uvcvideo: Allocated 5 URB buffers of 32x2688 bytes each.

uvcvideo: Failed to submit URB 0 (-28).

libv4l2: error turning on stream: No spauvcvideo: uvc_v4l2_release

ce left on device

error 28, No space left on device

 

best regards,

Simon





Outcomes