Débogage des alternate settings USB et de la bande passante
Comment déboguer les alternate settings USB, la réservation de bande passante, les modes de caméra UVC, les taux d'échantillonnage audio, les points de terminaison isochrones, le changement d'interface et les échecs de flux haute qualité.
Beaucoup de périphériques USB de streaming fonctionnent en basse qualité mais échouent en haute qualité. Une webcam marche en 720p mais se fige en 1080p. Une interface audio USB fonctionne à 48 kHz mais clique à 192 kHz. Un périphérique de capture démarre dans un mode mais échoue quand l'application en choisit un autre. Les utilisateurs cherchent « USB alternate setting bandwidth », « UVC camera alternate setting », « USB audio isochronous bandwidth », « SET_INTERFACE streaming failed » ou « USB device works low resolution not high resolution » car le périphérique n'est pas complètement en panne: "un seul mode d'interface échoue."
Bus Scope est utile car les alternate settings sont visibles dans les descripteurs et les requêtes SET_INTERFACE. La preuve clé est l'alternate setting sélectionné avant la défaillance.
Ce que sont les alternate settings
Une interface USB peut définir plusieurs alternate settings. L'alternate setting 0 n'a souvent aucun endpoint de streaming. Les alternate settings supérieurs peuvent activer des endpoints avec des tailles de paquet ou des besoins en bande passante différents.
Exemple :
Interface 1 alternate 0 : pas de streaming
Interface 1 alternate 1 : endpoint basse bande passante
Interface 1 alternate 2 : endpoint bande passante moyenne
Interface 1 alternate 3 : endpoint haute bande passante
L'hôte en sélectionne un avec :
SET_INTERFACE interface=1 alternate=3
Si l'alternate 3 demande plus de bande passante que le bus ne peut en fournir, le streaming peut échouer.
Modes de caméra UVC
Les caméras USB Video Class exposent souvent de nombreux modes :
- MJPEG vs YUY2 non compressé
- 720p vs 1080p vs 4K
- 15 fps vs 30 fps vs 60 fps
- tailles de paquet d'endpoint différentes
- alternate settings différents
La vidéo non compressée peut exiger bien plus de bande passante que le MJPEG. Une caméra peut s'énumérer correctement mais échouer quand l'application sélectionne un mode agressif.
Taux d'échantillonnage audio USB
Les interfaces audio peuvent changer d'alternate setting pour le taux d'échantillonnage, le nombre de canaux, la profondeur de bit et la taille de paquet. Un mode qui fonctionne sur un contrôleur hôte peut échouer derrière un hub ou une station d'accueil.
Symptômes :
- clics et pops à taux d'échantillonnage élevé
- flux qui échoue seulement avec de nombreux canaux
- périphérique fonctionnel après reconnexion mais en échec après changement de mode
- audio qui s'arrête quand un autre périphérique USB démarre du trafic
La trace du bus doit montrer l'alternate setting sélectionné et le statut des paquets isochrones.
Réservation de bande passante
Les transferts isochrones et interrupt réservent une bande passante périodique. Si le bus ne peut pas satisfaire la requête, l'hôte peut rejeter la sélection d'interface ou le flux peut tourner médiocrement.
La pression sur la bande passante vient de :
- plusieurs caméras sur un même hub
- audio USB plus périphérique de capture
- périphérique full-speed derrière un transaction translator
- topologie de station d'accueil
- limites d'ordonnancement du contrôleur hôte
- câble provoquant une retombée de vitesse
Checklist de débogage
Suivez ce flux :
- Capturez les descripteurs dès le branchement.
- Listez les alternate settings de l'interface de streaming.
- Capturez la requête
SET_INTERFACE. - Enregistrez l'alternate setting sélectionné.
- Comparez le mode de qualité qui marche et celui qui échoue.
- Inspectez la taille de paquet max et l'intervalle du endpoint.
- Vérifiez la vitesse négociée du périphérique.
- Testez port direct vs hub/station d'accueil.
- Réduisez résolution, fréquence d'image, taux d'échantillonnage ou nombre de canaux.
- Conservez ensemble les paquets de setup et de streaming.
Diagnostic final
Les échecs d'alternate setting USB sont des problèmes de sélection de mode et de bande passante. Un périphérique peut s'énumérer et fonctionner dans un mode mais échouer quand l'hôte sélectionne un alternate setting plus gourmand en bande passante.
Bus Scope aide à exposer le mode d'interface sélectionné et les preuves sur les endpoints, pour que les échecs de streaming haute qualité soient diagnostiqués comme un comportement de bande passante et de descripteurs USB, et non comme une instabilité applicative générique.