What I call ‘the expander’ is just what you understanded above,i.e. a USB HUB. And how can I find a USB HUB that doesn’t exit these problems you refering to above such as power problems? Or how can I search for a reliable USB HUB on the Internet? For example,must I buy a USB HUB that has external power so that the USB HUB is reliable? Can you give some your advice for where to get a reliable USB HUB on the internet or for how can I distinguish if the USB HUB is reliable?
If each USB port of the PCIe card has its own controller as mentioned before (and thus have the full bandwidth available simultaneously on the same port), then you start with four ports matching your requirements to make the full bandwidth available.
Each port can have an external HUB added. That HUB can be internally powered and draw power from the parent USB port, which is a bad idea if the end point drawing power is significant. Most cameras are significant, although not necessarily a burden. A keyboard would be an example of something not significant.
Every port on the HUB must share with the parent port on the PCIe card (both power consumption and bandwidth). If you run a four port HUB through one port of the PCIe card, then only 25% of bandwidth will be available on the HUB (and total consumption on the four ports could end up pulling more than the single parent port which provides power for the case of non-powered HUBs). There is no method nor any possibility of gaining more ports and cheating bandwidth requirements…only a root HUB connected directly to the host can do this. An externally powered HUB can easily cheat the power consumption limitations.
A powered HUB can be added to a port and if only one port of that HUB is used, then it gets full bandwidth while also providing external power to avoid power issues. A single camera directly connected to the port of the PCIe card would very likely not have any issues with power (I won’t guarantee it, but my feeling is a single camera won’t be a power issue even if the PCIe card has a sum total of four cameras on it…but I don’t know about four ports of combined consumption…probably it is ok, but if the PCIe card has a secondary power connector, then this would be the reason for it).
USB HUBs are usually unpowered…a marketing term which isn’t very accurate…it would be more accurate to say they draw power from the upstream host. An externally powered HUB does not draw any power from the host, the HUB instead requires an external power cord. HUBs advertised as “powered” meet this requirement of having external power to avoid drawing power from the host.
Not all externally powered HUBs revert to host power when external power is removed, but most do. So a large number of “powered” HUBs you might find can also work “unpowered” and drawing from the host if external power goes away.
The USB standards provide for a certain amount of power which must be available to a port. When that port is from external power, then the standard says more power is available. There are a few rare high current draw devices out in the wild which can only work with externally powered HUBs.
Thanks for your help,linuxdev.
Thanks for this trove of information. You mentioned one of the expanders
In regard to this, I found the 5Gbps version of it. https://www.google.com/shopping/product/1652665602190855340?q="4-Port"+"USB+3.0"+"PCI+Express"+"x4"+-sata&oq="4-Port"+"USB+3.0"+"PCI+Express"+"x4"+-sata&prds=opd:9053687609506916972
The RocketU 1144D has full-height form factor and a PCI Express 2.0 x4 interface that is compatible PCIe x4 x8 and x16 slots
As the Xavier has
PCIe: x8, x4, x2, (2x) x1
does this mean that its possible to connect at least two of these cards (on x8 and another on x4) with each USB port having its own HUB and giving 5Gb/s ?
The dev kit carrier board has only one slot for the PCIe in the standard full height format. It is possible that PCIe has different slots for some custom carrier boards, but I have no experience with those.
I’ve never built a custom carrier board for a Jetson, but there are various combinations which are possible. I do not know if a custom carrier could be routed to a pair of PCIe x4. Someone who has worked with custom PCIe layout would need to answer that.
Some trivia for you on the topic which you might find useful follows…
Just for information, PCIe v2 is 5GT/s (giga transfers per second). PCIe v3 is 8GT/s. v2 has an encoding scheme of 8b/10b, and v3 has an encoding scheme of 128b/130b (basically an efficiency for required bits with overhead slightly exceeding actual bits used for data). The theoretical throughput of 4 lanes of v2:
5GT/s * (8b/10b) * 4 = 16Gb/s
For 4 lanes of v3:
8GT/s * (128b/130b) * 4 = 31.5Gb/s
If the raw throughput (including encoding bits) of USB3.1 gen. 1 is 5Gb/s, then four ports would theoretically require 20Gb/s throughput on the PCIe. So the revision 2 PCIe x4 might be slightly choking bandwidth, but only if all four root HUBs of the expansion card are running at full speed at the same time. Going to PCIe rev. 3 implies ample bandwidth left over even if all four USB3.1 gen. 1 ports are saturated. So there would be some possible reduction of full specs if you get the four port release with PCIe v2, whereas you’d be able to not worry about it with the PCIe v3 release.
There are plenty of cases where a card capable of v3 might throttle back to v2 speeds, or a v2 card might throttle back to v1 speeds. You’d need to test to see if the card involved actually makes it to full spec. Chances are with v2 it would, and although chances are a v3 would also meet its full spec, I’d say odds go down slightly. A v4 card (you’d need Xavier for that) has to be very tightly controlled signal quality to reach v4.
The TX2 dev kit has a max PCIe of the v2 revision. A PCIe v3 adapter card could not run at v3 speeds, but typically a card rated to a higher speed will also probably have tighter tolerances on the traces and perhaps have a slight edge at achieving v2 on a v2 bus, versus a v2 card on a v2 bus (designing for v3 generally means the manufacturer had to use tighter tolerances/quality).
Even if a card has a certain theoretical max output after overhead there will still be some overhead within the kernel itself.
Thanks for the answer. I think you misinterpreted my comment. I am not talking of a carrier board. I plan to use the Xavier AGX board and interface with the above mentioned PCIe card.
I wanted to use two of them and wanted to know if there are chances that it is supported.
The reason for my previous reply is that the card you pointed out is only capable of PCIe rev. 2. With four dedicated (root) USB ports you will find the card can run at full speed with three of its four ports, but may suffer bandwidth starving things with the fourth port. To recap, gen. 2 PCIe theoretical throughput without some of the overhead being considered:
5GT/s * (8b/10b) * 4 = 16Gb/s
USB3, gen. 1 (type-A USB3 connector), 5Gb/s, has this requirement:
Note that USB3 will not actually have a throughput of 20Gb/s for four ports since it has its own encoding inefficiencies, but you need the raw throughput to be supported by PCIe if you want this card to run at its full speed. In theory, if you use only three of the four ports, then those three ports would be capable of their best speed. If you use four ports, then performance will begin to drop (performance will drop a lot less than it would for a non-root HUB which shares).
If you mean you will use only two of the four ports, then this can easily work without saturating PCIe.