USB Alternate Setting und Bandwidth-Debugging

So debuggen Sie USB-Alternate-Settings, Bandbreitenreservierung, UVC-Kameramodi, Audio-Sampleraten, Isochronous-Endpoints, Interface-Switching und hochwertige Streaming-Ausfälle.

USB Alternate Setting, USB-Bandbreite, UVC-Kamera, USB-Audio, Isochronous-Endpoint, Streaming-Interface, USB-Diagnose

Viele USB-Streaming-Geräte laufen in niedriger Qualität, fallen aber in hoher Qualität aus. Eine Webcam läuft mit 720p, friert aber bei 1080p ein. Ein USB-Audio-Interface läuft mit 48 kHz, klickt aber bei 192 kHz. Ein Capture-Device startet in einem Modus, scheitert aber, wenn die App einen anderen wählt. Nutzer suchen nach "USB alternate setting bandwidth", "UVC camera alternate setting", "USB audio isochronous bandwidth", "SET_INTERFACE streaming failed" und "USB device works low resolution not high resolution", weil das Gerät nicht komplett defekt ist – ein Interface-Modus fällt aus.

Bus Scope hilft, weil Alternate Settings in Deskriptoren und SET_INTERFACE-Requests sichtbar sind. Der entscheidende Beleg ist, welches Alternate Setting vor dem Ausfall gewählt wurde.

Was Alternate Settings sind

Ein USB-Interface kann mehrere Alternate Settings definieren. Alternate Setting 0 hat oft keine Streaming-Endpoints. Höhere Alternate Settings aktivieren Endpoints mit anderen Paketgrößen oder Bandbreitenanforderungen.

Beispiel:

Interface 1 alternate 0: kein Streaming
Interface 1 alternate 1: Endpoint mit niedriger Bandbreite
Interface 1 alternate 2: Endpoint mit mittlerer Bandbreite
Interface 1 alternate 3: Endpoint mit hoher Bandbreite

Der Host wählt eines per:

SET_INTERFACE interface=1 alternate=3

Wenn Alternate 3 mehr Bandbreite braucht, als der Bus liefern kann, kann Streaming scheitern.

UVC-Kameramodi

USB-Video-Class-Kameras bieten oft viele Modi:

  • MJPEG vs. unkomprimiertes YUY2
  • 720p vs. 1080p vs. 4K
  • 15 fps vs. 30 fps vs. 60 fps
  • Unterschiedliche Endpoint-Paketgrößen
  • Unterschiedliche Alternate Settings

Unkomprimiertes Video braucht deutlich mehr Bandbreite als MJPEG. Eine Kamera kann korrekt enumerieren, aber scheitern, wenn die App einen aggressiven Modus wählt.

USB-Audio-Sampleraten

Audio-Interfaces wechseln Alternate Settings für Samplerate, Kanalanzahl, Bittiefe und Paketgröße. Ein Modus, der auf einem Host-Controller läuft, kann hinter einem Hub oder Dock scheitern.

Symptome:

  • Klicks und Pops bei hoher Samplerate.
  • Stream fällt nur mit vielen Kanälen aus.
  • Gerät läuft nach Neuverbindung, fällt aber nach Moduswechsel aus.
  • Audio stoppt, wenn ein anderes USB-Gerät Traffic startet.

Der Bus-Trace sollte das gewählte Alternate Setting und den Status der Isochronous-Pakete zeigen.

Bandbreitenreservierung

Isochrone und Interrupt-Transfers reservieren periodische Bandbreite. Kann der Bus die Anforderung nicht erfüllen, lehnt der Host die Interface-Auswahl ab oder der Stream läuft schlecht.

Bandbreitendruck kommt von:

  • Mehreren Kameras an einem Hub.
  • USB-Audio plus Capture-Device.
  • Full-Speed-Gerät hinter einem Transaction Translator.
  • Dock-Topologie.
  • Scheduling-Limits des Host-Controllers.
  • Kabel, das Speed-Fallback verursacht.

Debug-Checkliste

Nutzen Sie diesen Workflow:

  1. Deskriptoren vom Anstecken erfassen.
  2. Alternate Settings für das Streaming-Interface auflisten.
  3. Den SET_INTERFACE-Request erfassen.
  4. Gewähltes Alternate Setting protokollieren.
  5. Funktionierende und scheiternde Qualitäts-Modi vergleichen.
  6. Max Packet Size und Interval des Endpoints prüfen.
  7. Verhandelte Device-Speed prüfen.
  8. Direkter Port vs. Hub/Dock testen.
  9. Auflösung, Framerate, Samplerate oder Kanalanzahl reduzieren.
  10. Setup- und Streaming-Pakete zusammen aufbewahren.

Enddiagnose

USB-Alternate-Setting-Ausfälle sind Probleme der Modusauswahl und der Bandbreite. Ein Gerät kann enumerieren und in einem Modus laufen, aber ausfallen, wenn der Host ein bandbreitenintensiveres Alternate Setting wählt.

Bus Scope legt das gewählte Interface-Modus- und Endpoint-Evidence offen, sodass hochwertige Streaming-Ausfälle als USB-Bandbreiten- und Deskriptor-Verhalten diagnostiziert werden können – nicht als generische App-Instabilität.