Recommended PCI-E Usb 3.1 card for TX2?

Have anyone successfully used a PCI-E x4 card with 2 or 4 USB 3.1 slots? Which cards are supported?

Linux does not support USB 3.1 until kernel 4.7. The Jetson TX2 uses Ubuntu 16.04 which uses kernel 4.4.

I see! Which USB 3.0 PCI-E cards are recommended?

Hi njal,

Our internal test, we used “Transcend TS-PDU3 USB3.0 PCI-E x1 card” with 2 USB 3.0 ports.
For you reference.

[b]Just wanted to post a followup here. Have tried 3 different cards with the VIA VL805-Q6 chipset - this does not work. The controller and devices appears in lsusb - but the devices can noe be used/accessed.

Linux tegra-ubuntu 4.4.38-tegra #1 SMP PREEMPT Thu Mar 1 20:49:20 PST 2018 aarch64 aarch64 aarch64 GNU/Linux

Will use the TS-PDU3 instead. [/b]

nvidia@tegra-ubuntu:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 03f0:604a Hewlett-Packard 
Bus 001 Device 003: ID 03f0:034a Hewlett-Packard Elite Keyboard
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 199e:9087 The Imaging Source Europe GmbH 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

nvidia@tegra-ubuntu:~$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 1: Dev 2, If 1, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 1: Dev 2, If 2, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 1: Dev 2, If 3, Class=Video, Driver=uvcvideo, 5000M
    |__ Port 1: Dev 2, If 4, Class=Video, Driver=uvcvideo, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/3p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/4p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
nvidia@tegra-ubuntu:~$

With your devices attached, what do you see from “lsusb -t”? FYI, you can preserve formatting and add a scrollbar via the “code” icon in the upper right as you post (looks like “</>”).

I added lsusb -t info in my previous post and cleaned it up. Here is a new dmesg log.

[    8.520593] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    8.804317] using random self ethernet address
[    8.812389] using random host ethernet address

[    8.930612] tegra-pcie 10003000.pcie-controller: link 2 down, retrying

## AFTER STARTING CHEESE

[   42.339725] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x8005b000, fsynr=0x3, cb=22, sid=17(0x11 - AFI), pgd=260f50003, pud=260f50003, pmd=2636ff003, pte=0
[   42.355685] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x8005b000, fsynr=0x3, cb=22, sid=17(0x11 - AFI), pgd=260f50003, pud=260f50003, pmd=2636ff003, pte=0
[   42.860399] irq 55: nobody cared (try booting with the "irqpoll" option)
[   42.867131] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W       4.4.38-tegra #1
[   42.874792] Hardware name: quill (DT)

[   42.989478] [<ffffffc001132980>] start_kernel+0x3a0/0x3b4
[   42.994879] [<0000000080b7e000>] 0x80b7e000
[   42.999064] handlers:
[   43.001351] [<ffffffc0008b76e0>] tegra_mcerr_hard_irq threaded [<ffffffc0008b772c>] tegra_mcerr_thread
[   43.010685] Disabling IRQ #55
[   43.013983] unknown mcerr fault, int_status=0x00001040, ch_int_status=0x00000200, hubc_int_status=0x00000000
[   47.355056] uvcvideo: Failed to query (130) UVC probe control : -110 (exp. 34).
[   47.695721] Unknown pixelformat 0x00000000
[   47.699850] ------------[ cut here ]------------

[   49.363540] [<ffffffc0001e6694>] SyS_ioctl+0x84/0x98
[   49.368495] [<ffffffc000084ff0>] el0_svc_naked+0x24/0x28
[   49.383114] arm-smmu 12000000.iommu: Unhandled context fault: iova=0x8005d000, fsynr=0x3, cb=22, sid=17(0x11 - AFI), pgd=260f50003, pud=260f50003, pmd=2636ff003, pte=0
[   59.386633] xhci_hcd 0000:01:00.0: xHCI host not responding to stop endpoint command.
[   59.394498] xhci_hcd 0000:01:00.0: Assuming host is dying, halting host.
[   59.401463] xhci_hcd 0000:01:00.0: HC died; cleaning up
[   59.401497] uvcvideo: Failed to query (130) UVC probe control : -110 (exp. 34).
[   59.402304] uvcvideo: Failed to set UVC probe control : -22 (exp. 34).
[   59.402485] uvcvideo: Failed to set UVC probe control : -22 (exp. 34).
[   59.427738] usb 3-1: USB disconnect, device number 2

(Needless to say - the camera works fine using a USB3 hub - or connected directly to the Jetson dev board.)

So as a summary it appears your USB ports (the ones not “xhci-tegra”) are:

/:  Bus 04.Port 1: Dev 1, <b>Class=root_hub, Driver=xhci_hcd/4p, 5000M</b>
    |__ Port 1: Dev 2, If 0, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 1: Dev 2, If 1, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 1: Dev 2, If 2, Class=Miscellaneous Device, Driver=, 5000M
    |__ Port 1: Dev 2, If 3, Class=Video, Driver=uvcvideo, 5000M
    |__ Port 1: Dev 2, If 4, Class=Video, Driver=uvcvideo, 5000M
/:  Bus 03.Port 1: Dev 1, <b>Class=root_hub, Driver=xhci_hcd/1p, 480M</b>
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M

The first root_hub is running as USB3, the second root_hub is running as USB2. Two UVC devices are shown on the USB3 side, along with some other USB3 content. So basically USB3 seems to be working up to this point (devices are showing up and enumerating as they should…this is before data is transferred).

I’m seeing SMMU and mcerr content in the dmesg. Someone else will need to comment, but this seems like it might be a DMA error. Whether that error is part of PCIe or part of the driver for the specific device I don’t know. My first guess would be that it is part of driver for the add-in card not dealing correctly with SMMU.

I tried a USB 3.0 card with a NEC 720200 chipset. Connecting a USB 3.0 camera to this card works fine in Cheese:

But running gst-launch when the camera is connected through this USB3.0 card leads to the video being partially frozen/green. The image flickers. It works fine when I connect the camera directly to the Jetson Dev Board or via a USB 3.0 Adapter (into the dev board).

gst-launch-1.0 v4l2src device=/dev/video2 ! 'video/x-raw, width=(int)1920, height=(int)1080, format=(string)I420'  ! nveglglessink -e

So the problem now seems to be a combination of the USB 3.0 card and Gstreamer. Will try some other NEC based cards in a week or two.