Increase the bandwith of USB3 on Jetson Xavier NX

Dear all,
I am currently working on developing a radar system using Jetson Xavier NX + an SDR. I am struggling with the data transfer from Xavier NX to the SDR through USB3 where it seems that the bandwidth is not sufficient. I ran the command lsusb -t and this is the result
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
|__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M

My device is connected to Bus 02, Port 2: Dev 4. It said that the Driver, = 5000M. Is that meaning the USB port I used has a bandwidth of 5Gb? if It is correct, is there any way to increase it?
Thank you.

Hi,
It looks like the device supports USB3.1 Gen1, so the bandwidth is 5Gbps. This looks expected.

Thank you for the reply.
Can I connect the Xavier NX’s PCIe connection with an external USB Hub to get higher USB datarate?

You can sometimes get improved performance with a PCIe USB card. However, you might want to check the device capability via a fully verbose lsusb. You will need to use sudo for that. If you just use a plain “lsusb” you can find the device ID, which is useful in limiting the query. I don’t know from your tree view what the ID is, but I will pretend that the ID is 0955:7c18. This would log the result so you could save it and also attach it to the forum thread:
sudo lsusb -d 0955:7c18 -vvv 2>&1 | tee log_usbverbose.txt

Towards the end of that fully verbose reading there will be mention of capabilities for speed. If that happens to be 5Gbps, then there is no such thing from any USB bus of going faster than that. If the device can go to 10Gbps, then the reason for the slower rate on the Jetson would be a signal quality issue causing the device to back off to 5Gbps; another root HUB (which is what a PCIe based card is) could conceivably go faster if and only if signal quality is valid up to that speed as well.

Thank you for the direction. I have saved the log. here it is

Bus 002 Device 004: ID 2cf0:5250
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x2cf0
idProduct 0x5250
bcdDevice 0.00
iManufacturer 1 Nuand
iProduct 2 bladeRF 2.0
iSerial 3 447f424dd38145db8f6a2d4403fca6ac
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x007b
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 800mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
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
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
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 1
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 15
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
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 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 3
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Clacan’t get debug descriptor: Resource temporarily unavailable
ss
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
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 1
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0016
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
HIRD Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
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)

log_usbverbose.txt (5.4 KB)

Regarding the PCIe USB card, do you have any suggestion on which one will work with Xavier NX?
Thank you very much.

Here’s the part which matters:

    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)

This particular device does not reach 10 Gbps because it does not have that capability. There is no USB HUB capable of improving that speed.

If you look at this, then you can see that the root HUB could achieve 10 Gbps, but the reason the device does not reach this speed is due to device design, and not due to signal quality:

/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
|__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 5000M

Keep in mind that Bus 02, Port 2: Dev 4 is not the only device on that root HUB. It like Bus 02, Port 3, Device 2 is a HUB plugged in to the USB 3.2-capable root HUB, but that HUB does not itself have anything attached. Had something else been attached via that HUB, then it would have traffic competing with your specific device, and a different root HUB would help. As is, I don’t think anything you do can help that one device (it has its own root HUB and is running at that device’s max speed).

Trivia: Older USB2 and earlier evolved such that older standards were also serviced by a single USB controller. This means that a single chip on the old ports handled USB 1.0, 1.1, and 2.0 by reverting to the required mode on any given device. Starting with USB 3 a single controller works for only USB 3.x devices. The way a USB 3 port handles legacy USB 2 and earlier devices is by actually rerouting the signal to a separate USB 2 controller. In other words, any USB 3.x device is purely USB 3.x and any legacy device goes to a separate chip. You could plug in a USB 2 device to your USB 3 HUB and it would show a USB 2 root HUB rather than the USB 3 root HUB. Traffic would not actually go from the USB 2 device to the USB 3 HUB.

Thank you so much for this explanation. I will try to apply your suggestion. Hopefully, it will work.

Best.