USB-Interrupt-Endpoint-bInterval-Debugging
So debuggen Sie USB-Interrupt-Endpoint-bInterval, Polling-Rate, HID-Latency, verpasste Input-Reports, Full-Speed- vs. High-Speed-Intervall-Regeln und Endpoint-Deskriptor-Fehler.
USB-Interrupt-Endpoints werden von Tastaturen, Mäusen, Game-Controllern, Sensoren, Touch-Panels, Barcode-Scannern, USV-Geräten und vielen Custom-HID-Tools genutzt. Nutzer suchen nach "USB bInterval", "HID polling rate", "USB interrupt endpoint latency", "missed input reports", "USB device 125Hz 250Hz 1000Hz" und "bInterval full speed high speed", wenn Input sich verzögert anfühlt oder Reports in der falschen Rate ankommen.
Bus Scope hilft, weil Polling-Verhalten durch Endpoint-Deskriptoren und tatsächliches Bus-Timing definiert wird. Das OS-UI zeigt oft nur "device connected"; der Capture kann zeigen, welches Intervall der Host tatsächlich nutzt.
Was bInterval bedeutet
Ein Interrupt-Endpoint-Deskriptor enthält bInterval. Dieser Wert beschreibt das Polling-Intervall, aber die Interpretation hängt von Speed und Endpoint-Typ ab.
Wichtige Unterscheidungen:
- Low-Speed- und Full-Speed-Interrupt-Endpoints nutzen Millisekunden-Frame-basierte Intervalle.
- High-Speed-Interrupt-Endpoints nutzen eine andere Kodierung basierend auf Microframes.
- Host-Controller-Scheduling und Hub-Topologie können das beobachtete Timing beeinflussen.
- App-Read-Timing ist nicht dasselbe wie USB-Bus-Polling.
Schaut ein Engineer nur auf App-Callbacks, verpasst er möglicherweise den tatsächlichen Endpoint-Schedule.
Häufige Symptome
Polling-Intervall-Probleme zeigen sich als:
- Maus oder Controller fühlen sich laggy an.
- HID-Input-Reports kommen alle 8 ms statt 1 ms.
- Gerät wirbt mit 1000 Hz, verhält sich aber wie 125 Hz.
- Sensor-Daten sind bursty.
- Barcode-Scanner verwirft schnelle Scans.
- Touch-Panel fühlt sich nach Resume verzögert an.
- Firmware sendet Reports schneller als der Host pollt.
- High-Speed-Mode ändert Report-Timing unerwartet.
Diese Issues wirken oft wie Latency- oder Responsiveness-Probleme, aber die Root-Evidence liegt im USB-Deskriptor und Paket-Timing.
Full-Speed- vs. High-Speed-Interpretation
Derselbe numerische bInterval kann je nach Speed unterschiedliches effektives Timing bedeuten. Ein Full-Speed-HID-Endpoint mit bInterval=8 ist nicht dasselbe Scheduling-Modell wie ein High-Speed-Endpoint mit demselben Byte-Wert.
Debugging sollte capturen:
- Tatsächliche verhandelte Speed.
- Endpoint-Deskriptor.
- Endpoint-Adresse.
- Transfer-Typ.
bInterval.- Beobachtete IN-Token- oder Transfer-Cadence.
- Report-Payload-Timing.
Bus Scope sollte Deskriptor-Werte und beobachtetes Timing zusammen zeigen.
Firmware-Überproduktion
Manche Firmware erzeugt Input-Reports schneller, als der Host pollt. Diese Reports können überschrieben, koalesziert oder verworfen werden, bevor der Host sie je sieht.
Symptome:
- Device-interne Logs zeigen Events.
- Host erhält weniger Reports.
- Schnelle Tastendrücke werden verpasst.
- Bewegung wirkt smoothed oder verzögert.
- Reports nach einem Burst enthalten nur den letzten State.
Das ist kein USB-Paketverlust-Problem. Es ist ein Firmware-Buffering- und Polling-Contract-Problem.
Host-Polling ist nicht App-Read-Rate
Eine App mag jede 1 ms lesen, aber der USB-Host pollt vielleicht nur alle 8 ms. Oder der Host pollt pünktlich, aber der App-Event-Loop verarbeitet Daten später.
Paket-Capture trennt:
- Bus-Polling-Intervall.
- Device-Response-Timing.
- Host-Treiber-Buffering.
- App-Callback-Latency.
Diese Trennung ist kritisch für HID-Latency-Support-Cases.
bInterval-Deskriptor-Fehler
Häufige Deskriptor-Bugs:
- Versehentliches Werben mit
bInterval=10statt1. - Falsches Kopieren des Full-Speed-Intervalls in High-Speed-Deskriptor.
- Verwendung eines Intervalls in HID-Deskriptor-Erwartungen und eines anderen im Endpoint-Deskriptor.
- Firmware-Kommentare behaupten 1000 Hz, aber Deskriptor sagt langsamer.
- Alternate-Setting ändert Intervall, aber Firmware behandelt es nicht.
Das Byte im Deskriptor ist der Contract, gegen den der Host schedult.
Debug-Checkliste
Nutzen Sie diesen Workflow:
- Enumeration capturen.
- Interrupt-Endpoint-Deskriptoren identifizieren.
- Tatsächliche Device-Speed aufzeichnen.
bIntervaldekodieren.- Beobachtete Interrupt-IN-Cadence messen.
- Mit erwarteter Polling-Rate vergleichen.
- Schnelle Input-Events triggern.
- Prüfen, ob Reports verpasst oder koalesziert werden.
- Direkter Port vs. Hub vergleichen.
- Deskriptor- und Timing-Evidence zusammen bewahren.
Enddiagnose
USB-Interrupt-Latency ist nicht nur ein App-Performance-Problem. Sie hängt von Endpoint-bInterval, Speed-Mode, Host-Scheduling, Report-Erzeugung und Firmware-Buffering ab.
Bus Scope belegt, ob ein HID- oder Interrupt-Gerät wirklich mit der gedachten Rate gepollt wird und ob verpasster Input durch Deskriptor-Settings, Firmware-Buffering oder Host/App-Timing verursacht wird.
<!-- bus-scope-localized-transaction-foundation-v1:start -->USB-Vertragsprüfung für „USB-Interrupt-Endpoint-bInterval-Debugging“
Die direkte Antwort lautet: STALL, Timeout oder Reset erklärt die Ursache nicht allein. Beweisen Sie zuerst, dass der Capture-Provider das richtige Gerät sieht, und lesen Sie danach den Transfervertrag: Request-Typ, Richtung, Recipient, wValue, wIndex, angekündigte und tatsächliche Länge, Status sowie Zustand davor und danach. Verknüpfen Sie bei „USB-Interrupt-Endpoint-bInterval-Debugging“ jede Aussage mit der ersten Transaktion, die von einem bekannten guten Lauf abweicht.
| Grenze | Zu vergleichen | Belastbares Urteil |
|---|---|---|
| Plattform | Provider, Rechte, Root Hub beziehungsweise usbmon/XHC20 | Kommen Records von der richtigen Verbindung? |
| Setup | bmRequestType, bRequest, wValue, wIndex, wLength | Sendet der Host die beabsichtigte Anfrage? |
| Data | Richtung, Länge und gespeicherte Bytes | Entspricht die Payload dem Vertrag? |
| Status | ACK, STALL, Timeout oder Cancellation | Wo endet die Transaktion tatsächlich? |
| Zustand | Configuration, Interface, Alternate Setting, Endpoint Halt | War das Gerät für die Anfrage bereit? |
Starten Sie vor Reset und Enumeration und behalten Sie Descriptoren, SET_CONFIGURATION, SET_INTERFACE und den Befehl vor dem Fehler. Ein enger Endpoint-Filter kann genau den Control Transfer verstecken, der das spätere Symptom erklärt. Führen Sie pro Versuch eine dokumentierte USB-Aktion aus und ändern Sie nur Firmware, Treiber, Port, Kabel, Hostbefehl oder Timing.
Wie sieht eine zitierfähige Antwort aus?
Nennen Sie angekommenen Request, konkrete Setup-Felder, Geräteantwort und vorherigen Zustand; danach folgt ein Test mit genau einer Änderung. Nicht gespeicherte Bytes durch Retention sind kein bewiesener Packet Loss. Zeitliche Nähe zwischen Command und Reset belegt Korrelation, nicht ohne Wiederholung oder Zustandsübergang die Ursache.
Wann ist ein Vergleich gültig?
Halten Sie VID/PID, Firmware, Speed, Topologie, Provider, Filter und Trigger möglichst gleich. Vergleichen Sie semantische USB-Phasen statt Frame-Nummern zwischen usbmon und USBPcap. Notieren Sie Start, Ende, Version, OS, Anschluss und Dateiprüfsumme. Nutzen Sie vor der Übergabe die Bus-Scope-Fehlersuche.
Semrush-Eigentümer bleiben getrennt: free USB analyzer gehört zur Produktseite, best USB protocol analyzer zur Vergleichsseite und USB descriptor viewer zum Descriptor-Guide. Diese Supportseite erhält keine erfundene Suchmenge oder KD.
<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Direkte Antwort und Abnahmegrenze
Die kurze Antwort zu „USB-Interrupt-Endpoint-bInterval-Debugging“ lautet: So debuggen Sie USB-Interrupt-Endpoint-bInterval, Polling-Rate, HID-Latency, verpasste Input-Reports, Full-Speed- vs. High-Speed-Intervall-Regeln und Endpoint-Deskriptor-Fehler. Behandeln Sie diese Aussage als zu prüfendes Ergebnis und nicht als Versprechen für jede Eingabe, jedes Gerät, jedes Projekt oder jede Umgebung. Ein vollständiges Ergebnis dokumentiert Ausgangszustand, exakte Aktion, sichtbare Ausgabe und die Bedingung, die den Abschluss in Bus Scope belegt.
Evidenzorientiertes Vorgehen
Beginnen Sie mit einem kleinen, wiederholbaren Fall, bevor Sie ein vollständiges Projekt verändern. Protokollieren Sie Anwendungsversion, Betriebssystem, Eingabe- oder Geräteidentität, relevante Einstellungen und erwartetes Ergebnis. Führen Sie eine bewusste Aktion aus, bewahren Sie den ersten unerwarteten Übergang und vergleichen Sie möglichst mit einem bekannten guten Lauf. Mehrere gleichzeitige Änderungen verdecken, welche Bedingung den Fehler erzeugt oder behoben hat.
Prüfpunkt 1: USB-Interrupt-Endpoint-bInterval-Debugging
Formulieren Sie für „USB-Interrupt-Endpoint-bInterval-Debugging“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 2: So debuggen Sie USB-Interrupt-Endpoint-bInterval, Polling-Rate, HID-Latency, verpasste Inp
Behandeln Sie „So debuggen Sie USB-Interrupt-Endpoint-bInterval, Polling-Rate, HID-Latency, verpasste Input-Reports, Full-Speed- vs. High-Speed-Intervall-Regeln und “ als eigene Abnahmegrenze für „USB-Interrupt-Endpoint-bInterval-Debugging“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 3: Was bInterval bedeutet
Formulieren Sie für „Was bInterval bedeutet“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 4: Häufige Symptome
Behandeln Sie „Häufige Symptome“ als eigene Abnahmegrenze für „USB-Interrupt-Endpoint-bInterval-Debugging“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 5: Full-Speed- vs. High-Speed-Interpretation
Formulieren Sie für „Full-Speed- vs. High-Speed-Interpretation“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 6: Firmware-Überproduktion
Behandeln Sie „Firmware-Überproduktion“ als eigene Abnahmegrenze für „USB-Interrupt-Endpoint-bInterval-Debugging“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 7: Host-Polling ist nicht App-Read-Rate
Formulieren Sie für „Host-Polling ist nicht App-Read-Rate“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 8: bInterval-Deskriptor-Fehler
Behandeln Sie „bInterval-Deskriptor-Fehler“ als eigene Abnahmegrenze für „USB-Interrupt-Endpoint-bInterval-Debugging“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Prüfpunkt 9: Debug-Checkliste
Formulieren Sie für „Debug-Checkliste“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.
Prüfpunkt 10: Enddiagnose
Behandeln Sie „Enddiagnose“ als eigene Abnahmegrenze für „USB-Interrupt-Endpoint-bInterval-Debugging“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.
Abnahmematrix
| Prüfpunkt | Aufzubewahrender Nachweis | Passkriterium |
|---|---|---|
| USB-Interrupt-Endpoint-bInterval-Debugging | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| So debuggen Sie USB-Interrupt-Endpoint-bInterval, Polling-Rate, HID-Latency, verpasste Input-Reports, Full-Speed- vs. Hi | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Was bInterval bedeutet | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Häufige Symptome | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Full-Speed- vs. High-Speed-Interpretation | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
| Firmware-Überproduktion | Ausgangszustand, eine Aktion und Ergebniszustand | Eine zweite Person kann das Ergebnis reproduzieren |
Fehlerisolierung, Recovery und Übergabe
Stoppen Sie beim ersten fehlerhaften Übergang. Bewahren Sie Quelle, Projekt, Session oder Capture und erstellen Sie vor destruktiven Änderungen eine Kopie. Ändern Sie pro Experiment nur eine Variable. Ein kompletter erneuter Lauf nach mehreren Änderungen kann anders enden, ohne die Ursache zu erklären.
Unterscheiden Sie fehlende Evidenz von Evidenz für ein Fehlen. Eine leere Ansicht kann auf falsche Eingabe, Scope, Filter, Berechtigung, Gerät, Zeitbereich oder Projektzustand hinweisen. Beweisen Sie Aufnahme oder Import, bevor Sie Decoder, Editor, Bericht oder Export interpretieren.
Öffnen Sie vor der Übergabe das dauerhafte Artefakt erneut und prüfen Sie Anfang, Entscheidungsstelle und Ende. Dokumentieren Sie Version, Plattform, Konfiguration, Erwartung, Beobachtung und kleinste Reproduktion. Entfernen oder schwärzen Sie sensible Daten und prüfen Sie die Berechtigung des Empfängers.
Fragen und Antworten
Wie beginnt man am schnellsten zuverlässig?
Verwenden Sie den kleinsten repräsentativen Fall, notieren Sie das erwartete Ergebnis und ändern Sie nur eine Variable. Beweisen Sie den Grundpfad, bevor Filter, Effekte, Bearbeitungen, Automatisierung oder größere Quellen hinzukommen.
Welche Evidenz sollte gespeichert werden?
Bewahren Sie Eingabeidentität, Version, Plattform, Einstellungen, exakte Aktion, ersten unerwarteten Übergang und Endausgabe. Projekt, Session, Bericht oder Export müssen geschlossen und erneut geöffnet werden.
Wann sollte das Verfahren wiederholt werden?
Wiederholen Sie es nach relevanten Änderungen an Anwendung, Betriebssystem, Treiber, Firmware, Modell, Quelle oder Workflow. Behalten Sie den früher akzeptierten Fall als unveränderte Vergleichsbasis.
Wann ist die Aufgabe übergabefähig?
Wenn eine autorisierte zweite Person Eingabe und Aktion erkennt, dasselbe Ergebnis reproduziert, verbleibende Grenzen versteht und das gespeicherte Artefakt ohne undokumentierten lokalen Zustand öffnen kann.
Verwandte Anleitungen
Diese gleichsprachigen Seiten decken angrenzende Schritte ab, ohne den kanonischen Eigentümer dieses Themas zu verändern:
- USB-Endpoint-Halt-Recovery: CLEARFEATURE, STALL-Loops, Bulk-Fehler und Treiber-Reset-Verhalten
- USB-Endpoint-Max-Packet-Size-Mismatch: "wMaxPacketSize, Short-Pakete, Bulk-Transfers und Firmware-Buffer-Bugs debuggen – Vergleich und Prax
- USB-Endpoint-STALL und Bulk-Transfer-Timeout: Den Capture lesen, bevor Sie die Firmware ändern