Hi, eine USB Maus oder Tastatur sind Lowspeed USB Geräte mit einer maximalen Datenrate von 1,5MB pro sekunde. Was für eine Datenrate kann ich aber normalerweise Annehmen, wenn ich ein paar Zeichen mit der Tastur eingebe oder ein paarmal mit der Maus hin und her fahre, im Internet habe ich dazu nichts gefunden, weis da jemand bescheid?
USB low-speed überträgt immer mit 1.5MBit. Die Geschwindigkeit ist fest. Lediglich der Inhalt der USB-Pakete ändert sich. Bin grad nicht sicher, ab ich meine, dass USB-HID-Protokoll (Human Interface Device = Maus/Tastatur) basiert auf dem Interrupt-Transfertyp, d.h. das Device wird in festen Zeitabständen gefragt, ob es neue Daten hat. Ralf
Nicht ganz richtig so. Die Bits bewegen sich bei Low Speed Devices mit 1,5 MBit/s auf dem USB, aber die Zahl und Größe der Datenpakete ist begrenzt. Es können pro Endpoint (so was wie ein logisches Gerät) pro Sekunde bis zu 125 Pakete zu je maximal 8 Byte übertragen werden.
Bedeutet das, das eien Maus oder Tastatur Maus nur ca 1k Byte/sec verschickt?
Nein, es bedeutet, daß sie soviel verschicken kann, aber nicht, daß sie es auch tun muss. Wenn auf der Tastatur keine Tasten gedrückt werden, oder die Maus nicht bewegt wird, dann wird gar nichts* übertragen. *) mal abgesehen von etwaigen "bist-du-noch-da"-Paketen o.ä.
ok, also wenn ich das richtig verstanden habe dann kann man im Lowspeed Bereich 1,5MB/s verschicken eine Maus oder Tastatur verschickt aber nur ca 1kB, muss aber nicht wenn sie nicht benutzt oder bewegt wird?
Sylvia Heib schrieb: > ok, also wenn ich das richtig verstanden habe dann kann man im Lowspeed > Bereich 1,5MB/s verschicken Nein. Das ist die Bruttodatenrate. Und das sind 1.5 MBit/sec, während die Maus 1 kByte/sec übertragen kann.
ok, jetzt ist alles klar, vielen Dank für eure Antworten, das hat mir sehr geholfen!
Die Einschränkung der Datenmenge betrifft nicht nur Mäuse und Tastaturen, sondern generell Low Speed Geräte.
... sofern sie sich an den USB-Standard halten. Es geht auch anders, die meisten USB-Hosts tolerieren das, wie die mit Low-Speed-USB implementierten CDC-Lösungen auf AVR-Basis zeigen. Die können mehr als 1 kiB/sec übertragen.
Guido Körber schrieb: > Nicht ganz richtig so. Die Bits bewegen sich bei Low Speed Devices mit > 1,5 MBit/s auf dem USB, aber die Zahl und Größe der Datenpakete ist > begrenzt. Es können pro Endpoint (so was wie ein logisches Gerät) pro > Sekunde bis zu 125 Pakete zu je maximal 8 Byte übertragen werden. wo finde ich denn oben genannte Info? Woher weist du das mit den 125 Paketen mit den maximal 8 Byte? Es ist nämlich für mich wichtig zu wissen, wie groß ein einzelnes Datenpaket einer Maus wird.
> wo finde ich denn oben genannte Info? Woher weist du das mit den 125 > Paketen mit den maximal 8 Byte? Es ist nämlich für mich wichtig zu > wissen, wie groß ein einzelnes Datenpaket einer Maus wird. Sowas und noch viele andere Dinge stehen in der USB Spec die man von www.usb.org runterladen kann. Über die Deskriptoren wird gesteuerert wie oft das Device abgefragt wird Thomas
Genau, und da steht dann auch (wenn ich mich recht erinnere) das nur max. alle 10ms (100/s) eine Übertragung stattfinden darf. Ein Paket ist dann max. 8 Bytes groß, aber auf den D+ D- Leitungen werden deutlich mehr als 64 Bits übertragen.
cool, ich hab mir die usb spezifikation angeschaut und folgendes gefunden: 5.7.3 Interrupt Transfer Packet Size Constraints An endpoint for an interrupt pipe specifies the maximum size data payload that it will transmit or receive. The maximum allowable interrupt data payload size is 64 bytes or less for full-speed. High-speed endpoints are allowed maximum data payload sizes up to 1024 bytes. A high speed, high bandwidth endpoint specifies whether it requires two or three transactions per microframe. Low-speed devices are limited to eight bytes or less maximum data payload size. Danke für den Tipp!
etwas weiter ist in der Spezifikation zu lesen, das die Datenpakete im Lowspeed bereich auf 10 Pakete die Sekunde limitiert sind. Was mich jetzt noch etwas verwirrt ist: Wenn ich 10 Datenpakete mit 8 Byte Daten plus 5 Byte zur Synchronisation, Checksumme usw. habe die in der Sekunde verschickt werden dürfen, wie komme ich da auf eine Datenrate von 1,5 Mbit/s ?????
Die 1,5MBit/s sind brutto, was auf dem gesamten Bus möglich ist. Da teilen sich erst mal alle an den Hub angeschlossenen Geräte. Schließlich willst du ja nicht durch die Maus deine Tastatureingaben blockiert haben...
Sylvia H. schrieb: > etwas weiter ist in der Spezifikation zu lesen, das die Datenpakete im > Lowspeed bereich auf 10 Pakete die Sekunde limitiert sind. Nicht ganz korrekt, das minimale Intervall bei Low Speed ist 10ms. Damit können max. 100 Interrupt Transfers pro Sekunde stattfinden.
ups, da hätte ich doch glatt das (micro) vor dem frame in der USB Spezifikation übersehen : 5.7.4 Interrupt Transfer Bus Access Constraints Interrupt transfers can be used by low-speed, full-speed, and high-speed devices. High-speed endpoints can be allocated at most 80% of a microframe for periodic transfers. The USB requires that no more than 90% of any frame be allocated for periodic (isochronous and interrupt) full-/low-speed transfers. The bus frequency and (micro)frame timing limit the maximum number of successful interrupt transactions within a (micro)frame for any USB system to less than 108 full-speed one-byte data payloads, or less than 10 low-speed one-byte data payloads, or to less than 134 high-speed one-byte data payloads. Danke für den Hinweis!
Norbert schrieb: > Nicht ganz korrekt, das minimale Intervall bei Low Speed ist 10ms. > Damit können max. 100 Interrupt Transfers pro Sekunde stattfinden. Auch das ist nicht korrekt. Für einen Interrupt Endpoint definiert ein Device die MAXIMALE Zeit die zwischen zwei Abfragen vergehen darf. Beim USB ist immer der Host die auslösende Instanz für einen Datentransfer, das Device kann von sich aus nicht darauf aufmerksam machen, dass es Daten senden möchte. Also muss der Host die Geräte in gewissen Abständen pollen. Damit das Gerät seine Daten los wird, bzw. schnell genug bekommt, muss der Host natürlich ausreichend oft nachfragen ob das Gerät Daten hat, bzw. braucht. Beim Interrupt Transfer geschieht das halt indem die maximale Zeit zwischen zwei Transfers spezifiziert wird, da ist für Low Speed ein kleinster Wert von 10 ms erlaubt. In der Praxis machen daraus alle Betriebssysteme 8 ms, damit sind sie auf der sicheren Seite das Gerät in jedem Fall ausreichend schnell abzufragen. Daher 125 Transfers pro Sekunde.
OK, ich hätte präziser schreiben müssen: Damit können max. 100 Interrupt Transfers pro Sekunde gewünscht werden. Also könnte sich das Device bestenfalls darauf verlassen das es 100 mal pro Sekunde abgefragt wird. Aber selbst das stimmt nicht ganz, siehe unten. vgl. USB 2.0 S.51: >> Low-speed endpoints are limited to specifying only 10 ms to 255 ms. >> The period provided by the system ! may ! be shorter than that desired >> by the device up to the shortest period defined by the USB Ich habe hier schon signifikante Unterschiede zwischen Linux (Lenny) und Windows (XP) Polling gesehen und zwar sowohl Geschwindigkeit als auch Gleichförmigkeit (Jitter) der Abfragen. >> The client software and device can depend only on the fact that >> the host will ensure that the time duration between two transaction >> attempts with the endpoint will be no longer than the desired period. >> Note that errors on the bus can prevent an interrupt transaction from >> being successfully delivered over the bus and consequently exceed the >> desired period. Garantiert ist nüscht. ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.