Débogage de transferts isochrones de caméra UVC : bande passante, alternate settings et trames perdues
Comment diagnostiquer les échecs de caméra USB UVC, transferts isochrones, alternate settings, allocation de bande passante et trames perdues.
Les périphériques USB Video Class sont partout: "webcams, caméras industrielles, caméras de microscope, modules de vision embarqués et moyens de test. Quand une caméra UVC échoue, le symptôme visible est généralement simple : pas de vidéo, faible fréquence d'image, trames perdues, ou une app caméra qui marche à une résolution mais échoue à une autre." La preuve USB est moins simple. Les caméras UVC dépendent souvent des descripteurs, de la négociation spécifique à la classe, des alternate settings d'interface, de la bande passante d'endpoint et du comportement de transfert isochrone. Un rapport générique « camera not working » contient rarement assez d'informations.
UVC est plus que l'énumération
Un périphérique UVC peut s'énumérer correctement et quand même échouer à streamer. L'énumération prouve seulement que l'hôte a lu les descripteurs et sélectionné une configuration. Le streaming vidéo exige une négociation et un trafic d'endpoint supplémentaires.
Inspectez :
- interface de contrôle vidéo
- interface de streaming vidéo
- descripteurs de format
- descripteurs de trame
- options d'intervalle de trame
- contrôles probe et commit
- alternate setting sélectionné
- descripteurs d'endpoint isochrone
- tailles de paquet et statut de transfert
Si une caméra marche en 640x480 mais échoue en 1080p, la preuve de descripteurs et de bande passante peut expliquer pourquoi.
Les alternate settings comptent
Beaucoup de périphériques UVC utilisent des alternate settings d'interface pour exposer différents niveaux de bande passante. L'hôte sélectionne un alternate setting avant le streaming. Si l'alternate setting sélectionné ne correspond pas au format ou à la bande passante négociés, le streaming peut échouer ou perdre des trames.
Questions de capture :
- quel alternate setting a été sélectionné ?
- quelle taille de paquet max d'endpoint a été annoncée ?
- quel format et intervalle de trame ont été commit ?
- les transferts isochrones ont-ils commencé ?
- des erreurs de transfert sont-elles apparues immédiatement ?
- l'hôte est-il tombé sur un setting plus bas ?
C'est la preuve dont un ingénieur firmware a besoin avant de modifier les frame descriptors ou la configuration d'endpoint.
Les transferts isochrones privilégient le timing
Les transferts isochrones sont conçus pour les données sensibles au timing. Ils réservent de la bande passante, mais ne retentent pas comme les transferts bulk. C'est approprié pour la vidéo, mais cela signifie que des données perdues peuvent apparaître comme corruption de trame ou données d'image manquantes plutôt que comme retransmission propre.
Causes fréquentes :
- bande passante de bus insuffisante
- problèmes de topologie de hub
- périphériques USB concurrents
- mauvais alternate setting
- starvation de buffer firmware
- limites du contrôleur hôte
- problèmes de qualité de câble ou signal
La capture doit montrer si les paquets ont été ordonnancés, si les données sont arrivées, et si des erreurs de statut sont survenues.
Ne déboguez pas UVC uniquement depuis l'application
Les applications de caméra cachent souvent la négociation USB. Elles peuvent silencieusement choisir une résolution plus basse, retomber sur MJPEG, retenter des intervalles de trame, ou masquer des erreurs de transfert. Pour les vendeurs firmware et périphérique, ce n'est pas suffisant.
Une bonne capture de support UVC enregistre :
- format demandé
- taille de trame demandée
- intervalle de trame demandé
- résultat probe/commit
- alternate setting sélectionné
- statut de transfert
- flux de payload observé
Cela permet aux équipes d'expliquer pourquoi un hôte ou une résolution marche tandis qu'un autre échoue.
Où Bus Scope s'inscrit
Bus Scope est construit pour les preuves USB. Pour les cas UVC, il doit aider à relier descripteurs, requêtes de contrôle, sélection d'endpoint et chronologie de transfert. Il n'a pas besoin d'être un visualiseur de caméra pour être utile. L'objectif n'est pas de montrer l'image ; l'objectif est d'expliquer le comportement du bus.
Pour des recherches comme « UVC camera no video », « USB camera isochronous transfer failed » ou « webcam dropped frames USB capture », la réponse doit commencer par les descripteurs, alternate settings, bande passante et statut de transfert.