How to make the PointGrey USB3 Camera be a V4L device on TX2?

Hello,

I have PointGrey USB3 Camera GS3-U3-51S5C-C and TX2 with JetPack 3.3 — L4T R28.2.1

I also follow the http://www.ptgrey.com/KB/10357 to install flycapture2 SDK

Now I can record image files from the camera by FlyCapture2Test , but the input latency is too long

and not acceptable for ADAS object detection CNN like MobileNet-SSD.

Can the PointGrey USB3 Camera be a V4L device on TX2 , like /dev/video1 and thus the CNN can use it

as the input video usb device directly?

BRs,

Albert

So far as I know all “/dev/video*” devices are from the standard UVC (USB Video Class) driver. This means the camera itself must report that it is a UVC device. If you run “lsusb”, then you will see an ID. As an example, the ID might look like “0955:7c18”. If you use the ID like this (adjusting for your actual ID), then you can get a verbose listing from USB of what the device describes itself as (keep in mind one USB cable usually has multiple logical devices, e.g., a control interface might be custom while the main camera is either a bulk transfer or UVC device):

sudo lsusb -d 0955:7c18 -vvv | tee log_usb.txt

You could post the log and it might offer clues as to whether it can function as a standard interface or if it requires a custom driver.

1 Like

Hi, linuxdev

I got these information , but still don’t how to bind it into V4L device’s name (/dev/video*), any idea about it?

nvidia@tegra-ubuntu:~$ lsusb
Bus 002 Device 002: ID 1e10:3300 Point Grey Research, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 046d:081b Logitech, Inc. Webcam C310
Bus 001 Device 004: ID 046d:c024 Logitech, Inc. MX300 Optical Mouse
Bus 001 Device 003: ID 046d:c315 Logitech, Inc. Classic Keyboard 200
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
nvidia@tegra-ubuntu:~$ sudo lsusb -d 1e10:3300 -vvv | tee log_usb.txt
[sudo] password for nvidia: 

Bus 002 Device 002: ID 1e10:3300 Point Grey Research, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         9
  idVendor           0x1e10 Point Grey Research, Inc.
  idProduct          0x3300 
  bcdDevice            0.00
  iManufacturer           1 Point Grey Research
  iProduct                2 Grasshopper3 GS3-U3-51S5C
  iSerial                 3 00FBA61D
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          116
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              224mA
    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 05 06 07 08 09 0a 0b 0c 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     0x83  EP 3 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     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   0x0000f61e
      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   2
      Lowest fully-functional device speed is High Speed (480Mbps)
    bU1DevExitLat          10 micro seconds
    bU2DevExitLat         512 micro seconds
Device Status:     0x000c
  (Bus Powered)
  U1 Enabled
  U2 Enabled

If the pointgrey’s V4L devices is /dev/video1 , then I can run darknet by this command:

./darknet detector demo cfg/coco.data cfg/yolov2.cfg yolov2.weights /dev/video1

The interface for controlling seems to be custom:

bDeviceClass          239 Miscellaneous Device

The other interfaces may be non-custom, but they are not video class (meaning you won’t be able to get a “/dev/video#” unless there is some sort of adapter software):

bFunctionSubClass       5 USB3 Vision
...
bInterfaceSubClass      5 USB3 Vision

You will probably need to research documentation from the camera manufacturer to see an explanation of how communication to the camera is designed. Perhaps they provide a development API.

1 Like

Thanks to linuxdev.

I had research the document and find Flea3 uses the same IIDC v1.32 camera control protocol used by

all other Point Grey FireWire and USB cameras, it doesn’t use the USB Video Class (UVC) camera

control protocol.

So it seems need some great effort to integrate with deep learning frame work.

Does anyone know how to use the IIDC v1.32 / DCAM camera control protocol on TX2?

1 Like

@albertchung did you ever get it working? I’m having this problem now on Linux.