Additional note: Keep in mind that the maximum speed is determined by the “root_hub
”. The first root_hub
can achieve 10000Mb/s, and so if you ignore overhead, then mostly the two 5000M
devices will run at their max speed. The other “Miscellaneous Device” branching off of the 480M
root hub looks like it is your other camera (but you’d need to confirm that), and it has no chance of running at USB3 speeds under current circumstances.
The rest of this long reply is just to illustrate switching between USB3 root hubs and devices which might be USB2 or slower in comparison to how USB3 shows up.
You won’t be able to use software to cause a USB2 hardware port to become USB3 (the port itself requires extra wires). One of these will apply:
- (A) the controller itself does not support USB3 and thus the second
root_hub
from your lsusb -t
could never reach USB3 even if the port itself is wired for USB3 (due to being on a USB2 root hub), or that
- (B) the controller of the second
root_hub
you found could support USB3, but the port is not wired to support USB3, and thus there is once again no possibility of reaching USB3 speeds like this, or
- (C) both controller and port wiring support USB3, and thus it would only be a matter of updating the device tree to achieve what you want (this is not your case if using a Jetson NX dev kit…the device tree is already correct in that case as a default).
Are you using the developer kit? If so, then can you describe which ports are being used relative to the diagram in the “getting started” guide here:
https://developer.nvidia.com/embedded/learn/get-started-jetson-xavier-nx-devkit
In the picture at that URL it shows 4 ports which are USB3, item label “5”. Which ports are used? Those 4 ports are wired such that they are USB3 capable if the device being plugged in is USB3.
There is another twist in this story which is important: Hardware for a USB2 root hub has historically supported this USB2 protocol and slower protocols, simply using a “transaction translater” (“TT”) to slow down the protocol for non-USB2 devices (a single controller for USB2 and earlier understands all of the slower protocols up to and including USB2).
USB3 root hubs typically do not work directly with slower protocols and do not understand slower protocols, and what they tend to do is to reroute USB2 devices to a different controller (USB3 root hubs will hand off to a USB2 controller and not work directly with USB2 or slower). It may look like a USB2 item in “lsusb -t
” is plugged in to a root hub or port which does not support USB3, but the reality is that the port might support USB3 while a USB2 items shows up purely in the USB2 tree branch (the illusion of a USB3 root hub not being connected to that device or port). Devices showing as USB2 while connected to a USB3 port won’t necessarily show USB2 status branching off of the USB3 root hub. You need to be able to guarantee that both (A) the device is USB3, and (B) the connectors are fully seated in a USB3 port.
If you look at a normal “lsusb
” without the “-t
”, you will see an “ID” field. For example, it might look like “0955:7e19
”. You can look at exactly that device and only that device with “lsusb -d 0955:7e19
” (but change for your actual ID). Then look at the verbose output for that device and post it here when you know it is connected to a USB3 port (this can be from a PC as well, it doesn’t have to be from the Jetson):
sudo lsusb -d 0955:7e19 -vvv
If this is done from a USB3 port, then that content should indicate that at least part of this is USB3 capable (if performed from a USB2 port, then the USB3 verbose information might be missing). You can even use the same model device at your local computer if you don’t have access, but if you know the device itself is the same model, then the verbose lsusb
information should be fine for confirming the device itself is or isn’t USB3.
FYI, my NX (an earlier release dev kit) only shows a single USB3 root hub. I don’t see a second. All four ports marked as label “5” on that previously mentioned URL’s picture use a single root hub (maybe a custom carrier board could use two independent USB3 root hubs, but not the dev kit carrier board). This means (since it shows up as 10000M
) that you could theoretically maintain full performance with two 5000M devices, but 4 devices on those 4 ports would run only 2500M in actual throughput. Many USB3 cameras simply won’t work well if they don’t get a full 5000M throughput, but those are usually specialty cameras (e.g., 3D stereo).
If I connect a USB2 or slower device to my NX dev kit I see the device migrate in lsusb -t
to the 480M
root hub. If I don’t fully seat a USB3 device’s connector it also shows USB2 since the “extra” wires for USB3 won’t make contact if not fully seated.