USB power problem Hub

OP #3394872
Lesenswert?

Hallo,

Ich habe ein embedded Device dass, wenn per USB Kabel an ein PC 
angschlossen wird, sich als USB mass storage device ausgibt.

Das Problem ist, dass wenn ich das Gerät über einen Hub an den PC 
anschliesse, manchmal die Datenübertragung fehl schlägt und das 
Dateisystem in meinem Gerät beschädigt wird.

Ich schätze, dass das an der zu geringen Stromstärke liegt, die dazu 
führt. Meine Frage ist nun, ob der Host oder das Device die zu niedrige 
Stromstärke erkennen sollte. Und wie der Host davon erfährt.

Ich habe leider keine Ahnung von den USB Protokoll Internas und weiss 
nicht wie Host und Device das untereinander aushandeln.

Tschüss,
Matthias
Persönliche Seite #3394938
Lesenswert?

Matthias Brugger schrieb:
> Meine Frage ist nun, ob der Host oder das Device die zu niedrige
> Stromstärke erkennen sollte. Und wie der Host davon erfährt.

Dem Host wird der Strombedarf vom Device mitgeteilt.

USB-Festplatten ohne eigene Stromversorgung aber halten sich nicht daran 
und nehmen erheblich höhere Ströme auf als überhaupt von der 
USB-Spezifikation vorgesehen.

Nimm einen Hub mit eigenem Netzteil, sofern Du das nicht sowieso schon 
tust.
#3395054
Lesenswert?

Rufus Τ. Firefly schrieb:
> Matthias Brugger schrieb:
>> Meine Frage ist nun, ob der Host oder das Device die zu niedrige
>> Stromstärke erkennen sollte. Und wie der Host davon erfährt.
>
> Dem Host wird der Strombedarf vom Device mitgeteilt.

Und weiter: Wenn der Host dann der Meinung ist, dass nicht genug Strom 
für das Device vorhanden ist, dann erteilt er dem Device garnicht erst 
die Erlaubnis überhaupt (nennenswert) Strom zu ziehen.

Auch vorgesehen wäre: Das Device bietet Verschiedene "Configurations" 
mit unterschiedlichem Strombedarf an, der Host wählt das aus, was noch 
funktionieren würde.
OP #3398571
Lesenswert?

Vielen Dank für die Antworten.

Schlussendlich habe ich herausgefunden dass die Firmware dem Host 
garnicht mitgeteilt hat, wie viel Strom sie braucht. Deswegen hat der 
Host schön brav eine Kommunikation aufgebaut, obwohl nicht genug Strom 
vorhanden war.

Ich habe die Firmware geändert und jetzt scheint es wie gewünscht zu 
funktionieren.

MfG,
Matthias
Gast #3398909
Lesenswert?

>Schlussendlich habe ich herausgefunden dass die Firmware dem Host
>garnicht mitgeteilt hat, wie viel Strom sie braucht.
das halte ich jetzt für unwahrscheinlich, da der Strombedarf im 
Devicedeskriptor steht.

Thomas
OP #3399762
Lesenswert?

Thomas schrieb:
> das halte ich jetzt für unwahrscheinlich, da der Strombedarf im
> Devicedeskriptor steht.

Vielleicht hatte ich mich nicht richtig ausgedrückt. In dem Treiber, der 
die SCSI Befehle interpretiert und somit das Device emuliert gab es 
keinen Aufruf der vbus_draw Methode des OTG Gerätetreibers. Das wurde 
von darunterliegenden Schichten übernommen die anscheinend als 
Strombedarf 100 mA in den Devicedescriptor geschrieben haben. Zum 
besseren Verständnis, es handelt sich um einen USB-Gadget Gerätetreiber 
des Freescale Forks vom Linux Kernel.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren