Lo sviluppo di questo tutorial è al momento sospeso 
[ Universal Serial Bus: indice
]
[ ] [ ]
L'host deve coordinare tutto lo scambio di informazioni in un bus
USB. Esso deve disporre di specifiche capacità hardware e software, nonché di
potenza di calcolo adeguata a svolgere un lavoro non banale. In genere è un PC
con un sistema operativo moderno ma anche molti microcontrollori di fascia alta
possono essere utilizzati come host.
In un bus USB può essere presente
un solo host.
Il device, pur avendo un compito più semplice, richiede comunque
una notevole dose di "intelligenza" ed in genere è quindi costituito da un
dispositivo programmabile (microcontrollore o FPGA). I device possono essere
fino ad un massimo di 127, ciascuno individuato da un singolo indirizzo
I compiti dell'host
- Enumerazione dei device
- L'host deve essere in grado all'accensione di riconoscere i
device ad esso collegati, assegnar loro un indirizzo ed una
velocità, richiedere ulteriori informazioni al fine di attivare il
driver corretto. Questo processo viene indicato col termine di
enumerazione e deve essere ripetuto anche ogniqualvolta un device
viene connesso oppure sconnesso dal bus.
- Coordinamento del trasferimento dati
- E' compito dell'host abilitare un device a
trasmettere o ricevere dati. Nel far questo tiene conto che alcuni
device possono aver "prenotato" la richiesta di trasmettere dati in
un determinato istante. Il trasferimento dati può avvenire solo tra
host e device e solo in una direzione alla volta (in
questo fa eccezione USB3)
- Trasferire dati
- Inviare o ricevere dati verso un determinato device
- Controllo degli errori
- I pacchetti possono opzionalmente contenere un codice per il
controllo di eventuali errori e la conseguente richiesta di
ri-trasmissione.
- Gestire l'alimentazione
- L'host deve alimentare, su richiesta, il device
gestendo anche le opzioni di risparmio energetico. La potenza standard
fornita è limitata a pochi watt (500 mA @ 5 V, 900 mA @ 5V per USB3)
I compiti del device
- Rispondere all'enumerazione
- Riconoscere la richiesta di enumerazione proveniente dall'host e
rispondere adeguatamente
- Trasferire dati
- Ricevere dati dall'host e, se necessario, inviare un pacchetto di
risposta
- Controllo degli errori
- I pacchetti possono opzionalmente contenere un codice per il
controllo di eventuali errori e la conseguente richiesta di
ri-trasmissione.
- Gestire la propria alimentazione
- Richiedere, se necessario, la corrente di alimentazione necessaria
al proprio funzionamento e gestire le richieste dell'host di
risparmio energetico. L'alimentazione del device può provenire
dall'host (bus powered), con i limiti di potenza già
detti, oppure essere prelevata da un alimentatore indipendente