El comportamiento y la interacción de los "socios" de USB (un host y un dispositivo) están dispersos en la especificación de USB. La mejor manera de obtener algunos argumentos es mirar el "marco del dispositivo", Capítulo 9, que describe los posibles estados (obligatorios) del dispositivo (Figura 9-1), y el marco del Host (y Hub), en los Capítulos 10 y 11. Ignorar Detalles del protocolo (tuberías / tipos de transacción / capas de protocolo OSI abstractas, diseño de PCB, etc.), se puede lograr un mejor control de la interacción inicial mediante el estudio del diagrama de estado del puerto (Figura 11-10).
En esencia, si el cable no está conectado entre el host y el dispositivo, los puertos del host están en "Powered State" (VBUS está ENCENDIDO), pero "Desconectado". Los cables D + y D- se mantienen bajos con 15k tiros hacia abajo.
Cuando el cable está conectado, el VBUS entra en el dispositivo. El dispositivo reconoce que se está conectando y señala un evento de "conexión" tirando ALTO de uno de los cables D, D + si es un dispositivo FS / HS y D- si es un dispositivo LS.
Tire de los cables D +/- en un puerto determinado interrumpe el software del host, informando "cambio de estado del puerto". El software del host (generalmente ehci.sys) inicia la secuenciación de "reinicio de puerto" en ese puerto particular . Al finalizar con éxito el "reinicio del puerto USB", el puerto del host se habilita para la comunicación USB. El puerto se activa (los paquetes de marcos comienzan a fluir).
Usando el protocolo USB, el host asigna una dirección única a este dispositivo, y lee "descriptor del dispositivo". Esto inicia el proceso de "enumeración de dispositivos". El descriptor del dispositivo contiene información sobre a qué clase de dispositivo pertenece (HID, COM, MIDI, Impresora, etc.) y VID / PID de ese dispositivo en particular, más un montón de otra información, consulte la Tabla 9-8.
Después de obtener la clase de dispositivo y el VID / PID, el software host intenta hacer coincidir esta información en el registro de dispositivos y carga el controlador DEVICE correspondiente, ya sea uno genérico o específico del proveedor (si existe). Luego, el controlador del dispositivo finaliza el proceso de enumeración seleccionando la interfaz del dispositivo que termina con la configuración de "configuración del dispositivo". Obviamente, toda la comunicación USB se reconoce solo detrás de este puerto particular , incluso si todos los paquetes se transmiten a todos los puertos habilitados.
Lo anterior es el marco general del protocolo de conexión USB. Empaquetar datos para cualquier propósito particular (como MIDI) es una historia diferente, y se maneja a nivel de aplicación, o a nivel de controlador de dispositivo, si el sistema obtiene la clase de dispositivo adecuada. Para obtener comunicación MIDI nativa, el dispositivo debe tener esta clase en su descriptor y seguir todas las definiciones de clase MIDI .