Re: [Support query] UVC fails if defined as second function in a configfs composite driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ricardo,

Thank you for your response. I increased the trace level as advised
but didn't get any more useful information:

[27751.660199] uvcvideo: Probing generic UVC device 2
[27751.660306] uvcvideo: Found format YUV 4:2:2 (YUYV).
[27751.660310] uvcvideo: - 640x360 (15.0 fps)
[27751.660312] uvcvideo: - 1280x720 (2.0 fps)
[27751.660317] uvcvideo: Found a Status endpoint (addr 83).
[27751.660320] uvcvideo: Found UVC 1.00 device Linux for Tegra (0955:7020)
[27751.660327] uvcvideo: Added control
00000000-0000-0000-0000-000000000001/2 to device 2 entity 1
[27751.660428] uvcvideo: Failed to query (GET_INFO) UVC control 2 on
unit 1: -32 (exp. 1).
[27756.893967] uvcvideo: Adding mapping 'Exposure, Auto' to control
00000000-0000-0000-0000-000000000001/2.
[27756.893973] uvcvideo: Added control
00000000-0000-0000-0000-000000000101/2 to device 2 entity 2
[27762.013921] uvcvideo: Failed to query (GET_INFO) UVC control 2 on
unit 2: -110 (exp. 1).
[27762.013930] uvcvideo: Adding mapping 'Brightness' to control
00000000-0000-0000-0000-000000000101/2.
[27762.013934] uvcvideo: Scanning UVC chain: OT 3 <- PU 2 <- IT 1
[27762.013939] uvcvideo: Found a valid video chain (1 -> 3).
[27792.733672] uvcvideo: UVC non compliance - GET_DEF(PROBE) not
supported. Enabling workaround.
[27797.853646] uvcvideo: Failed to query (129) UVC probe control :
-110 (exp. 26).
[27797.853652] uvcvideo: Failed to initialize the device (-5).

In contrast, here is the log when UVC is successful (defined as first
function in the composite driver):

[27916.011570] uvcvideo: Probing generic UVC device 2
[27916.011666] uvcvideo: Found format YUV 4:2:2 (YUYV).
[27916.011669] uvcvideo: - 640x360 (15.0 fps)
[27916.011670] uvcvideo: - 1280x720 (2.0 fps)
[27916.011674] uvcvideo: Found a Status endpoint (addr 81).
[27916.011676] uvcvideo: Found UVC 1.00 device Linux for Tegra (0955:7020)
[27916.011681] uvcvideo: Added control
00000000-0000-0000-0000-000000000001/2 to device 2 entity 1
[27916.012026] uvcvideo: Adding mapping 'Exposure, Auto' to control
00000000-0000-0000-0000-000000000001/2.
[27916.012029] uvcvideo: Added control
00000000-0000-0000-0000-000000000101/2 to device 2 entity 2
[27916.012181] uvcvideo: Adding mapping 'Brightness' to control
00000000-0000-0000-0000-000000000101/2.
[27916.012183] uvcvideo: Scanning UVC chain: OT 3 <- PU 2 <- IT 1
[27916.012190] uvcvideo: Found a valid video chain (1 -> 3).
[27916.013757] uvcvideo: UVC device initialized.

I have also used usbmon since I've tried some USB sniffing tools to
try and figure out the problem. Please let me know of any more
comments or ideas.

Regards,

On Tue, Jun 14, 2022 at 3:39 PM Ricardo Ribalda <ribalda@xxxxxxxxxxxx> wrote:
>
> Hi Marisol
>
> Could you try increasing the trace level with:
>
> rmmod uvcvideo
> modprobe uvcvideo trace=0xffffffff
>
> And then connect your camera.
>
> That might give you a better idea of what is going on.
>
> You could also use usbmon to discard that there is a problem with the
> usb gadget.
>
> Regards!
>
> On Tue, 14 Jun 2022 at 23:31, Marisol Zeledón
> <marisol.zeledon@xxxxxxxxxxxx> wrote:
> >
> > Hi,
> >
> > I have been trying to build a configfs - composite driver with UVC. I
> > have other functions such as mass storage and RNDIS included. When I
> > define UVC as the first function, everything seems to work fine, I see
> > the video device on my host computer and the device is able to send
> > frames to it. All other functions get triggered and work fine. The
> > thing is, I need UVC as the second function defined since RNDIS only
> > works on a Windows host if it is the first function defined (I need
> > this composite driver to work with a Windows host too and this is
> > apparently a Microsoft limitation/requirement).
> >
> > - So when I define UVC as the second function, it is not able to
> > create the video device on the host, I get the following logs on the
> > Linux host's side:
> >
> > [40166.930912] uvcvideo: Failed to query (GET_INFO) UVC control 2 on
> > unit 1: -32 (exp. 1).
> > [40177.294692] uvcvideo: Failed to query (GET_INFO) UVC control 2 on
> > unit 2: -110 (exp. 1).
> > [40208.014706] uvcvideo: UVC non compliance - GET_DEF(PROBE) not
> > supported. Enabling workaround.
> > [40213.134647] uvcvideo: Failed to query (129) UVC probe control :
> > -110 (exp. 26).
> > [40213.134653] uvcvideo: Failed to initialize the device (-5).
> >
> > - These are the descriptors I get from the host's side:
> >
> > Device Descriptor:
> >   bLength                18
> >   bDescriptorType         1
> >   bcdUSB               3.20
> >   bDeviceClass          239 Miscellaneous Device
> >   bDeviceSubClass         2 ?
> >   bDeviceProtocol         1 Interface Association
> >   bMaxPacketSize0         9
> >   idVendor           0x0955 NVidia Corp.
> >   idProduct          0x7020
> >   bcdDevice            0.02
> >   iManufacturer           1
> >   iProduct                2
> >   iSerial                 3
> >   bNumConfigurations      1
> >   Configuration Descriptor:
> >     bLength                 9
> >     bDescriptorType         2
> >     wTotalLength          317
> >     bNumInterfaces          4
> >     bConfigurationValue     1
> >     iConfiguration          4
> >     bmAttributes         0xe0
> >       Self Powered
> >       Remote Wakeup
> >     MaxPower                0mA
> >     Interface Association:
> >       bLength                 8
> >       bDescriptorType        11
> >       bFirstInterface         0
> >       bInterfaceCount         2
> >       bFunctionClass          2 Communications
> >       bFunctionSubClass       6 Ethernet Networking
> >       bFunctionProtocol       0
> >       iFunction               7
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        0
> >       bAlternateSetting       0
> >       bNumEndpoints           1
> >       bInterfaceClass         2 Communications
> >       bInterfaceSubClass      2 Abstract (modem)
> >       bInterfaceProtocol    255 Vendor Specific (MSFT RNDIS?)
> >       iInterface              5
> >       CDC Header:
> >         bcdCDC               1.10
> >       CDC Call Management:
> >         bmCapabilities       0x00
> >         bDataInterface          1
> >       CDC ACM:
> >         bmCapabilities       0x00
> >       CDC Union:
> >         bMasterInterface        0
> >         bSlaveInterface         1
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x82  EP 2 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0008  1x 8 bytes
> >         bInterval               9
> >         bMaxBurst               0
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        1
> >       bAlternateSetting       0
> >       bNumEndpoints           2
> >       bInterfaceClass        10 CDC Data
> >       bInterfaceSubClass      0 Unused
> >       bInterfaceProtocol      0
> >       iInterface              6
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x81  EP 1 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0400  1x 1024 bytes
> >         bInterval               0
> >         bMaxBurst               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x01  EP 1 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0400  1x 1024 bytes
> >         bInterval               0
> >         bMaxBurst               0
> >     Interface Association:
> >       bLength                 8
> >       bDescriptorType        11
> >       bFirstInterface         2
> >       bInterfaceCount         2
> >       bFunctionClass         14 Video
> >       bFunctionSubClass       3 Video Interface Collection
> >       bFunctionProtocol       0
> >       iFunction               9
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        2
> >       bAlternateSetting       0
> >       bNumEndpoints           1
> >       bInterfaceClass        14 Video
> >       bInterfaceSubClass      1 Video Control
> >       bInterfaceProtocol      0
> >       iInterface              9
> >       VideoControl Interface Descriptor:
> >         bLength                13
> >         bDescriptorType        36
> >         bDescriptorSubtype      1 (HEADER)
> >         bcdUVC               1.00
> >         wTotalLength           52
> >         dwClockFrequency       48.000000MHz
> >         bInCollection           1
> >         baInterfaceNr( 0)       3
> >       VideoControl Interface Descriptor:
> >         bLength                18
> >         bDescriptorType        36
> >         bDescriptorSubtype      2 (INPUT_TERMINAL)
> >         bTerminalID             1
> >         wTerminalType      0x0201 Camera Sensor
> >         bAssocTerminal          0
> >         iTerminal               0
> >         wObjectiveFocalLengthMin      0
> >         wObjectiveFocalLengthMax      0
> >         wOcularFocalLength            0
> >         bControlSize                  3
> >         bmControls           0x00000002
> >           Auto-Exposure Mode
> >       VideoControl Interface Descriptor:
> >         bLength                12
> >         bDescriptorType        36
> >         bDescriptorSubtype      5 (PROCESSING_UNIT)
> >         bUnitID                 2
> >         bSourceID               1
> >         wMaxMultiplier      16384
> >         bControlSize            2
> >         bmControls     0x00000001
> >           Brightness
> >         iProcessing             0
> >         bmVideoStandards     0x 0
> >       VideoControl Interface Descriptor:
> >         bLength                 9
> >         bDescriptorType        36
> >         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
> >         bTerminalID             3
> >         wTerminalType      0x0101 USB Streaming
> >         bAssocTerminal          0
> >         bSourceID               2
> >         iTerminal               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x83  EP 3 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0010  1x 16 bytes
> >         bInterval               8
> >         bMaxBurst               0
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        3
> >       bAlternateSetting       0
> >       bNumEndpoints           1
> >       bInterfaceClass        14 Video
> >       bInterfaceSubClass      2 Video Streaming
> >       bInterfaceProtocol      0
> >       iInterface              0
> >       VideoStreaming Interface Descriptor:
> >         bLength                            14
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  1 (INPUT_HEADER)
> >         bNumFormats                         1
> >         wTotalLength                      115
> >         bEndPointAddress                  132
> >         bmInfo                              0
> >         bTerminalLink                       3
> >         bStillCaptureMethod                 0
> >         bTriggerSupport                     0
> >         bTriggerUsage                       0
> >         bControlSize                        1
> >         bmaControls( 0)                    27
> >       VideoStreaming Interface Descriptor:
> >         bLength                            27
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
> >         bFormatIndex                        1
> >         bNumFrameDescriptors                2
> >         guidFormat
> > {59555932-0000-1000-8000-00aa00389b71}
> >         bBitsPerPixel                      16
> >         bDefaultFrameIndex                  1
> >         bAspectRatioX                       0
> >         bAspectRatioY                       0
> >         bmInterlaceFlags                 0x00
> >           Interlaced stream or variable: No
> >           Fields per frame: 2 fields
> >           Field 1 first: No
> >           Field pattern: Field 1 only
> >           bCopyProtect                      0
> >       VideoStreaming Interface Descriptor:
> >         bLength                            38
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
> >         bFrameIndex                         1
> >         bmCapabilities                   0x00
> >           Still image unsupported
> >         wWidth                            640
> >         wHeight                           360
> >         dwMinBitRate                 18432000
> >         dwMaxBitRate                 55296000
> >         dwMaxVideoFrameBufferSize      460800
> >         dwDefaultFrameInterval         666666
> >         bFrameIntervalType                  3
> >         dwFrameInterval( 0)            666666
> >         dwFrameInterval( 1)           1000000
> >         dwFrameInterval( 2)           5000000
> >       VideoStreaming Interface Descriptor:
> >         bLength                            30
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
> >         bFrameIndex                         2
> >         bmCapabilities                   0x00
> >           Still image unsupported
> >         wWidth                           1280
> >         wHeight                           720
> >         dwMinBitRate                 29491200
> >         dwMaxBitRate                 29491200
> >         dwMaxVideoFrameBufferSize     1843200
> >         dwDefaultFrameInterval        5000000
> >         bFrameIntervalType                  1
> >         dwFrameInterval( 0)           5000000
> >       VideoStreaming Interface Descriptor:
> >         bLength                             6
> >         bDescriptorType                    36
> >         bDescriptorSubtype                 13 (COLORFORMAT)
> >         bColorPrimaries                     1 (BT.709,sRGB)
> >         bTransferCharacteristics            1 (BT.709)
> >         bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x84  EP 4 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0400  1x 1024 bytes
> >         bInterval               0
> >         bMaxBurst               0
> >
> >
> > On the device's side I don't get any failure logs. Is there any known
> > limitation to the UVC driver similar to the RNDIS one in Windows
> > hosts? Does it forcefully need to be defined as the first function to
> > work?
> >
> > Thank you in advance,
> > --
> > Marisol Zeledón Córdoba
> > Embedded Software Engineer
> > RidgeRun Embedded Solutions
> > San José, Costa Rica
>
>
>
> --
> Ricardo Ribalda



-- 

Marisol Zeledón Córdoba
Embedded Software Engineer
RidgeRun Embedded Solutions
San José, Costa Rica




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux