Realtek usb 3.0 hdmi capture card detecting as usb 2.0

Hi !

I am excited about the potential of my Jetson Nano. I have been trying to build a small real time 1080p60fps HDMI input signal from a capture card.

My capture card : Amazon.com

I have been trying to find tutorials or helpful forums posts as to why my USB 3.0 always shows up as USB 2.0. I believe this is the problem as to why I can only get up to ~14fps 1080p60fps mjpeg input from my card as I try to encode. I can do 720p60fps at only ~20fps etc…

root@karratjetson:/home/karratnano# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/0p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 4, If 4, Class=Human Interface Device, Driver=usbhid, 480M
        |__ Port 2: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 4, If 3, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 4: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 4: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M

As you can see my uvcvideo device is being detected as 480M bandwidth, which is the usb 2.0 bandwidth allocation.

I am not sure how to troubleshoot this issue. Is there a setup procedure I can follow to activate usb 3.0 ? Drivers ? Etc? Thanks.

Hi,
Do you use custom board or developer kit? We have performed compliance test on developer kit so it should work fine for most on-market devices. Please check if you can re-connect the camera and see if it is enumerated as USB3(SuperSpeed).

For information, please share your release version:

$ cat /etc/nv_tegra_release
karratnano@karratjetson:~/Downloads/opt/sublime_text$ cat /etc/nv_tegra_release _release
# R32 (release), REVISION: 6.1, GCID: 27863751, BOARD: t210ref, EABI: aarch64, DATE: Mon Jul 26 19:20:30 UTC 2021
cat: _release: No such file or directory

I disconnected all the peripherals other than the uvc capture card and it’s still usb 2.0.

karratnano@karratjetson:~/Downloads/opt/sublime_text$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 6, If 3, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 6, If 4, Class=Human Interface Device, Driver=usbhid, 480M

Hi,
If it is custom board, we suggest execute compliance test to ensure signals are good.

If it is developer kit, please connect to hub with external power supply and then connect to developer kit. See if it can be enumerated as USB3 with external power supply.

What do you mean by a custom board?

It’s a jetson nano from nvidia, it’s a developer kit. I don’t understand why I have to use an external hub if the jetson nano features usb 3.0 inputs…

Normally you don’t need any kind of external HUB, but the more subtle point here is testing with a HUB which has an external power supply. USB3 can require more power than does USB2. Externally powered devices are allowed more power drain than are USB cable powered devices. If the USB3 mode requires more power than the cable provides, then it would revert to USB2 mode. If you have a USB3 HUB which is externally powered, then you can test to see if it switches back to USB3. If it does, then the reason for running at USB2 is due to power consumption; if not, then you can move on to other testing. Power consumption is a fairly common failure point for USB devices.

I finally bought a USB 3.0 hub with external power, same result. USB 2.0.

karratnano@karratjetson:~/Projects/ffmpeg$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 8, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 8, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 8, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 8, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 8, If 4, Class=Human Interface Device, Driver=usbhid, 480M

Where do I go from here?

Multiple MJPG cams are known to lead to issues because UVC driver for each one tries to get full USB bandwidth.
Does only one HDMI adapter better work ?

@Honey_Patouceul makes a good point. This is the second reason why a perfectly functional USB3 device might revert to USB2: If the device tries to reserve the full bandwidth for two cameras, but the bandwidth can only support a single USB3 bandwidth, then one or both cameras might revert to USB2. It won’t matter if it is a capture card or a camera or anything else which might be setting up as some sort of “needs full bandwidth” case, but I do see this which hints that perhaps it isn’t a bandwidth problem:

Still, even something as trivial as a mouse might trigger it reverting to USB2 if it was at the edge of being able to function at USB3. Then there is the more subtle case with an illustration: If the capture card requires USB3.1 gen. 1 bandwidth (shows as 5000M) then success is possible, but if the capture card is trying to reach USB3.1 gen. 2 (10000M), then there is no possibility of running at that USB3.1 gen. 2 speed, and in fact it might have the original problems associated with using too much bandwidth at USB3.1 gen. 1 speeds.

You posted a URL to the device on Amazon, but do you have some sort of URL which points to the specific hardware specs of this device? The advertisement is useful, and I see this, but it isn’t an exact specification:

PUSB3.0,300-350MB/s throughput and it is compatible with USB2.0.

In that one spec it tends to be a bit “fuzzy” in specification. If abbreviations are being used correctly, then 350MB/s is eight times that in “bit/s”, or 2800Mb/s, which would be in the realm of working with some breathing room at USB3.1 gen. 1 (5000M) speed (including room for overhead). According to that it should probably work, but it isn’t clear. An example would be that if the HDMI being fed into the device is itself using USB2 speeds, then it might use USB2 on the USB output side…don’t know, lots of guessing without details on specs.

Also, can you test this on a regular Linux PC with the same wiring? If you get USB2 on another Linux computer, then the issue is probably something out of control of the Jetson. If it does show as USB3.1 gen. 1 (5000M on lsusb), then it is probably something to do with the Jetson. It might eliminate a need for more detailed specs.

No, I have another capture card

I used this and it is still usb 2.0

karratnano@karratjetson:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
            |__ Port 2: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
            |__ Port 2: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 2: Dev 4, If 3, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 2: Dev 4, If 4, Class=Human Interface Device, Driver=usbhid, 480M

Hi,
Could yo confirm if the device supports USB3? From the picture it looks to be a USB2 device with D+/D- pins. For USB3 devices, you should see 4 pins: TX+/TX1/RX+/RX-.

Basically what @DaneLLL says: Do you have a URL handy with the exact specs for this device? Or can you install this to a regular Linux desktop PC and verify the device can go into USB3 mode on the other system?

I want to point out that this device, and many many similar USB devices, are actually multiple devices using a single cable. Typically the various devices can run at different modes, but often all run in the same mode. In your case the two audio channels are running at USB2, and this would be normal and correct for the audio. The video devices are also at USB2, and if the video mode does not require USB3 bandwidth, then this might be correct for the video as well (e.g., it is possible that if the device is working with 1080p it would not require more than USB2, but if it were looking 4k@60FPS, then it would require USB3…some devices know which mode to use and switch, but I doubt an inexpensive device like this would do so). Detailed specs (or at least a check on a full Linux PC with USB3) would be quite helpful.