Ein USB-System hat einen asymmetrischen Aufbau. Es besteht aus einem Host, mehreren nachgeschalteten USB-Ports und mehreren Peripheriegeräten, die in einer Sterntopologie angeschlossen sind. Zusätzliche USB-Hubs können in die Ebenen aufgenommen werden, wodurch eine Verzweigung in eine Baumstruktur mit bis zu fünf Ebenen möglich ist.
Ein USB-Host kann mehrere Host-Controller haben. Jeder Host-Controller stellt einen oder mehrere USB-Ports zur Verfügung. Bis zu 127 Geräte, einschließlich der Hub-Geräte, können an einen einzigen Host-Controller angeschlossen werden.
USB-Geräte sind über Hubs in Reihe geschaltet. Es gibt immer einen Hub, der als Root-Hub bezeichnet wird. Der Root-Hub ist in den Host-Controller integriert. Es gibt spezielle Hubs, die als "Sharing Hubs" bezeichnet werden. Diese ermöglichen es mehreren Computern, auf die gleichen Peripheriegeräte zuzugreifen. Sie funktionieren durch Umschalten des Zugriffs zwischen PCs, entweder manuell oder automatisch. Sie sind in kleinen Büroumgebungen beliebt. Was das Netzwerk anbelangt, so konvergieren sie eher, als dass sie divergieren.
Ein physisches USB-Gerät kann mehrere logische Untergeräte haben, die als Gerätefunktionen bezeichnet werden. Ein einzelnes Gerät kann mehrere Funktionen bieten, z.B. eine Webcam (Videogerätefunktion) mit einem eingebauten Mikrofon (Audiogerätefunktion).
Die Kommunikation mit USB-Geräten basiert auf Pipes (logischen Kanälen). Pipes sind Verbindungen vom Host-Controller zu einer logischen Einheit auf dem Gerät, die als Endpunkt bezeichnet wird. Der Begriff Endpunkt wird gelegentlich verwendet, um fälschlicherweise auf die Pipe zu verweisen. Ein USB-Gerät kann bis zu 32 aktive Pipes haben, 16 in den Host-Controller und 16 aus dem Controller heraus.
Jeder Endpunkt kann Daten nur in eine Richtung übertragen, entweder in das Gerät hinein oder aus dem Gerät heraus, so dass jede Pipe unidirektional ist. Endpunkte sind in Schnittstellen gruppiert, und jede Schnittstelle ist einer einzigen Gerätefunktion zugeordnet. Eine Ausnahme bildet der Endpunkt Null, der für die Gerätekonfiguration verwendet wird und keiner Schnittstelle zugeordnet ist.
Wenn ein USB-Gerät zum ersten Mal an einen USB-Host angeschlossen wird, wird der Enumerationsprozess für das USB-Gerät gestartet. Die Aufzählung beginnt mit dem Senden eines Reset-Signals an das USB-Gerät. Während der Reset-Signalisierung wird die Geschwindigkeit des USB-Geräts bestimmt. Nach dem Zurücksetzen werden die Informationen des USB-Geräts vom Host gelesen, dann wird dem Gerät eine eindeutige 7-Bit-Adresse zugewiesen. Wenn das Gerät vom Host unterstützt wird, werden die für die Kommunikation mit dem Gerät erforderlichen Gerätetreiber geladen, und das Gerät wird in einen konfigurierten Zustand versetzt. Wenn der USB-Host neu gestartet wird, wird der Aufzählungsvorgang für alle angeschlossenen Geräte wiederholt.
Der Host-Controller fragt den Bus nach Datenverkehr ab, normalerweise in einer Round-Robin-Art, so dass kein USB-Gerät ohne explizite Anfrage des Host-Controllers Daten auf dem Bus übertragen kann.
Host-Controller
Die Computerhardware, die den Host-Controller und den Root-Hub enthält, verfügt über eine Schnittstelle für den Programmierer. Sie wird Host Controller Device (HCD) genannt und vom Hardware-Implementierer definiert.
Für USB 1.0 und 1.1 gab es zwei verschiedene HCD-Implementierungen, Open Host Controller Interface (OHCI) und Universal Host Controller Interface (UHCI). OHCI wurde von Compaq, Microsoft und National Semiconductor entwickelt, UHCI von Intel.
VIA Technologies hat den UHCI-Standard von Intel lizenziert; alle anderen Chipsatz-Implementierer verwenden OHCI. UHCI verlässt sich mehr auf Software. Das bedeutet, dass UHCI etwas prozessorintensiver als OHCI ist, aber einfacher und billiger herzustellen ist. Da es zwei verschiedene Implementierungen gab, mussten die Hersteller von Betriebssystemen und Hardware auf beiden entwickeln und testen. Dies erhöhte die Kosten.
Die USB-Spezifikation spezifiziert keine HCD-Schnittstellen und befasst sich nicht mit ihnen. Mit anderen Worten: USB definiert das Format der Datenübertragung über den Port, aber nicht das System, über das die USB-Hardware mit dem Computer, in dem sie sitzt, kommuniziert.
Während der Entwurfsphase von USB 2.0 bestand die USB-IF darauf, dass es nur eine Implementierung gab. Die USB 2.0 HCD-Implementierung wird als Enhanced Host Controller Interface (EHCI) bezeichnet. Nur EHCI kann Übertragungen mit hoher Geschwindigkeit (480 Mbit/s) unterstützen. Die meisten PCI-basierten EHCI-Controller verfügen über andere HCD-Implementierungen, die als 'companion host controller' bezeichnet werden, um Full Speed (12 Mbit/s) zu unterstützen, und können für jedes Gerät verwendet werden, das behauptet, Mitglied einer bestimmten Klasse zu sein. Ein Betriebssystem soll alle Geräteklassen implementieren, so dass es generische Treiber für jedes USB-Gerät bereitstellen kann. Die Geräteklassen werden von der Device Working Group des USB Implementers Forum festgelegt.
USB-Geräte-Klassen
Geräteklassen umfassen:
| Klasse | Verwendung | Beschreibung | Beispiele |
| 00h | Gerät | Nicht spezifizierte Klasse 0 | (Die Geräteklasse ist nicht spezifiziert. Zur Bestimmung der erforderlichen Treiber werden Schnittstellen-Deskriptoren verwendet). |
| 01h | Schnittstelle | Audio | Lautsprecher, Mikrofon, Soundkarte |
| 02h | Beide | Kommunikation und CDC-Kontrolle | Ethernet-Adapter, Modem, Adapter für die serielle Schnittstelle |
| 03h | Schnittstelle | Menschliches Interface-Gerät (HID) | Tastatur, Maus, Joystick |
| 05h | Schnittstelle | Physikalisches Schnittstellengerät (PID) | Force-Feedback-Joystick |
| 06h | Schnittstelle | Bild | Digitalkamera (Die meisten Kameras fungieren als Massenspeicher für den direkten Zugriff auf Speichermedien). |
| 07h | Schnittstelle | Drucker | Laserdrucker, Tintenstrahldrucker |
| 08h | Schnittstelle | Massenspeicher | USB-Flash-Laufwerk, Speicherkartenleser, digitaler Audioplayer, externe Laufwerke |
| 09h | Gerät | USB-Hub | Full-Speed-Nabe, Hi-Speed-Nabe |
| 0Ah | Schnittstelle | CDC-Daten | (Diese Klasse wird zusammen mit Klasse 02h - Kommunikation und CDC-Steuerung verwendet). |
| 0Bh | Schnittstelle | Chipkarte | USB-Chipkarten-Lesegerät |
| 0Dh | Schnittstelle | Sicherheit von Inhalten | - |
| 0Eh | Schnittstelle | Video | Webcam |
| 0Fh | Schnittstelle | Persönliche Gesundheitspflege | - |
| DCh | Beide | Diagnostisches Gerät | Gerät zur Prüfung der USB-Konformität |
| E0h | Schnittstelle | Drahtloser Controller | Wi-Fi-Adapter, Bluetooth-Adapter |
| EFh | Beide | Verschiedenes | ActiveSync und Palm-Synchronisationsgerät |
| FEh | Schnittstelle | Anwendungsspezifisch | IrDA-Brücke |
| FFh | Beide | Anbieter-spezifisch | (Dieser Klassencode zeigt an, dass das Gerät herstellerspezifische Treiber benötigt). |
Hinweis Klasse 0: Verwenden Sie Klasseninformationen in den Schnittstellendeskriptoren. Diese Basisklasse ist für die Verwendung in den Gerätedeskriptoren definiert, um anzugeben, dass die Klasseninformationen aus den Schnittstellendeskriptoren im Gerät bestimmt werden sollen.