Depuración de alternate setting y ancho de banda USB
Cómo depurar alternate settings USB, reserva de ancho de banda, modos de cámara UVC, sample rates de audio, endpoints isócronos, cambio de interfaz y fallos en streams de alta calidad.
Muchos dispositivos USB de streaming funcionan en baja calidad pero fallan en alta. Una webcam va a 720p pero se congela a 1080p. Una interfaz de audio USB va a 48 kHz pero chasquea a 192 kHz. Un dispositivo de captura empieza en un modo y falla cuando la aplicación elige otro. Los usuarios buscan "USB alternate setting bandwidth", "UVC camera alternate setting", "USB audio isochronous bandwidth", "SET_INTERFACE streaming failed" y "USB device works low resolution not high resolution" porque el dispositivo no está roto del todo. Lo que falla es un modo de interfaz concreto.
Bus Scope ayuda porque los alternate settings se ven en los descriptores y en las peticiones SET_INTERFACE. La prueba clave es qué alternate setting se eligió antes del fallo.
Qué son los alternate settings
Una interfaz USB puede definir varios alternate settings. El alternate setting 0 a menudo no tiene endpoints de streaming. Los alternate settings más altos pueden habilitar endpoints con packet sizes o requisitos de ancho de banda distintos.
Ejemplo:
Interface 1 alternate 0: no streaming
Interface 1 alternate 1: low bandwidth endpoint
Interface 1 alternate 2: medium bandwidth endpoint
Interface 1 alternate 3: high bandwidth endpoint
El host elige uno con:
SET_INTERFACE interface=1 alternate=3
Si el alternate 3 pide más ancho de banda del que el bus puede dar, el streaming falla.
Modos de cámara UVC
Las cámaras USB Video Class suelen exponer muchos modos:
- MJPEG frente a YUY2 sin comprimir.
- 720p frente a 1080p frente a 4K.
- 15 fps frente a 30 fps frente a 60 fps.
- Distintos packet sizes en los endpoints.
- Distintos alternate settings.
El vídeo sin comprimir puede pedir mucho más ancho de banda que MJPEG. Una cámara puede enumerar bien y fallar cuando la aplicación elige un modo agresivo.
Sample rates de audio USB
Las interfaces de audio pueden cambiar de alternate setting para sample rate, número de canales, bit depth y packet size. Un modo que funciona en un host controller puede fallar al pasar por un hub o dock.
Síntomas:
- Clicks y pops a sample rate alto.
- El stream falla solo con muchos canales.
- El dispositivo funciona tras reconectar pero falla tras cambiar de modo.
- El audio se corta cuando otro dispositivo USB empieza a generar tráfico.
La traza del bus debería enseñar el alternate setting elegido y el estado de los paquetes isócronos.
Reserva de ancho de banda
Las transferencias isócronas e interrupt reservan ancho de banda periódico. Si el bus no puede satisfacer la petición, el host puede rechazar la selección de interfaz o el stream va a ir mal.
La presión de ancho de banda viene de:
- Varias cámaras en el mismo hub.
- Audio USB más dispositivo de captura.
- Dispositivo full-speed detrás de un transaction translator.
- Topología de dock.
- Límites de scheduling del host controller.
- Cable que provoca speed fallback.
Checklist de depuración
Usa este flujo:
- Captura los descriptores desde el momento del plug-in.
- Lista los alternate settings de la interfaz de streaming.
- Captura la petición
SET_INTERFACE. - Anota el alternate setting elegido.
- Compara los modos de calidad que funcionan y los que fallan.
- Inspecciona el max packet size y el interval del endpoint.
- Comprueba la velocidad negociada del dispositivo.
- Prueba directo al puerto frente a hub/dock.
- Reduce resolución, frame rate, sample rate o número de canales.
- Conserva juntos los paquetes de setup y de streaming.
Diagnóstico final
Los fallos de alternate setting USB son problemas de selección de modo y de ancho de banda. Un dispositivo puede enumerar y funcionar en un modo, y fallar cuando el host elige un alternate setting con más ancho de banda.
Bus Scope ayuda a exponer el modo de interfaz elegido y la evidencia de endpoints para que los fallos de streaming en alta calidad se diagnostiquen como comportamiento de descriptores y ancho de banda USB, y no como inestabilidad genérica de la aplicación.