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 [url]https://github.com/TheImagingSource/tiscamera/[/url] 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 [url]https://github.com/TheImagingSource/tiscamera/wiki/UVC-Extension-Units[/url] 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: [url]https://devtalk.nvidia.com/default/topic/1038107/?offset=13#5280632[/url]
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.