USB problem

Hi,
I have a XavierNX JP5.1.1 custom board, and the USB connects like the following picture


the problem is when I plug more USB storage into the HUB I get the error
one USB storage is fine, but the second USB storage fails, here is the error message:

[  173.246805] usb 2-3.3.1.2: Not enough host controller resources for new device state.
[  173.247131] usb 2-3.3.1.2: can't set config #1, error -12

here is the lsusb -t output

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
    |__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/3p, 10000M
        |__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 10000M
        |__ Port 2: Dev 3, If 1, Class=Vendor Specific Class, Driver=option, 10000M
        |__ Port 2: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 10000M
        |__ Port 2: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 10000M
        |__ Port 2: Dev 3, If 4, Class=Communications, Driver=cdc_mbim, 10000M
        |__ Port 2: Dev 3, If 5, Class=CDC Data, Driver=cdc_mbim, 10000M
        |__ Port 3: Dev 5, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 1: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 1: Dev 12, If 0, Class=Mass Storage, Driver=usb-storage, 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 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 5, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 1: Dev 5, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 1: Dev 5, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 1: Dev 5, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
            |__ Port 4: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 1: Dev 7, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 1: Dev 7, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 1: Dev 7, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                |__ Port 4: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
                    |__ Port 1: Dev 9, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                    |__ Port 1: Dev 9, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                    |__ Port 1: Dev 9, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
                    |__ Port 1: Dev 9, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
        |__ Port 3: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 11, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M

But when I used OrinNX JP5.1.1 with the same setting, it did not have this problem, it could connect many USB storage
so I noticed that the firmware version is different between XavierNX and OrinNX

Xavier NX JetPack 5.1.1:

cat /sys/devices/platform/3610000.xhci/tegra-firmware/3610000.xhci/version
3610000.xhci: Firmware timestamp: 2022-03-16 11:07:43 UTC, Version: 60.13 release

Orin NX JetPack 5.1.1:

cat /sys/devices/platform/3610000.xhci/tegra-firmware/3610000.xhci/version
3610000.xhci: Firmware timestamp: 2023-02-10 03:48:10 UTC, Version: 80.05 release

Is that the firmware version causing the difference? any advice for me to resolve this problem?

The total endpoint numbers have to <= 70. Please check if removing other device can make it work or not.

If it can, then it could be the ep limit got hit.

Thanks for your quick reply
Removing other devices could work, but we need many devices on it
How to check the total endpoint numbers? the ep limit is different between xaviernx and orinnx?

Hi,

Please use this test tool to see your endpoint number.
nv_xusb_ep_res.sh (2.5 KB)

1 Like

I check my endpoint number.
When using xaviernx the endpoint numbers exceed 70, so it makes sense that USB storage could not connect more
But using orinnx the endpoint numbers also exceed 70, but it can still be used
Do any documents mention the endpoint number setting?

For xavier and tx2, I had a old post for this info.

For Orin, need further check.

For Orin, the max endpoint number of T234(Orin) is 92, and the max periodic endpoints of T234 is 44.

Thank you!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.