4 ms·
It's backwards compatible on the device side (you can plug a 3.0 device into a 2.0 port and work at lower speed). But I really doubt that you can use an xHCI co
by floatboth 8y ago
It's backwards compatible on the device side (you can plug a 3.0 device into a 2.0 port and work at lower speed). But I really doubt that you can use an xHCI controller through EHCI drivers.
- pgeorgi 8y ago> But I really doubt that you can use an xHCI controller through EHCI drivers. Indeed, you can't. xHCI subsumes all USB operation and doesn't need companion controllers, but presents a _very_ different interface. That's different from the USB1/2 transition where USB2 was a separate controller that could take over the ports from a USB1 controller, giving them back if a USB1 device is attached. Some boards/chipsets do that with EHCI and xHCI to support operating systems without xhci drivers, but that's getting rarer.
- kqr 8y agoI'm fascinated this has worked so well in all operating systems I've used that I've never had reason to acquire this knowledge. I'm simultaneously disappointed that this is not (as far as I can tell) widely known information. It sounds like the thing that may prevent you from going on goose chase if you ever need to debug it.
- pgeorgi 8y agoAs soon as you write an USB controller driver, you'll stumble over that quickly. The EHCI and XHCI specs are freely available and describe this in detail. It's just that only few people need to write such drivers. :-) As for it working so well, that's mostly on the EE side: they were _very_ careful to provide this hardware based routing with defaults that make sure that old OSes continue to work while new OSes (or new drivers for old OSes) can make use of the new controllers.