Can add more usb devices on Orin nx

Following my previous port on USB endpoints limit:

The number of allowed endpoints should be 90.

I’ve connected the following devices to the Orin NX:

Bus 002 Device 008: ID 1ab2:0001  
Bus 002 Device 007: ID 1e10:4000 Point Grey Research, Inc. 
Bus 002 Device 006: ID 1ab2:0001 Microchip USB7206 Smart Hub
Bus 002 Device 004: ID 0424:7206 Microchip Technology, Inc. (formerly SMSC) USB7206 Smart Hub
Bus 002 Device 002: ID 0424:7206 Microchip Technology, Inc. (formerly SMSC) USB7206 Smart Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0424:724a Microchip Technology, Inc. (formerly SMSC) 
Bus 001 Device 024: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 001 Device 023: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 001 Device 022: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 021: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 020: ID 0451:8142 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 001 Device 003: ID 0424:4206 Microchip Technology, Inc. (formerly SMSC) USB4206 Smart Hub
Bus 001 Device 099: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 093: ID 0451:8142 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 001 Device 009: ID 0424:724a Microchip Technology, Inc. (formerly SMSC) 
Bus 001 Device 019: ID 10c4:ea70 Silicon Labs CP2105 Dual UART Bridge
Bus 001 Device 018: ID 10c4:ea70 Silicon Labs CP2105 Dual UART Bridge
Bus 001 Device 017: ID 10c4:ea70 Silicon Labs CP2105 Dual UART Bridge
Bus 001 Device 016: ID 10c4:ea70 Silicon Labs CP2105 Dual UART Bridge
Bus 001 Device 015: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 014: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 013: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 012: ID 0424:2517 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 001 Device 011: ID 03e7:2485 Intel Movidius MyriadX
Bus 001 Device 010: ID 03e7:2485 Intel Movidius MyriadX
Bus 001 Device 008: ID 0424:4206 Microchip Technology, Inc. (formerly SMSC) 
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


- lsusb -t output:

/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 10000M
|__ Port 3: Dev 4, If 0, Class=Hub, Driver=hub/5p, 10000M
|__ Port 3: Dev 6, If 0, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 3: Dev 6, If 1, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 4: Dev 7, If 0, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 4: Dev 7, If 1, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 4: Dev 7, If 2, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 5: Dev 8, If 1, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 5: Dev 8, If 0, Class=Miscellaneous Device, 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 1: Dev 8, If 0, Class=Hub, Driver=hub/7p, 480M
|__ Port 1: Dev 10, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 6: Dev 12, If 0, Class=Hub, Driver=hub/7p, 480M
|__ Port 6: Dev 18, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 6: Dev 18, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 4: Dev 16, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 4: Dev 16, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 2: Dev 14, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 7: Dev 19, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 7: Dev 19, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 5: Dev 17, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 5: Dev 17, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 3: Dev 15, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 1: Dev 13, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 2: Dev 11, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 7: Dev 9, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 9, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 7: Dev 9, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 9, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 93, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/7p, 480M
|__ Port 5: Dev 20, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 21, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 4: Dev 24, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 4: Dev 24, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 4: Dev 24, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 4: Dev 24, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 2: Dev 22, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 3: Dev 23, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 3: Dev 23, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 3: Dev 23, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 3: Dev 23, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 7: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 7: Dev 4, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 4, If 3, Class=Audio, Driver=snd-usb-audio, 480M



If I conect another device,  i'm getting the following error:

[12648.358195] usb 1-2.2.1: new full-speed USB device number 99 using tegra-xusb
[12648.471042] usb 1-2.2.1: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[12648.471051] usb 1-2.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[12648.471056] usb 1-2.2.1: Product: CP2102N USB to UART Bridge Controller
[12648.471059] usb 1-2.2.1: Manufacturer: Silicon Labs
[12648.471062] usb 1-2.2.1: SerialNumber: a8f4a52ac99feb11bcffcbacdf749906
[12648.471646] usb 1-2.2.1: Not enough host controller resources for new device state.
[12648.479439] usb 1-2.2.1: can’t set config #1, error -12


It seems like an endpoint limitation because I've tried to connect devices that consumes lower BW
(instead of Port 5: Dev 8, If 1, Class=Miscellaneous Device, Driver=, 5000M ) and the error also appeared. 

How can I solve this issue? 
- Is It a SW limitation? if so, can I increase the limit?

Thanks,
Boris

Not software limitation. Not able to increase the limit.

I didn’t reach the 90 endpoint limit. I have about 46 endpoints connected.
So I should be able to connect more devices

Hi,

I don’t know what’s your method to count 46 eps. If you just count the number on lsusb, then it may be wrong. Each device on lsusb could bring more than just one endpoints.

Yes, I know. I’ve posted the output of lsusb -t command that shows it in more details:

/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 10000M
|__ Port 3: Dev 4, If 0, Class=Hub, Driver=hub/5p, 10000M
|__ Port 3: Dev 6, If 0, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 3: Dev 6, If 1, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 4: Dev 7, If 0, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 4: Dev 7, If 1, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 4: Dev 7, If 2, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 5: Dev 8, If 1, Class=Miscellaneous Device, Driver=, 5000M
|__ Port 5: Dev 8, If 0, Class=Miscellaneous Device, 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 1: Dev 8, If 0, Class=Hub, Driver=hub/7p, 480M
|__ Port 1: Dev 10, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 6: Dev 12, If 0, Class=Hub, Driver=hub/7p, 480M
|__ Port 6: Dev 18, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 6: Dev 18, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 4: Dev 16, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 4: Dev 16, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 2: Dev 14, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 7: Dev 19, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 7: Dev 19, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 5: Dev 17, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 5: Dev 17, If 1, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 3: Dev 15, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 1: Dev 13, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 2: Dev 11, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 7: Dev 9, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 9, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 7: Dev 9, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 9, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 93, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/7p, 480M
|__ Port 5: Dev 20, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 21, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 4: Dev 24, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 4: Dev 24, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 4: Dev 24, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 4: Dev 24, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 2: Dev 22, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
|__ Port 3: Dev 23, If 3, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 3: Dev 23, If 1, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 3: Dev 23, If 2, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 3: Dev 23, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 480M
|__ Port 7: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 7: Dev 4, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 7: Dev 4, If 3, Class=Audio, Driver=snd-usb-audio, 480M

I don’t know what your purpose to show lsusb -t here…

What I am saying that is even one device in your lsusb -t could have more than one endpoint…

How should I count the number of the used endpoints?

I’ve counted again the endpoints by checking the bNumEndpoints on all the usb devices and also checked the number of all endpoints by running sudo grep ^E: /sys/kernel/debug/usb/devices | wc -l
I’m getting 77 endpoints and in dmesg the following error appears:


[71818.529299] usb 1-3.5.1: cp210x converter now attached to ttyUSB20
[71850.668679] usb 1-3.2.1: new full-speed USB device number 53 using tegra-xusb
[71850.780006] usb 1-3.2.1: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[71850.780015] usb 1-3.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[71850.780019] usb 1-3.2.1: Product: CP2102N USB to UART Bridge Controller
[71850.780023] usb 1-3.2.1: Manufacturer: Silicon Labs
[71850.780026] usb 1-3.2.1: SerialNumber: a8f4a52ac99feb11bcffcbacdf749906
[71850.780584] usb 1-3.2.1: Not enough host controller resources for new device state.
[71850.788346] usb 1-3.2.1: can't set config #1, error -12

The USB device is powered from power supply.
What could be the meaning of this message?

Thanks

Hi,

Not enough host controller resources for new device state.

This means the endpoint has meet the limits. No matter what calculation there, it just means the endpoints limit has reached. Please decrease the endpoints.

If i decrease the endpoints the error disappears, so seems that the limit is 75 or 76 endpoints, but shouldn’t it be 90 endpoints?

Actually the rule is max endpoint number of Orin is 92, and the max periodic endpoints of is 44.

This tool may help do the calculation.

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