Missing UVC controls

Hi everyone,
I’m having problems with getting our TIS USB3 cameras to work properly with the TX2. The problem is that after compiling and installing the drivers https://github.com/TheImagingSource/tiscamera/ only the first seven UVC controls are properly mapped out of more than 30. What’s puzzling is that the cameras work fine in just one out of four Jetson dev kits we have in house, but I have not been able to find a way to make them work on the other three. All four have been set up the same way: flash the latest Jetpack and apply the drivers. I’ve tested the cameras on other PCs and other ARM-based boards. If anyone can point me in the right direction, that would be greatly appreciated.

You might want to save a copy of the verbose lsusb for one case of the camera working and one case of the camera not working…then do a diff and see how the USB information differs. If it is the same, then you know it is a consumer of data and not the base drivers at fault.

If you run “lsusb” you will see an ID. One example: 093a:2510 (it’s a cheap mouse). You could get a verbose listing for that ID:

# Working host:
sudo lsusb -d 093a:2510 -vvv > tree_works.txt
# Failing host:
sudo lsusb -d 093a:2510 -vvv > tree_fails.txt
# diff:
diff tree_fails.txt tree_works.txt

Incidentally, this is not likely to be a standard UVC camera. You don’t need extra drivers for a standard class. Many USB devices actually have more than one interface, and thus part of it could be UVC and another part custom, but having that driver tends to say you are going to see “Vendor Specific Class” in there somewhere (and this isn’t UVC). If it turns out that the lsusb listing matches between the working and non-working Jetson, then it tends to say either the custom driver or the end software using the driver differs.

I only have remote access to one of the “bad” units at the moment, so I can’t do a direct comparison, but I would assume that the “good” one would have the missing bmControls. Here is the output:

Bus 002 Device 004: ID 199e:948f The Imaging Source Europe GmbH
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.10
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         9
  idVendor           0x199e The Imaging Source Europe GmbH
  idProduct          0x948f
  bcdDevice            0.00
  iManufacturer           1 The Imaging Source Europe GmbH
  iProduct                2 DFM 37UX273-ML
  iSerial                 3 34810158
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          689
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass        239 Miscellaneous Device
      bFunctionSubClass       5 USB3 Vision
      bFunctionProtocol       0
      iFunction               4 USB3 Vision Device
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       239 Miscellaneous Device
      bInterfaceSubClass      5 USB3 Vision
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  14 24 01 00 00 01 00 00 00 01 00 06 01 02 00 07 08 03 05 0c
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       239 Miscellaneous Device
      bInterfaceSubClass      5 USB3 Vision
      bInterfaceProtocol      1
      iInterface              0
      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
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       239 Miscellaneous Device
      bInterfaceSubClass      5 USB3 Vision
      bInterfaceProtocol      2
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         3
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0
      iFunction               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0
      iInterface              0
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC               1.10
        wTotalLength           90
        dwClockFrequency       48.000000MHz
        bInCollection           1
        baInterfaceNr( 0)       4
      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           0x0000000a
          Auto-Exposure Mode
          Exposure Time (Absolute)
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
        bUnitID                 2
        bSourceID               1
        wMaxMultiplier      16384
        bControlSize            3
        bmControls     0x00002281
          Brightness
          White Balance Component
          Gain
          White Balance Component, Auto
        iProcessing             0
        bmVideoStandards     0x 0
      VideoControl Interface Descriptor:
        bLength                37
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 3
        guidExtensionCode         {0aba49de-5c0b-49d5-8f71-0be40f94a67a}
        bNumControl             2
        bNrPins                 1
        baSourceID( 0)          2
        bControlSize           12
        bmControls( 0)       0xfb
        bmControls( 1)       0xc0
        bmControls( 2)       0x7f
        bmControls( 3)       0x06
        bmControls( 4)       0x00
        bmControls( 5)       0xe0
        bmControls( 6)       0x00
        bmControls( 7)       0xfe
        bmControls( 8)       0x85
        bmControls( 9)       0xf0
        bmControls(10)       0x01
        bmControls(11)       0x00
        iExtension              0
      VideoControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             4
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               3
        iTerminal               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      VideoStreaming Interface Descriptor:
        bLength                            16
        bDescriptorType                    36
        bDescriptorSubtype                  1 (INPUT_HEADER)
        bNumFormats                         3
        wTotalLength                      444
        bEndPointAddress                  129
        bmInfo                              0
        bTerminalLink                       4
        bStillCaptureMethod                 0
        bTriggerSupport                     0
        bTriggerUsage                       0
        bControlSize                        1
        bmaControls( 0)                    28
        bmaControls( 1)                    28
        bmaControls( 2)                    28
      VideoStreaming Interface Descriptor:
        bLength                            28
        bDescriptorType                    36
        bDescriptorSubtype                 16 (FORMAT_FRAME_BASED)
        bFormatIndex                        1
        bNumFrameDescriptors                2
        guidFormat                            {52474742-0000-1000-8000-00aa00389b71}
        bBitsPerPixel                       8
        bDefaultFrameIndex                  1
        bAspectRatioX                       1
        bAspectRatioY                       1
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
          bCopyProtect                      0
          bVariableSize                     0
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                 17 (FRAME_FRAME_BASED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1440
        wHeight                          1080
        dwMinBitRate                    72000
        dwMaxBitRate                    72000
        dwDefaultFrameInterval          42372
        bFrameIntervalType                  7
        dwBytesPerLine                   1440
        dwFrameInterval( 0)             42372
        dwFrameInterval( 1)             83333
        dwFrameInterval( 2)            166666
        dwFrameInterval( 3)            333333
        dwFrameInterval( 4)            666666
        dwFrameInterval( 5)           2000000
        dwFrameInterval( 6)          10000000
      VideoStreaming Interface Descriptor:
        bLength                            62
        bDescriptorType                    36
        bDescriptorSubtype                 17 (FRAME_FRAME_BASED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                    72000
        dwMaxBitRate                    72000
        dwDefaultFrameInterval          16666
        bFrameIntervalType                  9
        dwBytesPerLine                    640
        dwFrameInterval( 0)             16666
        dwFrameInterval( 1)             20833
        dwFrameInterval( 2)             41666
        dwFrameInterval( 3)             83333
        dwFrameInterval( 4)            166666
        dwFrameInterval( 5)            333333
        dwFrameInterval( 6)            666666
        dwFrameInterval( 7)           2000000
        dwFrameInterval( 8)          10000000
      VideoStreaming Interface Descriptor:
        bLength                            28
        bDescriptorType                    36
        bDescriptorSubtype                 16 (FORMAT_FRAME_BASED)
        bFormatIndex                        2
        bNumFrameDescriptors                2
        guidFormat                            {52474370-0000-1000-8000-00aa00389b71}
        bBitsPerPixel                      12
        bDefaultFrameIndex                  1
        bAspectRatioX                       1
        bAspectRatioY                       1
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
          bCopyProtect                      0
          bVariableSize                     0
      VideoStreaming Interface Descriptor:
        bLength                            54
        bDescriptorType                    36
        bDescriptorSubtype                 17 (FRAME_FRAME_BASED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1440
        wHeight                          1080
        dwMinBitRate                    72000
        dwMaxBitRate                    72000
        dwDefaultFrameInterval          62500
        bFrameIntervalType                  7
        dwBytesPerLine                   2160
        dwFrameInterval( 0)             62500
        dwFrameInterval( 1)             83333
        dwFrameInterval( 2)            166666
        dwFrameInterval( 3)            333333
        dwFrameInterval( 4)            666666
        dwFrameInterval( 5)           2000000
        dwFrameInterval( 6)          10000000
      VideoStreaming Interface Descriptor:
        bLength                            62
        bDescriptorType                    36
        bDescriptorSubtype                 17 (FRAME_FRAME_BASED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                    72000
        dwMaxBitRate                    72000
        dwDefaultFrameInterval          16666
        bFrameIntervalType                  9
        dwBytesPerLine                    960
        dwFrameInterval( 0)             16666
        dwFrameInterval( 1)             20833
        dwFrameInterval( 2)             41666
        dwFrameInterval( 3)             83333
        dwFrameInterval( 4)            166666
        dwFrameInterval( 5)            333333
        dwFrameInterval( 6)            666666
        dwFrameInterval( 7)           2000000
        dwFrameInterval( 8)          10000000
      VideoStreaming Interface Descriptor:
        bLength                            28
        bDescriptorType                    36
        bDescriptorSubtype                 16 (FORMAT_FRAME_BASED)
        bFormatIndex                        3
        bNumFrameDescriptors                2
        guidFormat                            {52473136-0000-1000-8000-00aa00389b71}
        bBitsPerPixel                      16
        bDefaultFrameIndex                  1
        bAspectRatioX                       1
        bAspectRatioY                       1
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
          bCopyProtect                      0
          bVariableSize                     0
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                 17 (FRAME_FRAME_BASED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1440
        wHeight                          1080
        dwMinBitRate                    72000
        dwMaxBitRate                    72000
        dwDefaultFrameInterval          83333
        bFrameIntervalType                  6
        dwBytesPerLine                   2880
        dwFrameInterval( 0)             83333
        dwFrameInterval( 1)            166666
        dwFrameInterval( 2)            333333
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           2000000
        dwFrameInterval( 5)          10000000
      VideoStreaming Interface Descriptor:
        bLength                            62
        bDescriptorType                    36
        bDescriptorSubtype                 17 (FRAME_FRAME_BASED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                    72000
        dwMaxBitRate                    72000
        dwDefaultFrameInterval          16666
        bFrameIntervalType                  9
        dwBytesPerLine                   1280
        dwFrameInterval( 0)             16666
        dwFrameInterval( 1)             20833
        dwFrameInterval( 2)             41666
        dwFrameInterval( 3)             83333
        dwFrameInterval( 4)            166666
        dwFrameInterval( 5)            333333
        dwFrameInterval( 6)            666666
        dwFrameInterval( 7)           2000000
        dwFrameInterval( 8)          10000000
      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              15
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000c
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
    bU1DevExitLat           0 micro seconds
    bU2DevExitLat           0 micro seconds
Device Status:     0x0000
  (Bus Powered)

You may also try use an externally powered USB hub for ruling out power issues.

Yeah, I’ve already tried that to no avail…

We’ll probably need to see the working version when that is available. If we know the working and failed units have the same verbose lsusb output, then we know the issue isn’t within the standard USB classes, and thus it would be an issue of the custom driver you had to compile (or the software using the camera).

One more question…you mentioned “apply drivers”. I assume this is the “apply_binaries.sh” step, but can you confirm? I want to be sure there wasn’t something extra, e.g., adding a kernel module.

Something else you might check: Often cameras have firmware. Perhaps some cameras have different firmware versions than others. Make sure you check with the camera vendor to see if such a thing exists for your particular case. Maybe also test swapping a camera from a working unit to a non-working unit to see if the issue follows the Jetson or the camera.

Sure, I will get that diff tomorrow.

Perhaps “drivers” was poor wording to describe what gets installed. Sifting through the source code (git repo in the OP), these are mrely camera libraries, udev rules, and uvc extension provisions https://github.com/TheImagingSource/tiscamera/wiki/UVC-Extension-Units mapped via uvcdynctrl.

Camera has the latest firmware applied and works fine on PCs as well as other ARM-based SoMs.

Edit: I stumbled across this thread which seems relevant: https://devtalk.nvidia.com/default/topic/1038107/?offset=13#5280632
Seems likely that my “good” Jetson is running the stock version, while the “bad” one is on the Developer OS.

That thread does remind me of a relevant question: Are all of the systems using the same user login as the ones which work? The GPU requires group “video” to access and users nvidia and ubuntu have this…other users will not have this unless manually added. Root of course (sudo) has all group memberships.