Un sistema USB ha un design asimmetrico. È costituito da un host, da diverse porte USB a valle e da più periferiche collegate in una topologia a stella. Nei livelli possono essere inclusi hub USB aggiuntivi che consentono di ramificarsi in una struttura ad albero con un massimo di cinque livelli.
Un host USB può avere più controllori host. Ogni controller host fornisce una o più porte USB. Ad un singolo controller host possono essere collegati fino a 127 dispositivi, compresi i dispositivi hub.
I dispositivi USB sono collegati in serie attraverso hub. C'è sempre un hub conosciuto come root hub. L'hub principale è integrato nel controller host. Ci sono degli hub speciali, chiamati "hub di condivisione". Questi permettono a più computer di accedere alle stesse periferiche. Funzionano scambiando l'accesso tra i PC, manualmente o automaticamente. Sono popolari negli ambienti di piccoli uffici. In termini di rete, essi convergono piuttosto che diramazioni divergenti.
Un dispositivo fisico USB può avere diversi sotto-dispositivi logici che vengono chiamati funzioni del dispositivo. Un singolo dispositivo può fornire diverse funzioni, ad esempio una webcam (funzione dispositivo video) con microfono incorporato (funzione dispositivo audio).
La comunicazione dei dispositivi USB si basa su tubi (canali logici). I tubi sono connessioni dal controllore host ad un'entità logica sul dispositivo denominato endpoint. Il termine endpoint viene usato occasionalmente per indicare erroneamente il tubo. Un dispositivo USB può avere fino a 32 tubi attivi, 16 nel controller host e 16 fuori dal controller.
Ogni endpoint può trasferire i dati in una sola direzione, sia in entrata che in uscita dal dispositivo, quindi ogni tubo è unidirezionale. Gli endpoint sono raggruppati in interfacce ed ogni interfaccia è associata ad una singola funzione del dispositivo. Un'eccezione è rappresentata dal punto finale zero, che viene utilizzato per la configurazione del dispositivo e che non è associato ad alcuna interfaccia.
Quando un dispositivo USB viene collegato per la prima volta ad un host USB, viene avviato il processo di enumerazione del dispositivo USB. L'enumerazione inizia con l'invio di un segnale di reset al dispositivo USB. La velocità del dispositivo USB viene determinata durante la segnalazione di reset. Dopo il reset, le informazioni del dispositivo USB vengono lette dall'host, quindi al dispositivo viene assegnato un indirizzo univoco a 7 bit. Se il dispositivo è supportato dall'host, i driver del dispositivo necessari per comunicare con il dispositivo vengono caricati e il dispositivo viene impostato in uno stato configurato. Se l'host USB viene riavviato, il processo di enumerazione viene ripetuto per tutti i dispositivi collegati.
Il controllore host effettua il polling del bus per il traffico, di solito in modo round-robin, quindi nessun dispositivo USB può trasferire dati sul bus senza una richiesta esplicita da parte del controllore host.
Controllori host
L'hardware del computer che contiene il controller host e l'hub root ha un'interfaccia per il programmatore. Si chiama Host Controller Device (HCD) ed è definita dall'implementatore dell'hardware.
Per USB 1.0 e 1.1, c'erano due diverse implementazioni HCD, Open Host Controller Interface (OHCI) e Universal Host Controller Interface (UHCI). OHCI è stata sviluppata da Compaq, Microsoft e National Semiconductor, UHCI da Intel.
VIA Technologies ha ottenuto la licenza dello standard UHCI da Intel; tutti gli altri implementatori di chipset utilizzano OHCI. UHCI si affida maggiormente al software. Ciò significa che UHCI è un po' più impegnativo in termini di processore rispetto a OHCI, ma più facile e meno costoso da realizzare. Poiché ci sono state due diverse implementazioni, i fornitori di sistemi operativi e i fornitori di hardware hanno avuto bisogno di sviluppare e testare entrambi. Questo ha aumentato il costo.
La specifica USB non specifica alcuna interfaccia HCD e non si occupa di esse. In altre parole, l'USB definisce il formato di trasferimento dei dati attraverso la porta, ma non il sistema con cui l'hardware USB comunica con il computer in cui si trova.
Durante la fase di progettazione dell'USB 2.0, l'USB-IF ha insistito sul fatto che ci fosse una sola implementazione. L'implementazione HCD USB 2.0 è chiamata Enhanced Host Controller Interface (EHCI). Solo l'EHCI può supportare trasferimenti ad alta velocità (480 Mbit/s). La maggior parte dei controllori EHCI basati su PCI hanno altre implementazioni HCD chiamate "companion host controller" per supportare la Full Speed (12 Mbit/s) e possono essere usati per qualsiasi dispositivo che dichiara di essere membro di una certa classe. Si suppone che un sistema operativo implementi tutte le classi di dispositivi, in modo da poter fornire driver generici per qualsiasi dispositivo USB. Le classi di dispositivi sono decise dal Device Working Group del Forum degli Implementatori USB.
Classi di dispositivi USB
Le classi di dispositivi includono:
| Classe | Utilizzo | Descrizione | Esempi |
| 00h | Dispositivo | Classe non specificata 0 | (La classe del dispositivo non è specificata. I descrittori di interfaccia sono utilizzati per determinare i driver richiesti). |
| 01h | Interfaccia | Audio | Altoparlante, microfono, scheda audio |
| 02h | Entrambi | Comunicazioni e controllo CDC | Adattatore Ethernet, modem, adattatore per porta seriale |
| 03h | Interfaccia | Dispositivo di interfaccia umana (HID) | Tastiera, mouse, joystick |
| 05h | Interfaccia | Dispositivo di interfaccia fisica (PID) | Joystick di feedback della forza |
| 06h | Interfaccia | Immagine | Fotocamera digitale (la maggior parte delle telecamere funziona come memoria di massa per l'accesso diretto ai supporti di memorizzazione). |
| 07h | Interfaccia | Stampante | Stampante laser, stampante a getto d'inchiostro |
| 08h | Interfaccia | Stoccaggio di massa | Chiavetta USB, lettore di schede di memoria, lettore audio digitale, unità esterne |
| 09h | Dispositivo | Hub USB | Mozzo a piena velocità, mozzo ad alta velocità |
| 0Ah | Interfaccia | CDC-Data | (Questa classe è usata insieme alla classe 02h - Comunicazioni e controllo CDC). |
| 0Bh | Interfaccia | Smart Card | Lettore di smart card USB |
| 0Dh | Interfaccia | Sicurezza dei contenuti | - |
| 0Eh | Interfaccia | Video | Webcam |
| 0Fh | Interfaccia | Assistenza sanitaria personale | - |
| DCh | Entrambi | Dispositivo diagnostico | Dispositivo di test di conformità USB |
| E0h | Interfaccia | Controllore wireless | Adattatore Wi-Fi, adattatore Bluetooth |
| EFh | Entrambi | Varie | Dispositivo di sincronizzazione ActiveSync e Palm |
| FEh | Interfaccia | Applicazione specifica | Ponte IrDA |
| FFh | Entrambi | Specifico per il fornitore | (Questo codice di classe indica che il dispositivo necessita di driver specifici per il fornitore). |
Nota classe 0: Utilizzare le informazioni sulla classe nei descrittori di interfaccia. Questa classe di base è definita per essere utilizzata nei Device Descriptors per indicare che le informazioni di classe devono essere determinate dai descrittori di interfaccia del dispositivo.