USB setup-packete

Hallo,

ich werd' irgendwie aus dieser USB-Spezifikation nicht so richtig schlau.

Durch welchen Vorgang wird denn jetzt anfänglich die Deviceadresse gesetzt, durch Senden eines SETUP-Packetes (bestehend aus SETUP-PID, Adresse, Endpointnummer und CRC5), oder durch Senden einer "Control-message", die den Befehl "SetAdress" beinhahltet?

Eigentlich steht ja überall, daß einfach ein SETUP-Packet gesendet würde.

Bei der Beschreibung des Packetformats ist aber nur ein Hinweis zu finden, daß solche SETUP-Packete für irgendwelche sich mir noch nicht so ganz erschliessenden synchronisationszwecke verwendet werden können.

Bei der Beschreibung der Control-messages hingegen findet sich zum SetAdress-Kommando eine Beschreibung zum initialen Setup-Vorgang, in der allerdings auch ein initiales SETUP-Packet erwähnt wird.

Lässt sich bestimmt herausfinden, indem man sich die USB Hub-Spezifikation reinzieht, aber das ist mir aktuell zu verwirrend viel Information.

Gruss

Jan Bruns

Reply to
Jan Bruns
Loading thread data ...

In article , "Jan Bruns" writes: |> ich werd' irgendwie aus dieser USB-Spezifikation nicht so richtig schlau. |>

|> Durch welchen Vorgang wird denn jetzt anfänglich die Deviceadresse gesetzt, |> durch Senden eines SETUP-Packetes (bestehend aus SETUP-PID, Adresse, |> Endpointnummer und CRC5), oder durch Senden einer "Control-message", |> die den Befehl "SetAdress" beinhahltet?

Control Transfers bestehen aus einem SETUP-Packet und haben in dem immer vorhandenen 8-Byte Datenteil den Set_Address-Request. In der 1.1er-Spec war das im Kapitel 9.3 beschrieben...

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

"Georg Acher":

Ah. Das war mir auch noch gar nicht aufgefallen, daß die Control-Messages mit 'nem SETUP anstelle eines OUT gestartet werden. Dann funktioniert vielleicht ja sogar beides, Addresse wahlweise aus SETUP-Packet, oder aus dem direkt folgenden Datenpacket.

Gruss

Jan Bruns

Reply to
Jan Bruns

In article , "Jan Bruns" writes: |> Ah. Das war mir auch noch gar nicht aufgefallen, daß die Control-Messages |> mit 'nem SETUP anstelle eines OUT gestartet werden. Dann funktioniert |> vielleicht ja sogar beides, Addresse wahlweise aus SETUP-Packet, oder aus dem |> direkt folgenden Datenpacket.

Nein, tut es nicht. Im Setup-Packet stehen die 8Bytes drin, in denen die Control-Request-Werte verpackt werden. Dass danach noch ein normales OUT-Paket mit Inhalt kommen kann, ist bei einigen Requesttypen (insb. die Vendor-spezifischen) möglich, aber nicht notwendig. SET_ADDRESS brauchts nicht.

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

Hallo!

  • "Jan Bruns" schrieb:

gesetzt,

das

So wie ich Dich verstehe, meinst Du mit "Adresse aus dem SETUP-Paket" das ADDR-Feld im SETUP-Paket. Da steht aber IIRC eine 0 drin, solange das Device noch keine Adresse hat, d.h. jedes USB-Device muss genau so lange auf Pakete "hören", die an Adresse 0 adressiert sind, bis es auf diese Weise vom Host eine eigene Adresse zugewiesen bekommen hat.

Diese Zuweisung geschieht in Form eins Control-Transfers, bei dem im Datenteil das bRequest-Feld "SET_ADDRESS" und das wValue-Feld die neue Adresse enthält.

Hoffe alle Klarheiten beseitigt zu haben. ;-)

Gruß, Till.

--
e-mail: wollenberg (at) web (punkt) de
Reply to
Till Wollenberg

Hallo

Ich finde für eine schnelle und auffrischende Übersicht über die USB Spec ist immer wieder beyondlogic ganz gut, z.B. hier bzgl SETUP Paketen:

formatting link

Gruss, Michael

Reply to
Michael Dreschmann

|> So wie ich Dich verstehe, meinst Du mit "Adresse aus dem SETUP-Paket" |> das ADDR-Feld im SETUP-Paket. Da steht aber IIRC eine 0 drin, solange |> das Device noch keine Adresse hat, d.h. jedes USB-Device muss genau so |> lange auf Pakete "hören", die an Adresse 0 adressiert sind, bis es auf |> diese Weise vom Host eine eigene Adresse zugewiesen bekommen hat.

Und bevor jetzt noch die Frage aufkommt, warum dann beim Anstecken eines Hubs mit Geräten dran nicht alle dieselbe Adresse bekommen: Die Hub-Ports werden der Reihe nach angeknipst. D.h. es gibt immer nur maximal ein Gerät am Bus mit der temporären Adresse 0.

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

Ja, genau, das meinte ich; dafür gibt es ja eigentlich das EOP-Signal, um eben das Ende eines Paketes anzuzeigen, und ein solches liegt doch sicherlich zwischen SETUP-Paket und seinem zugehörigen DATA0 Datenpaket.

Aha. Das habe ich mir dann anscheiend auch falsch vorgestellt (wie gesagt, den HUB-Spezifikationsteil habe ich mir noch nicht angesehen). Meine Vorstellung ging nämlich dahin, daß der Host den Hubs schon bei ihrer Aktivierung mitteilt, welche Addresse evtl. anzuschlessende Geräte erhalten werden.

Gruss

Jan Bruns

Reply to
Jan Bruns

Wo wir gerade bei Hubs sind: Bei näherer Betrachtung des "Hub des Grauens", vom dem ich kürzlich berichtet habe, ist mir aufgefallen, daß bei dem Vcc der einzelnen Ports _nicht_ geschaltet wird, obwohl der eingesetzte GL850A über Schaltausgänge für jeden Port verfügt. Ist das in Ordnung so?

Gruß Henning

Reply to
Henning Paul

Du meinst V-Bus der Downstream Ports? Wüsste nicht, warum die geschaltet werden können sollten. Der Suspend-Mode wird durch Inaktivität auf den Datenleitungen angezeigt und V-Bus muss weiterhin aktiv bleiben, damit das Gerät D+ oder D- per Pull-Up auf 3.3V legen kann. Der einzige Grund, warum man V-Bus abschalten können sollte, wäre wegen Übertstrom (ein für heutige Elektronik viel zu aufwändiges Verfahren...) oder wenn man den Port lahmlegen will.

Gruss, Michael

Reply to
Michael Dreschmann

Zu teuer. Geschaltete Ausgänge für die 5V sind bei Hubs sehr selten. Bräuchte man ja glatt 4 p-Mosfets für 0.5A und Logic-Level-Ansteuerung. Das sind ja schon 30 cent... Bei einem Ding, was den End-User 5EUR oder so kostet (und damit in der Herstellung wohl weniger als 2), ist das viel zuviel für einen Nutzen, den kein User jemals sehen wird...

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

"Georg Acher" schrieb im Newsbeitrag news:ep2n50$n91$ snipped-for-privacy@news.lrz-muenchen.de... ..

Bräuchte man

schon 30

der

kein

Hi, btw, Du scheinst ja Ahnung zu haben....möchte meinem Hub seinen Stromausgang "boosten", also den internen SMD-Transistor per Schalter oder Widerstand ein wenig überbrücken, um eine externe Platte anzutreiben. Welche Gefahr gehe ich ein? Dachte, "einfach" den 5Volt-Pegel des Hub intern per Schalter direkt auf den

5Volt-Ausgang der Buchse zu schalten. Sodaß ich die Platte starten kann und anschließend alles beim Alten bleibt. Die Buchse hat eine separate F1,1A-Sicherung und eben einen unleserlich kleinen SMD-transistor von ebendieser 5Volt-Schiene (Netzteil) her.
--
mfg,
gUnther
Reply to
gUnther nanonüm

=?iso-8859-1?Q?gUnther_nanon=FCm?= writes: ,

Nuja, USB seit 99 hinterlässt Spuren. Das Ergebnis ist aber neben den URBs im Linuxkernel hauptsächlich die Erkenntnis, dass USB ein ziemlicher Krampf ist. Und zwar weniger im Design an sich, sondern durch die typischen Implementierungen in Hostcontroller bzw. Device. Wer zuverlässige Datenübertragung jenseits des Popel-Consumermarktes und über Stunden hinweg will, sollte die Finger davon lassen. Als Consultant und per Eigenerfahrung habe ich da schon genügend Projekte erlebt, die zumindest beinahe Schiffbruch erlitten hätten und nur mit sehr viel Aufwand halbwegs zuverlässig laufen.

Nur so ein Beispiel: Die gerne benutzten isp1181 USB-Devices von Philips/NXP haben ab einer Hubtiefe von 3-4 ziemliche Fehler. Die führen zB. dazu dass sie die Datenrichtung nicht mehr erkennen und munter in an sie adresierte Pakete reinreden (->Kollision). Da hilft dann der gesamte Retry-Mechanismus von USB nichts mehr, weil das dann nämlich jedes Mal schiefgeht... Und Philips hält das nicht für einen Fehler. Passiert ja nur selten und wer hat schon soviele Hubs hintereinander...

USB? Nö.

Ohne Kurzschlussschutz eine verdampfte 5V-Leitung... Sonst eigentlich keine.

Solange eine Sicherung drin ist, ist alles gut. In manchen Ports ist aber nicht einmal das drin. Da glüht dann eine EMV-Drossel im 0805-Format vor sich hin.

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

"Georg Acher" schrieb im Newsbeitrag news:ep4pf4$tne$ snipped-for-privacy@news.lrz-muenchen.de... ..

nicht

hin.

Hi, ich gedachte das netzteil zu schonen, und einen geeigneten Widerstand von etwa 1Ohm einzubauen. Damit sollte der "zusätzliche Strom" fließen, aber nicht gleich das Steckernetzteil abrauchen. Eine Feinsicherung ist selbstredend auch vorgesehen, falls ich den Platz dazu finde.

--
mfg,
gUnther
Reply to
gUnther nanonüm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.