On Monday, 9 December 2019 18:17:55 CET [email protected] 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. ;-)

> 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.

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.

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... ;-)

Attachment: signature.asc
Description: This is a digitally signed message part.

Antwort per Email an