document updated 16 years ago, on Apr 16, 2008
USB peripheral controllers for the PC
A USB host controller is the
bit of hardware on a computer that allows it to act as the master in the master/slave relationship
in USB communications.
A USB peripheral controller (or "device controller"), then, is the hardware that performs the USB slave communication. Usually these are
integrated in/near microprocessors, and located inside very small devices like mice. However, full-fledged computers are sometimes able to communicate as a USB slave. This can be due to the fact that more and more peripherals are using embedded Linux/Windows, but just as often, it's because some USB device designers use a PC as an initial prototype.
Drivers
Hardware (PC interface)
Hardware (chips)
While individual chips require extra effort and money to make them be able to effectively cooperate with a computer, it's still a fallback option to be aware of. (particularly if they ultimately make it clear that KVM designs should never have a massive PC wedged in the middle)
- There are many microcontrollers and single-board computers that incorporate a USB device controller.
- "Hub controllers" usually contain one upstream port, and 4-8 downstream ports. Very few USB controller chips contain multiple upstream ports, because that ALWAYS implies that beyond-spec switching/sharing is occuring (the spec says communications must form a directed tree). Multi-upstream chips are sometimes are called "KVM controllers" or "USB switch controllers". Specific chips include:
- "OTG bridge controllers" are USB OTG controllers that can ferry mass-transfer requests from one to the other. Actually, the Philips ISP1261 is a WHOLE LOT more general than that. It has a "software emulated OTG controller" (SEOG) that can really open a lot of doors! (however... it can't directly hook to a PC, can it? The PC is expecting to talk to a peripheral, not a host... So this solves nothing?
- A chip that contains only the PHY and the SIE is able to connect as either an upstream or downstream connection, and can function as a hub. Controller chips that contain the higher-level processing are sometimes limited to only a few ongoing endpoints, and thus aren't able to pass an arbitrary number of connections over them like a hub would.
On the other hand, if you write software that talks directly to an SIE, you have to implement higher-level parts of the USB protocol yourself (though this doesn't apply when you're simply relaying packets without modification or deeper inspection). If you look at functional block diagrams of USB hubs (one, two, three), there's definitely more to them than the PHY+SIE (particularly for USB2.0-compliant hubs, since they require separate transaction translators for each port).
Chips that fill this role include: