CRE086 USB

Der Universal Serial Bus im Detail

Episode image forCRE086 USB

USB ist heute omnipräsent und in nahezu jedem elektronischen Gerät vertreten. Im Gespräch mit Tim Pritlove erläutert Daniel Mack die Funktionsprinzipien von USB im Detail. Der Podcast behandelt, wie die Enumeration der Geräte am Bus abläuft, wie sich ein Gerät am Bus anmeldet und welche Informationen es von sich preisgeben muss, Geräte- und Geschwindkeitsklassen, Stecker und Verkabelung, die verschiedene Übertragungsmodi, Stromversorgung via USB, USB on the Go, Funktion eines USB-Hubs, Probleme beim Mixbetrieb von schnellen und langsamen Geräten, die USB-Implementierungen auf verschiedenen Betriebssystemen und die speziellen Probleme unter Windows und Empfehlungen beim Entwickeln von eigener USB-Hardware.

avatar
Tim Pritlove
avatar
Daniel Mack
Shownotes

Links:

65 Gedanken zu „CRE086 USB

  1. Pingback: kopfueber

  2. achja die rede ist von Southpark – Over Logging
    Episode Number: 173 Season Num: 12 First Aired: Wednesday April 16, 2008
    http://www.southparkstuff.com/season_12/episode_1206/epi1206script/

    And so what have we learned through this ordeal? The Internet went away. It came back. But for how long we do not know. We cannot take the Internet for granted any longer. We as a country must stop over-looning -on. We must use the Internet only when we need it. It’s easy for us to think we can just use up all the Internet we want. But if we don’t treat the Internet with the resPECT [pounds the podium hard with his right fist. A few people are startled by this] that it deserves, it cuold one day be gone forever. So let us learn to live with the Internet, not for it. No more browsing for no apparent reason, no more mindlessly surfing on our laptops while watching television. And finally, [the head of a bald eagle appears on the screen behind him.] We must learn to only use the Internet for porn twice a day. Max. [everyone applauds him, then gives him a standing ovation. He has his left arm up and fist pumped.]

  3. Pingback: Der Datenmischer » Blog Archive » Keine Zeit mehr…

  4. Pingback: blog-apoc

  5. @3d connexion device (space navigator):
    Das wird auch von blender unterstützt (svn). Da gibts auch ein paar demovideos dazu. Wenn man weiß wie man in blender mit der Maus navigier + editiert (was ja schon recht optimiert ist) denkt man sich, wie ist das möglich? So viele Navigations- bzw. Editierungsschritte auf einmal! Echt cool.
    http://www.blender.org/
    Irgendwo da gabs mal ein video dazu: http://www.blendernation.com/

  6. Pingback: zahlenzerkleinerer » Blog Archive » CRE086 USB

  7. Ganz interessant das Thema, wieder was gelernt.

    Die große Version des Space Navigator benutze ich beruflich
    für CAD, habe aber privat noch keine Verwendung dafür.
    Wenn das mal die Unterstützung der Spielehersteller bekäme …

  8. Hi Tim,

    super Podcast!
    War sehr informativ und auch schön erklärt vom Daniel.
    Was ich mir noch gewünscht hätte wären paar Informationen über Wireless USB (WUSB).
    Ich freue mich schon auf Podcasts über andere Schnittstellen :)

  9. Wie kommt man nur auf die Idee über so ein Thema eine ganze Sendung zu machen? Einfach genial. Ich bin total begeistert. Astrein. Tim, Du hast ein gutes Händchen. Ich bin erstaunt was Du für einen Output hast in letzter Zeit.

  10. Hallo Daniel,

    das stimmt – Wireless USB fehlt. Das hat vorallem damit zu tun, dass ich damit noch nie selbst gearbeitet habe. Ich hätte dir aus der Wikipedia vorlesen können, aber das kann ja jeder ;)

    Vielleicht gibt’s ja mal irgendwann einen Appendix-Podacst, mal sehen :)

    Gruss,
    Daniel

  11. @Ferdi: tja, die Zukunft von USB – was soll ich dazu schon sagen? Der Standard, der auf uns zukommt, ist USB3.0, und der ist, wie glaube ich erwähnt, noch nicht final. Da weiss ich auch nicht mehr als die IT-Gossip-Sites, die man sich so ergooglen kann ;) Erste Geräte wird es nicht vor Ende 2009 geben und bis eine kritische Masse von Heimcomputern damit ausgestattet ist, vergehen mit Sicherheit Jahre.

    Oder ist das nicht, was du meintest?

    Gruss,
    Daniel

  12. Addendum zum USB-Podcast: Erkennung der Geschwindigkeit eines USB-Geräts

    Vor der Sendung hatte ich mir noch fest vorgenommen, ein wichtiges Detail zu erwähnen, das ich schlussendlich dann sträflich unterschlagen habe. Das sei an dieser Stelle aus Gründen der Vollständigkeit noch schnell nachgeholt.

    Wird ein USB-Device in mit einem Host verbunden, müssen sich die beiden Devices darüber einig werden, ob sie in Low-Speed oder in Full-Speed kommunizieren wollen, und zwar logischerweise bevor irgendeine Kommunikation über Transport Endpoints stattfindet. Das wird mit statischen Widerständen gelöst; ein Lowspeed-Device zieht mit 1.5Kohm die Leitung D- gegen Vcc, ein Full- bzw Highspeed-Device tut dasselbe mit D+. Fullspeed-Devices werden dann kurze Zeit später auf Protokollebene nochmal auf HS-Fähigkeit geprüft und entsprechend enumeriert. Dieser Widerstand wird dann, sobald auf dem USB gequatsch wird, entfernt, damit die Leitung wieder schön symmetrisch ist.

    Nur, falls sich jemand darüber gewundert haben sollte ;)

    Gruss,
    Daniel

  13. Also Herr kenny, dass ein Bug unter Windows einen anderen kompensiert, ist bestenfalls interessant. Ob ich das als „hilfreich“ bezeichnen würde, weiss ich nicht. Für mich ist und bleibt die Windowsimplementierung ein Armutszeugnis sondergleichen – wenigstens eine handvoll Entwickler, die einen Stack so implementieren, wie sie ihn selbst gern vorfinden würden, hätte ich den Buben aus Redmond schon zugetraut.

    Denn hat man einen Treiber erstmal so installiert, dass er ein spezifisches Device an einem spezifischen Port unterstützt, muss man sich am Ende noch merken, an welchem es genau funktioniert. Diese kleinen bunten Aufkleber für Einweckgläser würde ich in so einem Fall als Notnagel vorschlagen – eine Farbe für jeden USB-Port und die diversen Stecker, die so rumfahren, schafft dann Klarheit. Willkommen im Jahr 2008!

    »Peinlich« trifft’s nach wie vor am Besten.

  14. @ Daniel: doch, das ist ungefähr, was ich meinte… logisch kommt USB 3.0 ;-) ich dachte nur, dass da die entwicklung schon etwas weiter wäre und man schon etwas mehr über die spezifikation weiss… aber wenn das so ist, isses schon ok ;-)

    Gruss,
    Ferdi

  15. Hallo Jungs,

    wie viel Saft gibt das Macbook Air über USB her? Das Superdrive bekommt ja bekanntlich mehr als 500mA geliefert.
    Ist dies evtl. schon ein Versuch den nächsten Standard zu definieren?

    Beste Grüße

  16. @kniepbert: leider habe ich weder ein Macbook Air, das ich mal stresstesten könnte, noch ein externes Superdrive zum Messen. Was macht Dich glauben, dass ein solches Laufwerk mehr Strom verbraucht als der USB normalerweise hergeben möchte?

  17. Hallo Kniepbert,

    interessant, ja. Ein Versuch, einen neuen Standard zu definieren, ist das vermutlich nicht, es ist schlicht am Standard vorbei und offensichtlich aus der Not entstanden, dass USB an dieser Stelle nicht ausreichend dimensioniert ist. Bleibt zu hoffen, dass das Konsortium dieses Problem erkennt und in der nächsten Version anpasst.

  18. Irgendwie hört sich das so an, als ob alle USB-Geräte dann einen Prozessor brauchen.
    Wie ist das denn mit normalen USB-Geräten wie Kaffeewärmern und Lüftern. In denen wird wohl kaum ein Prozessor drin sein.

  19. Tolle Sendung.

    Das mit dem schlechten MS Windows USB Stack kann ich nur unterschreiben. Ich hatte mal das Missvergnügen an einem USB Treiber mit zu arbeiten und die Interfaces für Programmierer sind unendlich verschachtelt und beim kleinsten Fehler im Treiber Wirft das System einen Bluescreen oder rebootet sofort…

  20. Zum Thema Mäuse noch ein Nachtrag meinerseits: Die Logitech G5 Laser Mouse z.B. nutzt Full-Speed. Tim’s Vermutung war also richtig.
    :-)

  21. Bin begeistert von der hohen Qualität der Express-Podcasts. Und immer absolut interessante Themen. Habe trotz guter Vorkenntnisse viel über USB dazu gelernt. Vielen Dank! Weiter so!

  22. Das war (mal wieder) ein sehr interessanter Podcast. Vielen Dank dafür.

    Ich habe mal irgendwo (ich glaube die c’t schieb das mal) gelesen, dass ein USB-Gerät erst nur 100mA (Low Power) aus dem Host saugen kann. Die max. 500mA (High Power) bekommt es erst nach einer entsprechenden Anfrage. Leider konnte ich diese Info noch nicht wieder finden, daher die Frage an die Experten:

    Wie wird sichergestellt, dass ein Gerät nicht mehr Strom zieht als der Host oder Hub ihm erlaubt? Oder bricht dann einfach die Spannung auf dem Port so weit ein, dass es ohnehin nicht mehr funktioniert?

  23. Hallo Jonny,

    das stimmt, beim Thema Stromverbrauch habe ich immer nur vom maximal zulässigen gesprochen. In Wahrheit unterscheidet USB zwischen Low-power und High-power devices, und mit letzterem haben wir es zu tun, wenn das Gerät mehr also 100mA (eine ‚load unit‘) an Strom verbraucht. Das wiederrum darf es erst tun, sobald der Host das Device entsprechend konfiguriert. Die USB-Spec legt ausserdem fest, wieviel ein Device im suspended Mode verbrauchen darf.

    All das gilt natürlich nur für bus-powered devices, wenn das Gerät seinen Strom irgendwo anders herbekommt (z.B. über ein eignes Netzteil), spricht man von self-powered devices, und die dürfen natürlich Strom verbrauchen, wie sie lustig sind.

    Sicherstellen, dass ein Gerät nicht mehr Strom verbraucht als es darf, kann man elektronisch lösen, indem man z.B. den Spannungsabfall über einem Shunt misst. Aktuelle Macbooks tun das (andere Computer vermutlich auch) und schalten dann lieber mal ab, bevor ein externer Kurzschluss den Akku leersaugt. Für das Gerät stellt sich das allerdings dar wie Du’s beschreibst: die Spannung bricht zusammen und das Gerät funktioniert dann einfach nicht mehr.

  24. @Daniel

    Wie macht sich eigentlich ein zwischengeschalteter Keylogger bemerkbar? Meldet der sich auch ordnungsgemäß am USB Host als Removable Mass Storage an ? :) Und wie kommen die Tastenanschläge trotzdem noch durch? Und wie sieht es mit präparierten Tastatursteckern aus…
    Wär ja lustig wenn man einfach ein dmesg auf der Konsole tippt und sofort bescheid weiß.

  25. Schrittmacher, ein USB-basierter Keylogger kann unterschiedlich funktionieren, wenn er schlau gemacht ist, lauscht er nur passiv mit, sodass Du ihn nicht siehst. Zum Entwickeln haben wir hier z.B. einen Ellisys USB-Logger, dessen Aufgabe es ist, Fehler zu finden und sonst nicht weiter aufzufallen.

  26. Hallo Chaosradio Team,

    dieses Podcast ist wirklich sehr gut geführt. Da ich selber einen USB-Blog betreibe und mich auch viel mit USB und deren Technik beschäftige, habe ich natürlich auch etwas genau hingehört.

    Manchmal habt ihr leider etwas die Informationen verschluckt, so dass nicht jeder direkt mitkommt – um was es jetzt eigentlich geht. Aber ansonsten, wie gesagt, Klasse Podcast. Die Erklärung wie USB 2.0 verglichen zu USB 1.1 seinen Speed erhalten habt – die habt ihr wirklich gut hinbekommen – nur irgendwie – ist irgendwie zu wenig *g*.

    Gruß Dani

  27. Pingback: Podcast über USB von Chaos Radio » Hardware

  28. Hi there,

    ich muss einfach mal loswerden, daß ich CRE einfach super finde, also gerade auch die Art, wie Tim die Gespräche führt, so daß ich eben auch immer mitkomme. Das ganze technische Gedöns ist sehr super, also USB, Lisp, MacOS usw., aber es würde etwas fehlen, wenn nicht auch die nicht-so-technischen Sachen vertreten wären. Sehr spannend alles. Perry Rhodan z.B. oder WoW oder das Sprachdingens. Neben den Podcasts von Major Nelson und e ist CRE der Podcast, den ich gleich anhören muss, wenn es etwas Neues gibt. Ich freue mich auf viele weitere super CRE Podcasts…

  29. Hallo Leute,

    ich hätte da noch eine Frage zu den verwendeten Sniffern zu dem Thema USB.
    Für MAC OS war das USB Prober und für Linux Alice USB.
    Ist das richtig?

    Kann ich hier vielleicht die beiden Links gesendet bekommen? Bin im Netz leider nicht fündig geworden.

    Gruß Frank

  30. Halli Hallo,

    wie immer eine sehr schöne Sendung, aber ich habe sie mir 2x anhören müssen weil ich eine Info vermisst habe zu der ich immer wieder nur wiedersprüchliches gehört habe … wie lang dürfen (können) USB Kabel max. sein ?? Die einen Sagen 3m die anderen bis zu 5m, wieder welche die meinen 10m geht auch … , nur so am Rande, Danke

    weiter so.

    gruss

  31. Frank, USB Prober ist kein Sniffer sondern lediglich ein Tool, das anzeigt, wie das Betriebsystem Geräte erkannt hat. Es dumpt also die Deskriptoren, nicht aber einzelne Pakete. ‚lsusb‘ tut Ähnliches unter Linux. Es gibt auch Software, die jedes einzelne Paket mitschneiden und analysieren kann, aber Empfehlung kann ich da keine geben, weil wir wie gesagt eine Hardwarelösung einsetzen, die garantiert non-intrusively arbeiten und nicht in den USB-Stack des Hosts eingreifen.

    „Alice USB“ sagt mir nichts, ich nehme an, du meinst Ellisys?

  32. derPeter, Kabel dürfen bei USB maximal 5m lang sein, um die Signalintegrität zu wahren. Längere Strecken bis zu 30m lassen sich mit zwischengeschalteten Repeatern oder Hubs bauen, allerdings darf auch dann das ganze Gebilde nicht länger als 30m werden.

  33. Hab den Podcast gerade durch und mir ist noch ein Detail aufgefallen.

    Bei der Stromversorgung über 2 Stecker, üblicherweise für 2,5″ Festplatten geht es nicht darum Schwächen bei einem einzelnen Anschluss abzudecken, sondern vielmehr auf die knapp bis gut 5W bzw. 900 bis 1100mA für den Start der Platte zu kommen.

    Ich habe allerdings die Erfahrung gemacht, dass viele neuere USB-Hosts ausreichend Strom liefern.

  34. Auch ich bin begeistert von den „Express“-Sendungen. Tim macht das großartig, mir sehr sympathisch, kompetent, mit Nachfragen wenn man es sich wünscht. Von Sendung 001 ist -Gottseidank- nicht mehr viel übriggeblieben. ;-)

    Ein Aspekt wurde in der Sendung nicht angesprochen, über den ich selbst aus Erfahrung nichts sagen kann: Bei Macs, so konnte man lesen, soll die USB-Ausführung auffällig schlecht gewesen sein. Konkret hieß es, USB sei am (Power?)Mac außerordentlich lahm gewesen sein. (Ein Schelm, wer Böses dabei denkt, für Apple war USB ja doch etwas mehr als eine simple Ergänzung von IEEE1394.)

    Mein Kritikpunkt an der Sendung ist, dass die ausufernde Beschmähung der Windows-USB-Implementierung nicht so recht begründet wurde. Treiber-Assoziation per Bus, okay, aber sonst? Gleichzeitig wurden die Stacks von Linux und OSX ebenso nicht ganz untermauert hochgejubelt, aber im nächsten Atemzug erwähnt, dass man bei OSX schonmal neu booten müsse, wenn sich die Geräte nicht konform verhält.

  35. Hallo Tobias,

    man muss da glaube ich differenzieren. Zum einen geht es, wie Du zurecht sagst, um historische Effekte. Alle Plattformen sind durch ein tiefes Tal der Tränen gegangen, bis sie mal soweit waren, dass man den USB-Stack wicklich benutzen kann und perfekt ist immernoch keiner. Das mag bei dem Windowsbashing, das ja auch Spass macht, ein wenig untergegangen sein. Für den User allerdings stellt sich mit dem Stand heute aber unter Windows ein System dar, das einfach sehr verwirrend ist, unsinnig viel Userinteraktion verlangt und für Programmierer aufgrund grauenhafter APIs die schiere Hölle ist. Das darf man ruhig auch mal sagen, wenn es auch subjektiv gefärbt sein mag.

    Ich habe, soweit ich mich erinnere, nicht behauptet, dass der Windowsstack ansich gar nicht funktionert. So mal alles unter Kontrolle gebracht ist, kann man damit als User auch arbeiten, die bekannten Eigenarten umschiffend. Nur im Vergleich zu anderen System ist es einfach mal unnachvollziehbar kompliziert.

    Klärt das deinen Einwand?

    Gruss,
    Daniel

  36. Sehr guter Bericht, danke dafür!

    Was ich noch nicht ganz verstanden habe, ist wie sich ein neues Gerät nun erstmalig beim Host-Controller melden kann. Es heißt doch Geräte melden sich initial mit der ID 0, andererseits dürfen Gerät den Bus nur nach expliziter „Sprecherlaubnis“ nutzen. Wie soll die aber ein neues Gerät bekommen?

  37. Geralt,

    nunja, ein ’neues‘ USB-Gerät hat ja eine ID, die 0 eben. An jedem Bus kann es nur ein Gerät mit der ID 0 geben, weil es an jedem Kabelsegment ja auch nur ein Gerät geben kann. Der Hostcontroller merkt das durch die hier bei den Kommentaren von mir nachgeholten Erklärungen mit den Widerständen auf der Leitung und quatscht dann mit dem Gerät, um dem eine neue ID zu geben. Bei Hubs funktioniert es genauso: wir ein Hub, der z.B. schon 3 Geräte an seinen Downstream ports hat, eingesteckt, sieht der Hostcontroller erstmal den Hub, gibt dem eine ID, und merkt dann, nachdem er durch den Hub auch die anderen Ports sehen kann, dass es noch mehr Geräte gibt. Diese werden dann alle der Reihe nach mit aufsteigender Portnummer durchenumeriert. Sollte dabei wieder ein Hub auftauchen, geht das ganze Spiel von vorne los. Hmm, war das jetzt verständlich? Sonst frag nochmal. :)

    Gruss,
    Daniel

  38. Danke für die Erklärung! Ich hatte die Nachreichung mit den Widerständen zwar auch gelesen, aber nicht soweit gedacht, daß man darüber auch merkt, wenn jemand Neues an der Strippe hängt.

  39. Danke für die vielen Infos über USB!
    Die Aussage, daß die Implimentierung in XP schlecht sei, kann ich so nicht nachvollziehen..mein Rechner ist 3 Jahre alt, besitzt 4 USB Ports und alle funktionieren einwandfrei..sämtliche verwendeten USB Geräte werden einwandfrei und sofort erkannt. Und zwar unabhängig vom Port. Ein beliebiges An- und Abstecken in laufendem Betrieb ist jederzeit möglich..also nix mit Port markierern und so..der Datendurchsatz hängt natürlich vom Gerät ab, entspricht aber voll den maximalen Durschsatzraten der 2.0 Spezifikationen..ich weiß ja nicht, was für PC`s Ihr da benutzt, aber Eure Probleme diesbezüglich sind mir fremd…sämtliche mir bekannte Besitzer von XP-Rechnern kennen die hier geschilderte Problematiken ebenfalls nicht…

    trotzdem nochmals Danke für Eure Sendung…

  40. xtc123,

    ich glaube ja fest daran, dass dieser 3 Jahre alte Windowshobel, von dem Du sprichst, dich schon so einige Male zum Installieren absurder „USB Verbundgeräte“ aufforderte und dir damit langsam aber sicher in altbekannter Redmondmanier die Rübe matschiggekocht hat, bis Du’s nicht mehr bemerkt hast. Wenn Du alle Kombinationen an Druckern, Mäusen und Tastaturen einmal durchgespielt hast, geht es natürlich auch, das ist ja auch kein besonders großes Wunder.

    Ich empfehle mal, an einem verregneten Sonntagnachmittag ein vollkommen neues Gerät einzustecken und zu sehen, welche Form von Inkontinenz dein Blechknecht daraufhin entwickelt. Sollte dieser Effekt ausbleiben, hat vermutlich Tim recht.

    Gruss,
    Daniel

  41. All jenen, welche sich etwas intensiver mit dem Thema Wireless USB auseinandersetzen möchten, kann ich den Wireless USB Blog (englisch) empfehlen. Dort findet Ihr aktuelle Informationen aus der Entwicklerszene, Hintergrundinformationen von Chipsatzherstellern, Produktankündigungen sowie weiterführende Links.

    Grüße
    Karsten

  42. Tolle Sendung. Hat mich der USB-Welt etwas näher gebracht.
    Deshalb würde ich gerne die Signale aus meiner Laser-Maus (Position) mit einem Controller (R8C) auslesen und dann weiterverarbeiten. Könnt Ihr mir weiterhelfen, wie ich das ohne zuviel unnötigen Ballast realisieren kann?

    Vielen Dank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.