USB (Universal Serial Bus) 1. Geschichte 1.1 USB – Entwicklung Das USB–Implementers-Forum wurde 1994 gegründet und entwickelte in wenigen Monaten den Universal-Serial-Bus, der erstmals 1995 auf der Comdex in Las Vegas in der 1.0 Version der Öffentlichkeit vorgestellt wurde. Ende 1995 wurden die ersten Motherboards mit dem USB–Connecter bestückt und ausgeliefert. Die bekanntesten Gründungsmitglieder waren: Microsoft Compaq Intel IBM Ziele des heute mehr als 1100 Mitglieder umfassenden USB–Implementers–Forums: Entwicklung des USB–Standards vorantreiben Überwachung der Kompatibilität neuer USB– Produkte zum aktuellen USB–Standard technische Unterstützung für Firmen, die USB kompatible Geräte auf den Markt bringen wollen Ausgiebige Tests neuer Geräte unter den verschiedensten Betriebsbedingungen 1.2 Entwicklungshintergründe leichte Benutzbarkeit... Für den Endanwender wird die Konfiguration heute zwar schon durch PCI, PnP, PCMCIA u.v.a. erleichtert, aber es gibt aus seiner Sicht immer noch zu viele Input- / OutputInterfaces Port – Erweiterungen... Ein bisher fehlender bidirektionaler, billiger Peripherie-Bus unterdrückte den Einsatz von Telefon, Fax, Modem, Anrufbeantworter, Scanner, PDA, Keyboard, Maus usw. an einem Host-Adapter. Existierende Lösungen waren immer nur für wenige verschiedene Geräte geeignet! Computergestütztes Telefonieren... Durch die unterschiedliche Entwicklung der Computer- u. Kommunikationsindustrie wurde bis jetzt eine Integration des Telefons in die PC-Umgebung nie richtig erreicht. 1 2. Allgemeines USB bietet den großen Vorteil, dass Peripheriegeräte (Mäuse, Tastaturen, Modems, Lautsprecher, Card-Reader, Drucker, Scanner usw.) während des Betriebes des Computers ein- und ausgesteckt und dabei automatisch konfiguriert werden können ("hot-plug" und "hot-unplug" in Ergänzung zu "plug & play"). Ein weiterer Vorteil ist, dass 5-Volt Versorgungsspannung auf dem Bus liegen ("bus power"). Viele USB-Geräte kommen daher ohne separate Stromversorgung aus. Man hat nur noch ein Kabel, das USB-Kabel. In der USB-Version 1.1 unterstützt USB Übertragungsgeschwindigkeiten von 1.5MBit/s und 12MBit/s. Damit ist USB deutlich langsamer als die Alternative Firewire (IEEE-1394, Sony i.Link), die ebenfalls die "hot-plug"- und die "bus power"-Möglichkeit bietet. Ein neuer Standard, USB 2.0, ist aber bereits auf dem Markt. Mit 480 MBit/s wird Firewire hier deutlich übertroffen. 3. Eigenschaften 3.1 USB 1.1 LowSpeed Modus mit 1,5 MBit/s für z.B. Maus und Tastatur FullSpeed Modus mit 12MBit/s für Geräte mit mittleren Übertragungsraten, wie Audio oder ISDN integrierte Stromversorgung bis 500mA Geräte können bei laufendem Betrieb angeschlossen werden ("hot-plug") und werden automatisch erkannt Durch USB-Hubs und entsprechende Kaskadierung können bis zu 127 Geräte angeschlossen werden, ohne dass Interrupt-Konflikte entstehen Energiemanagement unterstützt Suspend (=Standby) und Resume (=WakeUp) maximale Kabellänge 5 Meter (mit Signalverstärkungskabeln, sogenannten Repeatern, lassen sich bis zu 25 Meter überbrücken) Datenübertragung von PC zu PC mit einem USB-Link-Kabel möglich Hardware-Ressourcen sparend: USB Controller benötigt nur einen IRQ 3.2 USB 2.0 HighSpeed Modus mit 480 MBit/s für große Datenmengen z.B. ideal für Video, externe Festplatten und CD-Brenner Erste USB-2-Karten (PCI) wurden auf der Cebit 2001 in Hannover vorgestellt USB 2.0 ist abwärtskompatibel, d.h. USB 1.1 Stecker können weiterverwendet werden; dies gilt ebenfalls für hochwertige USB 1.1 Kabel 2 4. Wie schnell ist die USB-Verbindung im Vergleich zu anderen Schnittstellen? Die Angaben erfolgen in MegaByte/s: Seriell USB 1.1 Parallel Ultra SCSI Ultra Wide SCSI IEEE1394/Firewire/i.Link USB 2.0 Ultra160 LVD / U2W 0,014 MB/s 1,5 MB/s 2,5 MB/s 20 MB/s 40 MB/s 50 MB/s 60 MB/s 160 MB/s 5. Wie sehen die Stecker der USB-Kabel aus? USB-Kabel wurden bzgl. der Stecker bewusst so konzipiert, dass man bei komplexen USB-Bäumen keine Verbindungsfehler machen kann. USB-Kabel haben immer zwei verschiedene Stecker-Typen: Typ A und Typ B. Stecker von Typ A werden computerseitig (downstream) verwendet und Stecker vom Typ B bei den USB-Geräten (upstream). Eine Ausnahme bilden USB-Link-Kabel. Solche Spezialkabel dienen der Kopplung von zwei Computern. Sie haben zwei Stecker vom Typ A und zusätzlich eine Umsetzelektronik, die sich in der Mitte des Kabels in einem Kunststoffblock befindet. 6. Technik 6.1 Architektur Ein USB System besteht immer aus einem Host (in der Regel dem PC) und bis zu 127 Devices (Geräte, die am USB angeschlossen werden können). Im Unterschied zu PCI u.ä. benötigt der USB im Host keinen I/O Adressraum und auch keine IRQ. Die Devices sind am Host sternförmig, u.U. über einen Hub angeschlossen. Die maximale Entfernung zwischen Host und Device bzw. zwischen Hub und Device darf nicht mehr als 5 Meter betragen. USB ist sehr Host – zentrisch, d.h. nur der Host veranlasst eine Datenübertragung (niemals ein Device oder ein Hub). Der USB unterstützt Hot-Plug, d.h. im Betrieb können Devices am Bus angeschlossen oder vom Bus entfernt werden. 3 Die Devices werden dabei automatisch erkannt. Zusammen mit den Daten wird auch der Clock übertragen. Devices können auch über den USB mit Spannung (5 Volt, max. 500mA) versorgt werden. USB besitzt dabei umfangreiche Power Management Funktionen. Devices können dabei in einen Suspend – Mode versetzt werden. In diesem Mode nehmen die beteiligten Geräte noch Spannung auf, nehmen aber an der Kommunikation nicht teil. Für die Stromversorgung der Devices, Spannungsabfälle und die erlaubten Kabel gelten die (umfangreichen) Vorschriften des USB. Trotzdem sind im Handel Kabel erhältlich, die lt. USB Spezifikation nicht zulässig sind. Fehlerkorrektur wird durch eine robuste Übertragung auf dem Physical Layer (Kabel mit einem Schutzschirm), Kontrollsignalen und der Erkennung von fehlenden Paketen gewährleistet. USB unterstützt 2 Geschwindigkeiten; Low-Speed mit 1,5 Mbit/s und Full-Speed mit 12 Mbit/s. Untenstehendes Bild zeigt die USB Architektur. „Compound Device“ HUB HUB 6.2 Kommunikation auf dem USB Alle Bus-Transaktionen führen zur Übertragung von bis zu drei Paketen. Jede Transaktion beginnt, wenn der Host-Controller ein USB-Paket sendet, das die Art und Richtung der Transaktion sowie die Geräte-Adresse und Endpunkt-Nummer bestimmt. Dieses Paket wird als Token-Paket bezeichnet. Das angesprochene Gerät wird bestimmt, indem jedes angeschlossene Gerät die Adress-Felder dekodiert und sich im Falle der Übereinstimmung selbst selektiert. Bei einer bestimmten Transaktion können Daten entweder nur von Host an ein Gerät gesendet werden oder der Host kann nur Daten eines Gerätes empfangen. Die Datenquelle sendet im Anschluss ein Datenpaket oder zeigt dem Empfänger an, dass keine Daten zu übertragen sind. Der Empfänger antwortet dann generell mit einem Handshake-Paket, welches anzeigt, ob die Übertragung erfolgreich war oder nicht. Host und Device kommunizieren über Pipes (logischer Kanal) miteinander. Eine Pipe ist eine Verbindung zwischen einem Endpunkt eines Gerätes und der HostSoftware. Sie ermöglicht den Datenfluss zwischen Host-Software und Endpunkt über Puffer im Speicher. Es gibt zwei verschiedene Arten von Pipes: Stream-Pipes, deren Daten keine USBspezifische Struktur besitzen und Message-Pipes, die USB-spezifische Daten transportieren. Stream-Pipes unterstützen Bulk-, Interrupt- und isochrone Transfers und sind immer unidirektional. Mit Message-Pipes ist bidirektionale Kommunikation möglich. Außerdem unterstützen sie nur Kontroll-Transfers. 4 Die Übertragung der Daten erfolgt asynchron oder isochron (konstante Bandbreite) mit verschiedenen Transfers. Diese sind unterteilt in: - Kontroll-Transfers werden von der USB-Software benötigt, um ein Gerät zu konfigurieren oder Status-Informationen anzuzeigen. Die Datenübertragung erfolgt verlustfrei, d.h. fehlerkorrigiert. Bidirektionale Transfervariante. - Interrupt-Transfers für kleine Datenpakete mit geringer Häufigkeit (Beispiel: Maus). Unidirektionale Transfervariante. Im Fehlerfall werden die Daten noch einmal gesendet. - Bulk-Transfers für große Datenmengen und nicht-periodische Übertragung. Dieser Transfer wird für Anwendungen verwendet, deren Daten auch verzögert gesendet werden können (Beispiel: Drucker). - Isochrone-Transfers für periodische und kontinuierliche Übertragung von zeitkritischen Daten wie Audio und Video. Unidirektionale Transfervariante mit geringer Verzögerung. Bei den einzelnen Transfers werden die zu übertragenden Daten in verschiedene Pakete (Token, Daten, Handshake und Special) verpackt und versendet. 6.3 Devices Die Funktionalität von Devices ist in der USB Spezifikation sehr genau definiert. Devices werden u.a. durch die Geschwindigkeit (Low-Speed bzw. High-Speed) definiert. Devices werden in Klassen eingeteilt. Definierte Klassen sind u.a. Human Interface Devices (HID), Audio, Communication, Mass-Storage, Monitor, Printer und USB/IrDA. Devices können eine eigene Stromversorgung (self-powered) besitzen oder aber vom USB versorgt (buspowered) werden. Neue am USB angeschlossene Devices werden automatisch erkannt. Dabei werden vom Device nacheinander die Zustände Powered und Reset durchlaufen. Das Device ergibt sich dann mit der Default-Adresse 0 zu erkennen. Das Device wird nun konfiguriert. Mit der Konfiguration werden u.a. die Klasse, Anzahl der Endpoints, die Device-Adresse, Datenaufkommen, Art der Stromversorgung usw. festgelegt. Danach kann das Device auf Requests (Anforderungen für Senden oder Empfangen) vom Host reagieren. Devices können mehrere Konfigurationen, aber nie mehr als eine zur gleichen Zeit, besitzen. Die Vorteile von Plug-and-Play und die Verwendung der Windows USB Device-Treiber werden nur bei völlig korrekter Konfiguration und vollständiger Klassenspezifikation erreicht. 6.4 Host Der Host ist in einem USB System der zentrale Koordinator. Der Host ist normalerweise im PC integriert. Jeder Datentransfer wird immer vom Host veranlasst oder geht zum oder über den Host. Der Host agiert auch als zentraler Timer auf dem USB. Der USB Treiber stellt die I/O Request Pakete (IRP) mit Angabe der Pipe für die Datenübertragung auf dem USB bereit. Der Host übernimmt im einzelnen folgende Aufgaben: - Erkennung von Anschluss/Entfernung von Devices inkl. Remote Wakeup Verwaltung der Kontrollinformationen von Devices Steuerung der elektrischen Interfaces zwischen Host und Device bzw. Hub Fehlerbearbeitung Root Hub-Funktion 5 Der Host prüft z.B. auch ob der USB die entsprechende Bandbreite unterstützen kann. Dafür muss er entsprechende Berechnungen anstellen. Die Parameter dafür sind abhängig von der jeweiligen Bus-Topologie. Parameter für die Signalverzögerung (Anzahl der Hubs, Kabel usw.) gehen in diese Rechnung mit ein. Die Host-Implementierung bestimmt die Grundlast des Systems und die erreichbaren Verzögerungszeiten bzw. den Datendurchsatz. 6.5 Hub Die Funktion eines Hub ist besonders für Systeme mit mehr als 2 USB Devices am Host von Bedeutung. Der Hub stellt mehr Ports (typisch sind 4 bzw. 7) zur Verfügung. Hubs können auch hintereinander geschaltet werden. Hubs mit einer Device-Funktion (z.B. mit einem Keyboard) nennt man Compound-Devices. Der Port in Richtung Hub ist der Upstream-Port, in Richtung der Devices der Downstream-Port. Die Performance eines USB Systems mit Hubs ist u.a. auch von der HostImplementierung abhängig. Hubs erkennen auch die Geschwindigkeit der angeschlossenen Devices und ob Kollisionen im Datentransfer vorliegen. Suspend und Resume von Devices wird auch von Hubs unterstützt. Die Konfiguration des Hub wird vom Host übernommen. Hub-Schema 6.6 Elektrik Der USB überträgt elektrische Signale und die Betriebsspannung über ein vieradriges Kabel mit 90 Ohm Impedanz. Die Signalübertragung erfolgt differentiell über 2 dieser Adern, wobei mindestens 200 mV Eingabespannung für den Empfänger bereitgestellt werden müssen. Anschluss Adernfarbe Funktion 1 rot VBUS / Vcc 2 weiss - Data 3 grün + Data 4 schwarz GND USB Kabel-Schema 6 Zwei verschiedene Arten der Signalübertragung werden unterstützt: normale Übertragung mit 12 Mbit/s und langsame Übertragung mit 1,5 Mbit/s. Beide Modi sind zur selben Zeit im USB-System möglich, was durch geräte-transparentes Umschalten zwischen diesen Modi ermöglicht wird. Ein Taktsignal wird kodiert mit den differentiellen Daten übertragen. Außerdem geht ein SYNC-Feld jedem Datenpaket voraus, damit der Empfänger seinen Takt mit dem Sender synchronisieren kann. Die mit VBus und GND bezeichneten Adern versorgen die USB-Geräte jeweils mit Betriebsspannung. VBus liegt am Ausgang der Quelle bei +5 V. Um eine garantierte Eingabespannung und ordnungsgemäße Terminierungswiderstände zu gewährleisten, werden vorkonfigurierte Terminatoren an beiden Enden des Kabels benutzt. Die Terminierungen ermöglichen es weiterhin festzustellen, ob Verbindungen von Geräten mit dem USB-System hergestellt oder unterbrochen werden. Außerdem lässt sich dadurch zwischen Geräten unterscheiden die den normalen bzw. langsamen Übertragungsmodus verwenden. 7. Vorteile / Anwendungen Einfachere Verbindungen Hatte man früher ein riesiges Schnittstellengewirr und Kabelsalat am PC, so wurde mit USB ein anwenderfreundlicher Standard geschaffen, der allen Geräten einen Steckertyp anbietet. Lästige Ressourcenkonflikte, besondere Einstellungen wie Jumperbelegung oder Protokolleinstellungen gehören der Vergangenheit an - die Konfiguration erfolgt automatisch. Mit USB-On-the-Go können 2 Endgeräte ihre Daten direkt miteinander austauschen. Normalerweise können USB-Geräte nur als Slaves von einem HostRechner angesprochen werden. Mit USB-On-the-Go kann beispielsweise eine Digitalkamera Daten ohne zwischengeschalteten Computer an einen Drucker schicken. Eine weitere „Verbindungs“-Anwendung bietet USB durch die direkte Vernetzung zweier Rechner mittels speziellem USB Network Cable. Diese Anwendung ersetzt das alte Nullmodemkabel und bietet alle gängigen Netzwerkprotokolle wie TCP/IP oder IPX. Der maximal erreichbare Datendurchsatz liegt aber mit 5 MBit/s deutlich unter dem der Ethernetnetzwerke. Flexiblere Erweiterungsmöglichkeiten Plug and Play war gut gedacht, blieb aber auf halbem Weg stecken – nicht nur wegen grundsätzlicher Technikprobleme: man musste immer noch seinen Rechner öffnen um irgendwelche Erweiterungen einbauen zu können. Mit USB kann man dynamische Peripherieverbindungen herstellen, d.h. USB Geräte können jederzeit an den Rechner angeschlossen oder abgezogen werden, sogar zur Laufzeit (hot plugging). Lediglich beim ersten Einsatz muss ein Treiber installiert werden, bei allen weiteren Einsätzen erkennt der Rechner die Hardware automatisch. Daraus ergibt sich der Vorteil für den Anwender, dass er mit mehreren Geräten gleichzeitig arbeiten kann, ohne jedes Mal einen Neustart des Rechners ausführen zu müssen. USB ist plattformunabhängig: Entwickler können Geräte konzipieren, die den Anforderungen der potenziellen Kunden entsprechen, ohne sich Gedanken über die verwendete Plattform machen zu müssen. 7 Höhere Leistung Um langsame Geräte wie Tastatur und Maus als auch schnelle Geräte wie Modems oder Videokameras über ein und denselben Bus zu führen, wurde die Übertragung über den USB in 3 Kanäle unterteilt: - Der Low-Speed-Kanal mit bis zu 1,5 MBit/s eignet sich für Maus und Tastatur Der Medium-Speed-Kanal mit bis zu 12 MBit/s für Modems oder Audioanwendungen Der High-Speed-Kanal mit bis zu 480 MBit/s für Drucker, Scanner, Video und Speichermedien Robustheit USB ist in der Lage, defekte Engeräte zu erkennen und dies über Software dem Anwender mitzuteilen. Zudem ist in das Protokoll eine Fehlerbehandlung sowie Behebung integriert. Kosten - preisgünstiger Sub-Channel geeignete Entwicklung von billiger Pheripherie möglich preisgünstige Kabel und Steckverbinder Nachteil Die PC-Technik hat so viele Leichen im Keller, dass wir die nicht so schnell los werden. So gibt es zwar USB-Tastaturen, davon kann man aber nur herzlich abraten. Denn: Wie geht's weiter, wenn Windows nicht mehr hochkommt, nur noch eine DOSBootdiskette hilft und MS-DOS keine herkömmliche Tastatur findet? Außerdem gibt es da noch Gemeinheiten in dem Stil, dass längst nicht jedes BIOS weiß, was eine USBTastatur ist. 8