Hallo Konrad,

Am 10.12.19 um 16:01 schrieb Konrad Rosenbaum:
On Monday, 9 December 2019 18:17:55 CET jm.2...@web.de wrote:
Das könnte unbeabsichtigt an der verwendeten Hardware liegen: Bei mir
hängen die Receiver von WLAN-Tastatur und -Maus an einem USB-Hub.

Du meinst sicherlich Wireless-Tastatur/-Maus. Meines Wissens gibt es keine
Eingabegeräte die direkt über LAN oder WLAN kommunizieren. ;-)


Da hast Du gewiß recht.  Ich meinte "Funktastatur" und "Funkmaus" ...
und (auch auf die Gefahr, mich zu blamieren) funken die nicht auch auf
2.4 GHz?

Hängt
an diesem USB-Hub zusätzlich ein USB-Stick, reagiert die Kiste sehr
langsam auf Eingaben.  Warum das so ist?  Keine Ahnung.

Ganz einfach: der Stick hat höhere Prio und mehr Daten zu transportieren.


Das klingt logisch.  Allerdings reagiert die Kiste auch dann sehr
langsam auf Eingaben per Funktastatur und -maus, wenn der USB-Stick
einfach nur am USB-Hub hängt und keinerlei Daten von bzw. zu ihm
transferiert werden – selbst dann, wenn der Stick schon länger ohne
Datentransfers dort hängt.  (Siehe auch unten bei meiner nächsten Frage.)

Auf USB (1.x und 2.x) gibt es ein paar unterschiedliche Transfertypen -
"control", "interrupt", "bulk", "isochronous".

Control benutzt USB um einfache Kommandos und Kurzinfos zu transportieren -
z.B. "Identifiziere alle Geräte", "Führe Reset durch", "Gib mir Deine
Typbeschreibung", ...

Interrupt wird für sehr kleine Datenmengen (wenige Bytes) benutzt, z.B. von
Tastaturen und Mäusen um ihre Eingaben zu übermitteln.

Control und Interrupt werden auf dem Gerät in einen Puffer geladen und müssen
dann warten bis der Host vorbeikommt und die Daten abholt. (Ja, der Name
Interrupt is irreführend.) Die Transferrate ist unterirdisch, aber für
einfache Geräte genug.

Bulk wird von Massenspeichern und anderen Geräten benutzt, die große
Datenmengen ohne Verluste transportieren müssen. Dafür wird per Interrupt eine
Zeitscheibe auf dem Bus angefordert, der Host gibt den Transfer frei und dann
kann das Gerät eine Zeit lang den Bus blockieren.


Das klingt, also ob "Bulk" auch ohne Datentransfer, also prophylaktisch
angefordert wird.  Ist das so?

Isochronous wird von Multimediageräten (Kamera, Microfon) benutzt. Es
funktioniert wie Bulk, aber wenn der Host nicht genug Kapazität zur Verfügung
stellt werden die Daten einfach verworfen weil sie sowieso zu alt sind.

Dein Massenspeicher fordert also exzessive Bulk-Transfers an und blockiert
damit effektiv den Bus, während Deine Tastatur nicht rechtzeitig an ihre
Interrupt-Transfers kommt.

Alternativ stört der Stick den Bus auf elektrischem Niveau oder der Hub bricht
regelmäßig zusammen weil er nicht genug Strom für alle Geräte hat.

Maßnahmen:

Hub mit eigener Spannung versorgen (falls er ein Netzteil hat).

Tastatur und Stick tauschen - falls der Hub schlecht programmiert ist
behandelt er bestimmte Ports mit höherer Prio als andere.

Tastatur nicht an den Hub, sondern in einen anderen (weit entfernten) Port
direkt am Rechner stecken. Die USB-Chips im Rechner arbeiten unabhängig
voneinander, aber jeder USB-Bus kann immer nur ein Gerät gleichzeitig
bedienen. Meistens bedient ein Chip 1-4 Ports die direkt nebeneinander liegen,
sind Ports physisch weit voneinander angelötet, dann sind sie vermutlich auch
an unterschiedliche Chips angeschlossen und blockieren sich damit nicht
gegenseitig. Umgekehrt sind Ports physisch am Rechner dicht beisammen (und vom
selben Typ(*)) dann werden sie vermutlich auch vom selben Chip auf dem selben
Bus bedient.

(*) USB 2.x Ports sind meistens schwarz, USB 3 Ports sind blau oder haben USB-
C Stecker. Das sind in (fast) jedem Fall unterschiedliche Chips und
unterschiedliche Busse.


viel Glück!
Konrad

PS: versuch nicht die USB-Spec zu lesen! Die Schmerzen sind kaum zu
ertragen... ;-)


Vielen Dank für Deine detaillierten Hinweise!
Jakob

Antwort per Email an