Ja, USB ist 'ne ziemliche B**ch. Oft nicht richtig implementiert auch auf Mainboards (oder im BIOS). Besonders schlimm wird es immer, wenn eine neue USB Generation raus kommt, die aber noch nicht nativ in den (Intel) Chipsätzen verbaut ist und die Hersteller anfangen, irgendwelche 3rd Party Chips auf den Boards zu implementieren. Da wurden schon USB 3.0 oder 3.1 Chips auf langsame single Lane PCI-Express Busse gehängt. Dann hast Du zwar das Protokoll, wirst aber nie die spezifizierte Geschwindigkeit erreichen.
Sowas habe ich auch schon machen müssen aber wir spielen in einer anderen preislichen Liga, da spricht man vorher mit dem Kunden darüber: Ja geht aber folgende Limitation.
Ich hab in meinem Studiorechner ein einen Intel Sandy-Bridge Chipsatz, das war der letzte bevor USB 3.0 nativ implementiert wurde. Der zusätzliche USB3 Host Chip wurde von ASUS noch halbwegs sauber implementiert aber außer Storage Devices traue ich mich trotzdem nicht da echte USB 3 Geräte dran zu betreiben.
Bei USB hängt seht viel daran, wie die PnP ID des Gerätes aufgebaut ist. Über welchen Zweig das Gerät nun gefunden wurde. Das gleiche Gerät an einem anderen Anschluss bekommt den Treiber noch mal frisch installiert, dabei können auch sämtlichen Gerätespezifischen Einstellungen verloren gehen. Je nach dem wie gut der firmware- und Treiberentwickler mitgedacht haben. Übrigens man kann die Ansicht im Gerätemanager so umstellen, dass man den kompletten Verbindungsbaum sehen kann und auch hinter welchem Hub, ein USB Port hängt. “Ansicht->Geräte nach Verbindung”
Beispiel aus der Praxis, eine Notebook Dockingstation, die wir für Airbus Tankflugzeuge entwickelt haben, darin befindet sich (unter anderem) ein 4fach USB-Seriell Wandler und noch diverse PCI(e) Karten. Jedes mal wenn man das Notebeook auf eine andere Dock gesteckt hat, wurden 4 neue Seriell Ports gefunden und die Nummerierung der COM-Ports einfach weiter hoch gezählt. Der Hersteller musste für uns die Firmware anpassen, dass die immer gleich bleiben und Windows nicht merkt, dass es auf einer anderen Dock sitzt. Schien für die, damals aber nicht ganz neu zu sein, das Problem.
Das war noch unter WinXP, dürfte sich aber bis heute nicht verändert haben.
Unter Linux ist es an dieser Stelle übrigens noch schlimmer. In einer laufenden Linux Instanz, wenn ein USB Gerät die Verbindung verliert und es neu auftaucht (Auch am gleichen Port), ändert es seine Position im Device-Tree. Die Geräte werden durchnummeriert, jedes neue, identische Gerät wird einfach eins rauf gezählt. Eine Software, die gerade darauf zugreift kann nach so einem Verbindungsabbruch, das Gerät niemals wieder finden, selbst wenn es das gleiche Gerät neu initialisiert, es ist nicht mehr da.