El comportamiento y la interacción de los "socios" del USB (un anfitrión y un dispositivo) se encuentra disperso en la especificación del USB. La mejor manera de obtener algunos fundamentos es mirar el "marco del dispositivo", Capítulo 9, que describe los posibles estados del dispositivo (obligatorio) (Figura 9-1), y el marco del Host (y el Hub), en los Capítulos 10 y 11. Ignorando los detalles del protocolo (tuberías/tipos de transacción/capas del protocolo OSI abstracto, disposición de la PCB, etc.), se puede lograr un mejor control de la interacción inicial estudiando el diagrama de estado de los puertos (Figura 11-10).
En esencia, si el cable no está conectado entre el host y el dispositivo, los puertos del host están en "Estado Accionado" (VBUS está encendido), pero "Desconectado". Los cables D+ y D- se mantienen bajos con tirones de 15k.
Cuando se conecta el cable, el VBUS entra en el dispositivo. El dispositivo reconoce que está siendo conectado, y señala un evento de "conexión" tirando de uno de los cables D ALTO, D+ si es un dispositivo FS/HS, y D- si es un dispositivo LS.
Al tirar de los cables D+/- de un determinado puerto se produce una interrupción en el software del host, informando del "cambio de estado del puerto". El software del host (normalmente ehci.sys) inicia entonces la secuencia de "reinicio del puerto" en ese particular puerto. Una vez completado con éxito el "restablecimiento del puerto USB", el puerto anfitrión se habilita para la comunicación USB. El puerto se activa (los paquetes de trama comienzan a salir).
Usando el protocolo USB, el anfitrión asigna una dirección única a este dispositivo, y lee "descriptor del dispositivo". Esto inicia el proceso de "enumeración de dispositivos". El descriptor de dispositivo contiene información sobre la clase de dispositivo a la que pertenece (HID, COM, MIDI, Impresora, etc.), y VID/PID de ese dispositivo en particular, además de un montón de otra información, véase la Tabla 9-8.
Después de obtener la clase de dispositivo y el VID/PID, el software del host intenta hacer coincidir esta información en el registro del dispositivo, y carga el controlador del DISPOSITIVO correspondiente, ya sea uno genérico o específico del proveedor (si existe). A continuación, el controlador del dispositivo termina el proceso de enumeración seleccionando la interfaz del dispositivo que termina con el ajuste "configuración del dispositivo". Obviamente toda la comunicación USB se reconoce detrás de este puerto particular sólo, incluso si todos los paquetes se transmiten a todos los puertos habilitados.
Lo anterior es el marco general del protocolo de conexión USB. El empaquetamiento de datos para cualquier propósito particular (como MIDI) es una historia diferente, y se maneja ya sea a nivel de la aplicación, o a nivel del controlador del dispositivo, si el sistema obtiene la clase de dispositivo apropiada. Para obtener una comunicación MIDI nativa, el dispositivo debe tener esta clase en su descriptor y seguir todos los Definiciones de clase MIDI .