This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: USB-UVC device issue

Part Number: AM5728


Tool/software: Linux

Hi,

I want the am5728 board to stream the video which evm camera(register as video1) captured to PC as an USB-UVC device.

I have tried below commands to debug the Gadget side and found the the stream is failed.

The PLSDK I used is ti-processor-sdk-linux-am57xx-evm-04.01.00.06

root@am57xx-evm:~# modprobe g_webcam streaming_maxpacket=3062
[ 71.906926] g_webcam gadget: uvc_function_bind
[ 71.911648] g_webcam gadget: Webcam Video Gadget
[ 71.916289] g_webcam gadget: g_webcam ready
root@am57xx-evm:~# uvcgadget -d /dev/video2
-sh: uvcgadget: command not found
root@am57xx-evm:~# uvc-gadget -d /dev/video2
open succeeded, file descriptor = 3
device is dwc3-gadget on bus gadget

Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument [ 104.485856] g_webcam gadget: high-speed config #1: Video
(22).
Unable to dequeue buffer: Invalid argument (22).
Unable [ 104.494787] g_webcam gadget: uvc_function_set_alt(0, 0)
to dequeue buffer: Invalid argument (22).
Unable to dequeue buf[ 104.505604] g_webcam gadget: reset UVC Control
fer: Invalid argument (22).
Unable to dequeue buffer: Invalid a[ 104.515656] g_webcam gadget: uvc_function_set_alt(1, 0)
rgument (22).
[ 104.526599] g_webcam gadget: uvc_function_set_alt(1, 0)

Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid[ 104.569049] g_webcam gadget: uvc_function_set_alt(1, 0)
argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
bRequestType a1 bRequest 86 wValue 0400 wIndex 0100 wLength 0001
control request (req 86 cs 04)
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
Unable to dequeue buffer: Invalid argument (22).
bRequestType a1 bRequest 81 wValue 0200 wIndex 0000 wLength 0001
control request (req 81 cs 02)

Any insight on this is welcome.

  • boycchi,

    You only see this message when the host video streaming application is not started yet, is it correct?
    This is a harmless problem in uvc-gadget.c example. I deleted that printf() code in my copy of uvc-gadget.c to eliminate those messages.

  • Hi Bin,
    The host streaming application didn't show anything,it supposed to show a color bar after "uvc-gadget -d /dev/video2",right?
  • video streaming should work. What host application do you use?
    SDK-4.1.0.6 is old, now I don't remember the high-bandwidth is supported or not on top of my head. I will check it later when I get some time.
    Does video streaming work if you don't pass "streaming_maxpacket=3062" when loading g_webcam driver?
  • I have try don't pass "streaming_maxpacket=3062" when loading g_webcam driver.It still failed.
    The application i used is Amcap on windows and i also tried the luvcview on ubuntu.
  • I never tested it on Windows host, but I use the following command on Ubuntu.

    luvcview -d /dev/video1 -f yuv

    I don't have the setup ready now, maybe later today I will test this case with SDK v4.1.0.6 release and let you know.
  • By the way, please ensure your uvc-gadget.c has the following patch applied.

    From 74e03eb4b8659b98ba1f4e11d919bf7e6ae07066 Mon Sep 17 00:00:00 2001
    From: Roger Quadros <rogerq@ti.com>
    Date: Fri, 3 Mar 2017 13:17:15 +0200
    Subject: [PATCH] uvc-gadget: Fix Set Interface (alternate setting) response
     behaviour
    
    On alternate setting change, webcam gadget sends us a UVC_EVENT_STREAMON
    or UVC_EVENT_STREAMOFF event. It expects delayed status response on
    STREAMON event only but doesn't expect us to send that response over USB.
    It sends the delayed response when we issue the VIDIOC_STREAMON ioctl.
    
    So we must not send UVCIOC_SEND_RESPONSE ioctl in these cases that too
    with invalid response length.
    
    Without this, the ISO streaming doesn't work if host application
    (e.g. luvcview) is closed and restarted.
    On dwc3 gadget controller it was resulting in Buffer Expiry error on
    the ISO endpoint.
    
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    ---
     uvc-gadget.c | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/uvc-gadget.c b/uvc-gadget.c
    index f3807980c206..dd2fc06e2377 100644
    --- a/uvc-gadget.c
    +++ b/uvc-gadget.c
    @@ -595,12 +595,12 @@ uvc_events_process(struct uvc_device *dev)
     	case UVC_EVENT_STREAMON:
     		uvc_video_reqbufs(dev, 4);
     		uvc_video_stream(dev, 1);
    -		break;
    +		return;
     
     	case UVC_EVENT_STREAMOFF:
     		uvc_video_stream(dev, 0);
     		uvc_video_reqbufs(dev, 0);
    -		break;
    +		return;
     	}
     
     	ioctl(dev->fd, UVCIOC_SEND_RESPONSE, &resp);
    -- 
    1.9.1
    
    

  • I have tried the luvcview -d /dev/video1 -f yuv and it show llike that.And it's same when i tried to stream a jpg file or a yuv file

    zyy@ubuntu:~/ti-processor-sdk-linux-am57xx-evm-04.01.00.06/example-applications$ luvcview -d /dev/video0 -f yuv
    luvcview 0.2.6

    SDL information:
    Video driver: x11
    A window manager is available
    Device information:
    Device path: /dev/video0
    Stream settings:
    Frame format: YUYV
    Frame size: 640x360 (requested size 640x480 is not supported by device)
    Frame rate: 15 fps (requested frame rate 30 fps is not supported by device)

    I don't config the size 640x480 where it comes from

  • does the pink/green strips scrolling? This is indeed the image streamed from the uvc gadget. I didn't try to stream a jpg file, so I don't have a comment on that.

    boycchi said:

    Frame size: 640x360 (requested size 640x480 is not supported by device)
    Frame rate: 15 fps (requested frame rate 30 fps is not supported by device)

    I don't config the size 640x480 where it comes from

    I guess 640x480 is the default from luvcview.

  • Yeah,It's scrolling,but I want to stream video captured by other video device to the pc.So where do i start?
  • uvc-gadget.c is just a simple example showing how to generate the video images to be streamed, which is the pink/green strips in this case.

    You would have to implement your own application for your requirement, basically deque the images from the other video device and queue them into the g_webcam video device.