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.

PROCESSOR-SDK-AM437X: UVC gadget support guide

Part Number: PROCESSOR-SDK-AM437X

Hi Champs

Can you please give us any helpful guidance to support UVC in PSDK lateset release even Linux kernel should take care of it?

The general guidance to enable and test the UVC is needed.

Thanks.

Regards, 

Jack

  • Hi Jack,

    Is there anything that you are specifically looking for?

    The UVC support on AM437x has no difference from any other platforms including x86 Linux. So any information of UVC you found on internet would be applicable to AM437x too.

  • Hi Bin Liu

    There's an issue when customer tried to enable UVC feature on top of PSDK release.

    They identified UVC device is recognized as /dev/video1. However the 1 frame is only transferred. then the error is occurred by UVC driver.

    They tried to use the newest uvc-gadget from https://github.com/wlhe/uvc-gadget

    root@am437x-aum100:~# ./uvc-gadget.sh start
    Detecting platform:
      board : ACROWELL AM437x AUM100
      udc   : 48390000.usb
    Creating the USB gadget
    Creating gadget directory g1
    OK
    Setting Vendor and Product ID's
    OK
    Setting English strings
    OK
    Creating Config
    Creating functions...
            Creating UVC gadget functionality : uvc.0
    OK
    Binding USB Device Controller
    [   14.206664] configfs-gadget gadget: uvc: uvc_function_bind()
    OK
    root@am437x-aum100:~# ls /dev/video*
    /dev/video0  /dev/video1
    root@am437x-aum100:~# ./uvc-gadget -v /dev/video0 -u /dev/video1
    V4L2 device is TI AM437x VPFE on bus platform:vpfe 48326000.vpfe
    V4L2: Getting current format: YUYV 640x480
    V4L2: Setting format to: YUYV 640x480
    V4L2: Getting current format: YUYV 640x480
    v4l2 open succeeded, file descriptor = 3
    uvc device is dwc3-gadget on bus gadget
    uvc open succeeded, file descriptor = 4
    V4L2: Buffer 0 mapped at address 0xb6eb2000.
    V4L2: Buffer 1 mapped at address 0xb6e1c000.
    V4L2: Buffer 2 mapped at address 0xb6d86000.
    V4L2: 3 buffers allocated.
    [   31.211402] configfs-gadget gadget: high-speed config #1: c
    [   31.217022] configfs-gadget gadget: uvc: uvc_function_set_alt(0, 0)
    [   31.223317] configfs-gadget gadget: uvc: reset UVC Control
    [   31.228852] configfs-gadget gadget: uvc: uvc_function_set_alt(1, 0)
    [   31.235413] configfs-gadget gadget: uvc: uvc_function_set_alt(1, 0)
    control request (req 86 cs 02)[   31.289446] configfs-gadget gadget: uvc: uvc_function_set_alt(1, 0)
    
    control request (req 86 cs 02)
    streaming request (req 87 cs 01)
    streaming request (req 01 cs 01)
    setting probe control, length = 26
    streaming request (req 81 cs 01)
    control request (req 87 cs 02)
    control request (req 82 cs 02)
    control request (req 83 cs 02)
    control request (req 84 cs 02)
    control request (req 87 cs 02)
    control request (req 84 cs 02)
    control request (req 81 cs 02)
    control request (req 81 cs 02)
    streaming request (req 01 cs 01)
    setting probe control, length = 26
    streaming request (req 82 cs 01)
    streaming request (req 83 cs 01)
    streaming request (req 01 cs 01)
    setting probe control, length = 26
    streaming request (req 81 cs 01)
    streaming request (req 01 cs 01)
    setting probe control, length = 26
    streaming request (req 82 cs 01)
    streaming request (req 83 cs 01)
    streaming request (req 01 cs 01)
    setting probe control, length = 26
    streaming request (req 81 cs 01)
    streaming request (req 01 cs 02)[   45.303311] configfs-gadget gadget: uvc: uvc_function_set_alt(1, 1)
    [   45.310729] configfs-gadget gadget: uvc: reset UVC
    
    setting commit control, length = 26
    [   45.316955] pc7080d 1-0033: AGAPAO>>pc7080d_power_on:
    UVC: 2 buffers allocated.
    V4L2: Starting video stream.
    UVC: Starting video stream.
    [   45.507357] configfs-gadget gadget: uvc: uvc_function_set_alt(1, 0)
    [   45.524163] pc7080d 1-0033: AGAPAO>>pc7080d_power_off:
    [   45.529447] dwc3 48390000.usb: request 81c55bbc was not queued to ep2in
    [   45.536477] dwc3 48390000.usb: request ea09816b was not queued to ep2in
    [   45.543134] dwc3 48390000.usb: request 30c7006d was not queued to ep2in
    [   45.550060] dwc3 48390000.usb: request 2fab4a07 was not queued to ep2in
    UVC: Stopping video stream.
    streaming request (req 01 cs 01)
    setting probe control, lengt[   45.563384] configfs-gadget gadget: uvc: uvc_function_set_alt(1, 1)
    [   45.571199] configfs-gadget gadget: uvc: reset UVC
    h = 26
    streaming request (req 82 cs 01)
    streaming request (req[   45.577573] pc7080d 1-0033: AGAPAO>>pc7080d_power_on:
    83 cs 01)
    streaming request (req 01 cs 01)
    setting probe control, length = 26
    streaming request (req 81 cs 01)
    streaming request (req 01 cs 02)
    setting commit control, length = 26
    UVC: 2 buffers allocated.
    V4L2: Starting video stream.
    UVC: Starting video stream.
    [   45.786810] configfs-gadget gadget: uvc: VS request completed with status -18.
    [   45.794107] configfs-gadget gadget: uvc: VS request completed with status -18.
    UVC: Possible USB shutdown requested from Host, seen during VIDIOC_DQBUF
    select timeout
    [   47.814106] pc7080d 1-0033: AGAPAO>>pc7080d_power_off:
    [   47.820667] dwc3 48390000.usb: request 2fab4a07 was not queued to ep2in
    [   47.828143] dwc3 48390000.usb: request 30c7006d was not queued to ep2in
    [   47.835704] dwc3 48390000.usb: request ea09816b was not queued to ep2in
    [   47.842502] dwc3 48390000.usb: request 81c55bbc was not queued to ep2in
    UVC: Stopping video stream.[   47.850419] configfs-gadget gadget: uvc: uvc_function_disable()
    

    The following is their captured result. 

    Can you please help this issue to suppoprt UVC gadget  succefully?

    Their target goal is 640x480@30fps by UVC gadget to stream video over USB to a host PC.

  • Hi Jack,

    Now I understood you are using UVC gadget on AM437x. This function is not supported by the Processor SDK. The uvc-gadget program is an open source project, please ask the open source community for support.