USB notes - other
Connectors
See Common plugs and connectors#USB
USB versions
- USB(1) exists since 1996, 1.1 since 1998
- only type A and type B plugs were technically in the specs
- 1.5 Mbps ('Low speed') and 12 Mbps ('Full speed')
- USB2 exists since 2000-ish ()
- used roughly the same cabling, if produced to higher spec
- also started introduced various of the mini and micro
- adds 480 Mbps ('High Speed')
- four pins
- USB3 exists since 2008ish
- 3.0 adds SuperSpeed (5 Gbit/s), 3.1 adds SuperSpeed+ (10 Gbit/s)
- leaves all those USB2 pins there, adds five pins and lines to USB2:[1]
- two differential pairs
- and a ground
- technically the USB3 part is entirely separated from USB2 part (which made hubs more interesting)
- often recognizable by the blue plastic in the plugs and sockets, or SS (for Super Speed, the mode that USB3 adds)
- micro plugs/sockets are often not blue, possibly because it would be hard to see anyway(verify)), and because they're less ambiguous that PC-side A sockets
- USB4 exists since 2019
Host hardware variants
You can think of HCI (Host Controller Interface) as a API of how an OS will communicate with a USB host device. Hardware and OSes think about backwards compatibility so this is mostly invisible to users.
HCI variants are not unique to a USB version, but each variant can be used to carry a set of USB specs, so it roughly seems that way.
Perhaps the USB2 situation helps illustrate this best: EHCI specced only USB2 high-speed, so hardware that supported USB2 and USB1 (basically everything) would actually present two controllers, and the OS spoke EHCI to one and OHCI/UHCI to the other.(verify)
xHCI seems designed to avoid this, and presents USB3, USB2, USB1 (and in future versions USB4) to the OS in a single interface.
- it is relatively rate for e.g. motherboards might present its USB ports in both xHCI and older things, though it has some value for legacy support, especially early days
PC controllers will be one of
- OHCI (Open Host Controller Interface)
- USB 1
- Open standard
- UHCI (Universal Host Controller Interface)
- USB 1
- Proprietary standard
- Intel and VIA are usually UHCI
- EHCI (Enhanced Host Controller Interface)
- USB 2
- public (open?) standard
- xHCI (eXtensible Host Controller Interface)
- USB 3
- in theory replaces OHCI, UHCI, and EHCI
See also:
Speeds
- USB1 "Low speed"
- ~178KByte/s (1.5 Mbit/s) of wire speed, max max ~120KByte/s of carried data due to 8b/10b coding (not yet accounting for protocol overhead)
- Meant for devices that will never need much speed, such as keyboards
- USB1 "Full speed"
- 1.5MByte/s (12 Mbit/s) wire speed, ~1.2MByte/s of carried data
- USB2 "High speed"
- 60MByte/s (=480Mbit/s) wire speed, ~48MByte/s carried data
- expect no more than 30MByte/s, and 25MB/s is more common (apparently because of offloading(verify))
- USB3 "Superspeed+"
- 625MByte/s (5Gbps) of wire speed, ~500MByte/s (4Gbps) carried data
- Note: May do USB2 devices a little faster (as in, may reach 30-40MByte/s where many USB2 controller may stop at ~25MByte/s) (verify)
- expect no more than ~400MB/s usually
- USB3.1 "Superspeed+"
- 1250MByte/s (10Gbps) of wire speed, before 128b/132b coding, ~1200MByte/s (~9Gbps) carried
- expect no more than ~900MByte/s usually
Notes:
- Hubs share speed.
- PC USB ports often come as two ports side by side on a hub, so share their speed
- This means e.g. copying between two adjacent ports may happen at half the speed you expected.
- (at least up to USB2 - USB3 became smarter about a few cases(verify))
- USB3 modes are full-duplex, everything before was half-duplex
- I'm ignoring USB4 for now