We are using TX2 module and in case we have more than 32 USB endpoints, we are getting an error that devices fail to enumerate.
According to the following post, we should be able to get up to 70 endpoints:
This is the USB device tree, if we connect one more device we will encounter an error:
The problem is most devices have at least 2 endpoints, in our devices we had several that had 4 and 5. The original problem showed up using the TX2 module, and is the same for the TX2 NX. The Xavier NX does better (64 I think), but still runs into limits. Haven’t tried a Nano or Orin though. We ended up lashing a PCIe USB 3 controller alongside to get around the issue, which is most likely silicon based and internal to the chipsets, and not a driver issue.
We have developed a M.2 slot based PCIe Root controller, but I haven’t ported the driver yet for it to be useful.
I think R28.2 was where the 67 came from, the TX2 module was capable of more, but with R32.5 it fell back in line with the TX2 NX. We switched the product that needed the heavy usb connections to using the Xavier NX, and still needed to add the additional PCIe root controller to handle everything.
I will say while it may be hw limited in silicon I don’t think it is the same across the TX2/TX2 NX/Xavier NX devices though, so there is some driver component (everyone using the same tegra_xhci?).
Running the stock rootfs on the original TX2 devkit (that’s how far back the original post goes), the capabilities of different PCIe devices varied as well, some had limits that encompassed both USB2 and USB3 counts and some worked fine with large numbers of USB2 while having a limit on USB3.