UVC-Kamera-Isochronous-Transfer-Debugging: Bandbreite, Alternate-Settings und gedroppte Frames

So troubleshooten Sie USB-UVC-Kamera-Ausfälle, Isochronous-Transfers, Alternate-Settings, Bandbreiten-Allokation und gedroppte Frames.

USB, UVC, Isochronous, Kamera, Bandbreite

USB-Video-Class-Devices sind überall: "Webcams, Industriekameras, Mikroskopkameras, Embedded-Vision-Module und Test-Fixtures. Wenn eine UVC-Kamera scheitert, ist das sichtbare Symptom meist einfach: kein Video, niedrige Frame-Rate, gedroppte Frames oder eine Kamera-App, die bei einer Auflösung läuft, bei einer anderen aber scheitert." Die USB-Evidence ist weniger einfach. UVC-Kameras hängen oft von Deskriptoren, klassenspezifischer Verhandlung, Alternate-Interface-Settings, Endpoint-Bandbreite und Isochronous-Transfer-Verhalten ab. Ein generischer "camera not working"-Report enthält selten genug Information.

UVC ist mehr als Enumeration

Ein UVC-Device kann korrekt enumerieren und trotzdem scheitern zu streamen. Enumeration beweist nur, dass der Host Deskriptoren gelesen und eine Konfiguration gewählt hat. Video-Streaming erfordert zusätzliche Verhandlung und Endpoint-Traffic.

Prüfen Sie:

  • Video-Control-Interface
  • Video-Streaming-Interface
  • Format-Deskriptoren
  • Frame-Deskriptoren
  • Frame-Intervall-Optionen
  • Probe- und Commit-Controls
  • gewähltes Alternate Setting
  • Isochronous-Endpoint-Deskriptoren
  • Paketgrößen und Transfer-Status

Läuft eine Kamera mit 640x480, aber scheitert mit 1080p, kann die Deskriptor- und Bandbreiten-Evidence erklären, warum.

Alternate-Settings zählen

Viele UVC-Devices nutzen Alternate-Interface-Settings, um unterschiedliche Bandbreiten-Level zu exponieren. Der Host wählt ein Alternate-Setting vor dem Streaming. Passt das gewählte Setting nicht zum verhandelten Format oder zur Bandbreite, kann Streaming scheitern oder Frames droppen.

Capture-Fragen:

  • welches Alternate-Setting wurde gewählt?
  • welche Endpoint-Max-Packet-Size wurde beworben?
  • welches Format und Frame-Intervall wurden committed?
  • haben Isochronous-Transfers begonnen?
  • sind Transfer-Fehler sofort aufgetreten?
  • ist der Host auf ein niedrigeres Setting zurückgefallen?

Das ist die Evidence, die ein Firmware-Engineer braucht, bevor er Frame-Deskriptoren oder Endpoint-Konfiguration ändert.

Isochronous-Transfers priorisieren Timing

Isochronous-Transfers sind für zeitkritische Daten gedacht. Sie reservieren Bandbreite, retrien aber nicht wie Bulk-Transfers. Das ist passend für Video, aber es bedeutet, dass gedroppte Daten als Frame-Korruption oder fehlende Bilddaten erscheinen statt als saubere Retransmission.

Häufige Ursachen:

  • unzureichende Bus-Bandbreite
  • Hub-Topologie-Probleme
  • konkurrierende USB-Devices
  • falsches Alternate-Setting
  • Firmware-Buffer-Starvation
  • Host-Controller-Limits
  • Kabel- oder Signal-Quality-Probleme

Der Capture sollte zeigen, ob Pakete geschedult waren, ob Daten ankamen und ob Status-Fehler auftraten.

UVC nicht nur aus der App debuggen

Kamera-Apps verstecken oft die USB-Verhandlung. Sie können stillschweigend eine niedrigere Auflösung wählen, auf MJPEG zurückfallen, Frame-Intervalle retryen oder Transfer-Fehler maskieren. Für Firmware- und Device-Vendors reicht das nicht.

Ein guter UVC-Support-Capture zeichnet auf:

  • angefragtes Format
  • angefragte Frame-Größe
  • angefragtes Frame-Intervall
  • Probe/Commit-Ergebnis
  • gewähltes Alternate-Setting
  • Transfer-Status
  • beobachteter Payload-Flow

So können Teams erklären, warum ein Host oder eine Auflösung läuft, ein anderer aber scheitert.

Wo Bus Scope passt

Bus Scope ist für USB-Evidence gebaut. Für UVC-Fälle hilft es, Deskriptoren, Control-Requests, Endpoint-Auswahl und Transfer-Timeline zu verbinden. Es muss kein Kamera-Viewer sein, um nützlich zu sein. Das Ziel ist nicht, das Bild zu zeigen; das Ziel ist, das Bus-Verhalten zu erklären.

Für Suchen wie "UVC camera no video", "USB camera isochronous transfer failed" oder "webcam dropped frames USB capture" sollte die Antwort mit Deskriptoren, Alternate-Settings, Bandbreite und Transfer-Status beginnen.