Forum: PC Hard- und Software Windows verschluckt USB Transfers


von Sebastian V. (sebi_s)


Lesenswert?

Ich bin jetzt schon seit Wochen einem äußerst hartnäckigem Bug auf der 
Spur. Ich habe auf einem STM32F4 ein USB MTP Device programmiert und 
eigentlich läuft alles, bis auf das Abbrechen eines Kopiervorgangs vom 
PC zum Device. Dabei scheint der nächste Transfer nach dem Abbruch auf 
dem Bulk Endpoint irgendwo verschluckt zu werden.

Ich habe jetzt schon mit meinem China Logic Analzer die USB 
Datenleitungen (Full-Speed) zum Device angezapft und mit Sigrok die USB 
Transfers decodieren lassen. Das funktioniert einigermaßen gut obwohl 
der Logic Analyzer nur mit 24 MHz Samples aufnimmt, manchmal werden 
einige Pakete aber fehlerhaft decodiert. Dabei stellte ich fest, dass 
die tatsächlich gesendeten Daten nicht mit denen eines Software Sniffers 
(USBPcap/USBlyzer) übereinstimmen. Der nächste Request direkt nach dem 
Abbruch des Transfers taucht noch im Software Sniffer auf, wird aber nie 
tatsächlich ans Device gesendet. Das ich den Transfer übersehen habe ist 
so gut wie ausgeschlossen, da ~20 Bytes übertragen werden und ich das 
irgendwo zwischen den kurzen SOF Paketen hätte finden müssen.

Der Fehler tritt allerdings nicht immer auf sondern nur an den USB 2.0 
Ports meines PCs (sowohl unter Win 7 als auch Win 10). Gleicher Fehler 
auch an allen USB Ports meines Laptops (hat noch kein USB 3.0). Der 
Fehler tritt allerdings nicht auf an den USB 3.0 Ports oder unter Linux. 
Auch wenn es ziemlich unwahrscheinlich ist vermute ich den Fehler daher 
Momentan auf der PC Seite. Allerdings habe ich keine Ahnung wie ich den 
Fehler weiter debuggen soll. Hat man als Hobbyentwickler überhaupt noch 
Möglichkeiten den MTP/USB Treiber weiter zu debuggen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.