USB-Problem unter Debian nach schnellem Aus- und Wiedereinschalten

584
Michael Liesenberg

Ich betreibe Debian 8 auf iMx6 und alles funktioniert gut, bis ich das Gerät schnell ein- und ausschalte. (Quick Power Cycle) Ich bekomme dies auf dmesg:

usb 1-1.6: device no response, device descriptor read/64, error -32 

Wenn ich mit SSH logge und einen Neustartbefehl mache, erhalte ich den gleichen Fehler wie beim vorherigen Booten. Wenn ich ihn aber ausschalte und mindestens 5 Sekunden warte, wird der USB problemlos gestartet.

Weiß jemand was Fehler -32 bedeutet?

Hier die Ausgabe von dmesg:

root@vasoport:~# dmesg | grep usb [ 0.234446] usbcore: registered new interface driver usbfs [ 0.234522] usbcore: registered new interface driver hub [ 0.234614] usbcore: registered new device driver usb [ 0.234783] 2000000.aips-bus:usbphy_nop1 supply vcc not found, using dummy regulator [ 0.234907] 2000000.aips-bus:usbphy_nop2 supply vcc not found, using dummy regulator [ 1.319001] usbcore: registered new interface driver rtl8192cu [ 1.323787] usbcore: registered new interface driver cdc_ether [ 1.328389] usbcore: registered new interface driver MOSCHIP usb-ethernet driver [ 1.345027] usbcore: registered new interface driver cdc_acm [ 1.356196] usbcore: registered new interface driver usb-storage [ 1.361036] usbcore: registered new interface driver usbserial [ 1.365648] usbcore: registered new interface driver usbserial_generic [ 1.370922] usbserial: USB Serial support registered for generic [ 1.375698] usbcore: registered new interface driver cp210x [ 1.380013] usbserial: USB Serial support registered for cp210x [ 1.384702] usbcore: registered new interface driver ftdi_sio [ 1.389202] usbserial: USB Serial support registered for FTDI USB Serial Device [ 1.395287] usbcore: registered new interface driver option [ 1.399600] usbserial: USB Serial support registered for GSM modem (1-port) [ 1.406359] 2184800.usbmisc supply vbus-wakeup not found, using dummy regulator [ 1.460961] usb0: HOST MAC 42:3f:32:d8:7c:c0 [ 1.464020] usb0: MAC ea:65:54:9f:3e:fe [ 1.592253] usbcore: registered new interface driver uvcvideo [ 1.621151] usbcore: registered new interface driver bcm203x [ 1.625616] usbcore: registered new interface driver btusb [ 1.629884] usbcore: registered new interface driver ath3k [ 1.773230] usb 1-1: new high-speed USB device number 2 using ci_hdrc [ 2.213248] usb 1-1.1: new low-speed USB device number 3 using ci_hdrc [ 2.313217] usb 1-1.1: device no response, device descriptor read/64, error -32 [ 2.503239] usb 1-1.1: device no response, device descriptor read/64, error -32 [ 2.703225] usb 1-1.1: new low-speed USB device number 4 using ci_hdrc [ 2.793222] usb 1-1.1: device no response, device descriptor read/64, error -32 [ 2.993222] usb 1-1.1: device no response, device descriptor read/64, error -32 [ 3.183224] usb 1-1.1: new low-speed USB device number 5 using ci_hdrc [ 3.190138] usbcore: registered new interface driver usbhid [ 3.194438] usbhid: USB HID core driver [ 3.197772] usbcore: registered new interface driver snd-usb-audio [ 3.371438] usb_otg_vbus: disabling [ 3.603314] usb 1-1.1: device not accepting address 5, error -32 [ 3.703272] usb 1-1.1: new low-speed USB device number 6 using ci_hdrc [ 4.123304] usb 1-1.1: device not accepting address 6, error -32 [ 4.136116] usb 1-1-port1: unable to enumerate USB device [ 4.373263] usb 1-1.6: new low-speed USB device number 7 using ci_hdrc [ 4.453252] usb 1-1.6: device no response, device descriptor read/64, error -32 [ 4.643963] usb 1-1.6: device no response, device descriptor read/64, error -32 [ 4.833317] usb 1-1.6: new low-speed USB device number 8 using ci_hdrc [ 4.943258] usb 1-1.6: device no response, device descriptor read/64, error -32 [ 5.133246] usb 1-1.6: device no response, device descriptor read/64, error -32 [ 5.323272] usb 1-1.6: new low-speed USB device number 9 using ci_hdrc [ 5.743293] usb 1-1.6: device not accepting address 9, error -32 [ 5.843271] usb 1-1.6: new low-speed USB device number 10 using ci_hdrc [ 6.263291] usb 1-1.6: device not accepting address 10, error -32 

Es scheint etwas mit der Spannung zu sein, die ich denke, aber gibt es eine Möglichkeit, dies auf der Softwareseite zu beheben?

Edit: Hier sind die Spannungen 5V und 3V3 sowie der Pin iMx6 Reset Out, der immer mehr anzeigt, dass die 3V3-Spannung in Ordnung ist.

Normaler Start Normal Start

Schneller Start Fast Start

0

2 Antworten auf die Frage

2
dirkt

Sie finden die Fehlercodes in errno.h, wozu errno-base.h gehört . Zurückgegebene Fehlercodes sind per Konvention negativ, daher ist -32 "Pipe gebrochen", was höchstwahrscheinlich nur eine Folge eines USB-Lese- oder Schreibfehlers ist.

2184800.usbmisc supply vbus-wakeup not found, using dummy regulator 

Sieht verdächtig aus, besonders wenn es nicht erscheint, wenn Sie warten, bevor Sie es wieder einschalten.

Die erste Vermutung ist, dass ein zu schneller Wechsel des Stroms die internen Kapazitäten in einigen USB-Chips nicht vollständig entlädt. Wenn Sie ihn wieder einschalten, befindet er sich in einem schlechten Zustand, und der Geräteinitialisierungscode behandelt diesen Zustand entweder nicht. oder kann nicht damit umgehen, weil dieser Zustand niemals geschehen sollte.

Es ist möglicherweise möglich, das Problem in der Software zu beheben, indem Sie das Datenblatt mit einem feinen Kamm durchgehen und paranoid alles auf einen ordnungsgemäßen Zustand initialisieren, wobei Zeitüberschreitungen erforderlich sind. Das macht aber keinen Spaß, es dauert lange und Sie benötigen die Fähigkeiten, um Treibercode zu schreiben. Und dann könnte der schlechte Zustand so verrückt sein, dass dies nicht funktioniert.

Daher ist die einfachste Problemumgehung "Nicht zu schnell einschalten".

Ich frage mich, ob ein USB-Hub alle angeschlossenen Geräte vollständig ausschalten und sie später wieder einschalten kann. Oder ist das nicht eine Fähigkeit, die USB-Geräte haben? Xen2050 vor 5 Jahren 0
Ja, USB-Hubs können [Ports selektiv ausschalten] (https://www.kernel.org/doc/html/v4.16/driver-api/usb/power-management.html#usb-port-power-control) . Wenn sie sich wieder einschalten, müssen die Geräte neu aufgelistet werden. Das hilft jedoch nicht, wenn der (Root-) Hub selbst in einem schlechten Zustand ist. dirkt vor 5 Jahren 1
Diese Nachricht 2184800.usbmisc Versorgung vbus-Wakeup nicht gefunden, mit Dummy-Regler kommt immer, auch wenn ich warte. Ich habe sogar den Hub hart zurückgesetzt, während alles eingeschaltet ist, aber das hat auch nicht geholfen. Ich werde die Spannungen mit einem Oszilloskop messen und überprüfen, was los ist. Michael Liesenberg vor 5 Jahren 0
Sie werden wahrscheinlich nichts mit einem Oszilloskop sehen, es hängt möglicherweise mit dem Protokoll für die USB-Stromversorgung zusammen, das ziemlich komplex ist und Widerstände mit unterschiedlichen Werten verwendet, die möglicherweise zu verschiedenen Zeiten eingeschaltet sind. Wenn es immer angezeigt wird, hängt es wahrscheinlich nicht mit dem Problem zusammen. Eine Sache, die Sie * können * können, ist, durch `dmesg` ohne` grep` zu gehen und zu sehen, ob die Zeilen, die Sie unterdrücken, zusätzliche Hinweise geben. dirkt vor 5 Jahren 0
Hier also die Unterschiede zum vollständigen dmesg: [2.213301] USB 1-1.1: neues Full-Speed-USB-Gerät Nummer 3 mit ci_hdrc und [2.223248] USB 1-1.1: neues Low-Speed-USB-Gerät Nummer 3 mit ci_hdrc [2.323218] USB 1-1.1: Keine Geräteantwort, Gerätedeskriptor lesen / 64, Fehler -32 Michael Liesenberg vor 5 Jahren 0
0
Michael Liesenberg

Eine Lösung wäre also eine aktive Kondensatorentladungsschaltung, die MOSFETs in 5V- und 3V3-Netzteilen verwendet. Wie diese Schaltung: https://electronics.stackexchange.com/questions/201343/discharge-power-rail-with-mosfet

Mosfet-Schaltkreisentladungskondensator: Mosfet circuit discharge capacitor