Hallo,
eben mal mein USB-Device an einer anderen USB-Buchse eingesteckt, es
macht PlingPlong - neue Hardware gefunden, Treiber will installiert
werden. Also das USB-Device wieder raus und an die sonst übliche Buchse
angeschlossen, alles paletti.
Ich staune nicht schlecht, denn mein PC hat eine Menge USB-Buchsen.
Muss man ein USB-Device an jeder Buchse installieren?
Oliver
Oliver K. schrieb:> Also das USB-Device wieder raus
Und wenn du es drinlässt und die Installation laufen lässt, geht dann
der PC kaputt?
Wenn nicht ist alles ok oder sogar besser - dein Device wird ja
wiedererkannt, soweit man das deinen Angaben entnehmen kann. Viele haben
eher Probleme damit dass sie 2 Devices an wechselnden USB-Buchsen nicht
unterscheiden können.
Georg
Rainer S. schrieb:> Je Nachdem was drauf ist wird es nur für den einen Port installiert.
Interessant. Dachte bisher, eine USB-Buchse ist wie die andere. So wie
die Steckdosen in einer Wohnung, überall kommen 230V raus.
Oliver K. schrieb:> Interessant. Dachte bisher, eine USB-Buchse ist wie die andere. So wie> die Steckdosen in einer Wohnung, überall kommen 230V raus.
Ist auch so.
Nur dein geheimnisvolles USB-Device ist die Ursache.
Georg schrieb:> Und wenn du es drinlässt und die Installation laufen lässt, geht dann> der PC kaputt?
Nö, aber das System steht, weil ein Assistent für die Installation neuer
Hardware erscheint und von mir Sachen wissen will, die er selber nicht
weiß. Das ist für manchen User gleichbedeutend mit PC kaputt.
Oliver K. schrieb:> Ich staune nicht schlecht, denn mein PC hat eine Menge USB-Buchsen.> Muss man ein USB-Device an jeder Buchse installieren?
Das ist kein generelles USB-Problem, sondern eine Eigenheit von Windows.
War dort schon immer so. Mich würde auch mal interessieren, wie die den
USB-Stack so verkorkst haben, dass das nötig ist. Sei froh, dass man
nicht wie früher nach so einer Aktion erstmal rebooten muss.
Ist bei Windows nicht immer so, sondern nur bei Devices ohne
Seriennummer.
Z.B. mein SanDisk USB-Stick wird an jeder Buchse ohne
Treiberinstallation gefunden, während viele billige Sticks jedesmal eine
Treiberinstallation erfordern.
michael_ schrieb:> Mit billig oder WIN hat es nichts zu tun.> Mein Laserdrucker war bestimmt nicht billig.
Und der macht das nicht nur bei Windows, sondern bei allen
Betriebssystemen?
Rolf M. schrieb:> sondern eine Eigenheit von Windows.> War dort schon immer so. Mich würde auch mal interessieren, wie die den> USB-Stack so verkorkst haben, dass das nötig ist.
Ich weiß nicht, wie dein Betriebssystem Geräte ohne Seriennummer
auseinanderhält, aber bei Windows ist das meines Erachtens völlig
einwandfrei gelöst.
Steckst du beispielsweise einen "USB-zu-seriell-Wandler" mit
Seriennnummer an, kannst du alle USB-Ports durchprobieren, es wird nur
einmal eine Treiberinstallation durchgeführt und an jedem Port wird
derselbe COM-Port erreichbar sein.
Hast du hingegen einen ohne Seriennummer, hast du an jedem USB-Port auch
einen neuen COM-Port.
Wie macht dein Betriebssystem das? (Ich nehme an Linux?) Fängt das nach
jedem Reboot wieder bei ttyUSB0? Das fände ich jedenfalls schlechter...
Rolf M. schrieb:> Und der macht das nicht nur bei Windows, sondern bei allen> Betriebssystemen?
Weiß ich nicht.
Nutze Linux nur sporadisch und schließe den da auch nur selten an.
Aber eigentlich meine ganzen älteren Tintenstrahler, Fotodrucker,
Dymo-Dr., Scanner wollen an jedem Eingang neu installiert werden.
Geht aber automatisch.
Michael schrieb:> Rolf M. schrieb:>> sondern eine Eigenheit von Windows.>> War dort schon immer so. Mich würde auch mal interessieren, wie die den>> USB-Stack so verkorkst haben, dass das nötig ist.>> Ich weiß nicht, wie dein Betriebssystem Geräte ohne Seriennummer> auseinanderhält, aber bei Windows ist das meines Erachtens völlig> einwandfrei gelöst.
Es geht nicht um das Auseinanderhalten von verschiedenen Geräten,
sondern darum, dass für jeden USB-Port, an dem ein Gerät angeschlossen
wird, der Treiber neu installiert werden muss. Was hat das mit der
Zuordnung der Geräte zu tun?
> Wie macht dein Betriebssystem das? (Ich nehme an Linux?) Fängt das nach> jedem Reboot wieder bei ttyUSB0? Das fände ich jedenfalls schlechter...
Ich kann es mir aussuchen über entsprechende udev-Rules.
> Mein Laserdrucker war bestimmt nicht billig.
Mein aktueller Laserdrucker ist vom Schrott, und hat
einen Ethernetprintserver und kann nebenbei auch noch
Postscript.
Ob er USB hat, weiss ich gar nicht.
Vor dem Verschrotten hat man sogar noch eine volle
Tonerkassette eingesetzt.
Qualitaet ist, wie man sieht, nicht an den bezahlten
Preis gebunden.
Rolf M. schrieb:> Es geht nicht um das Auseinanderhalten von verschiedenen Geräten,> sondern darum, dass für jeden USB-Port, an dem ein Gerät angeschlossen> wird, der Treiber neu installiert werden muss. Was hat das mit der> Zuordnung der Geräte zu tun?
Genau das macht Windows ja nicht. Wenn ein Gerät eine Seriennummer hat,
wird genau einmal ein Treiber beim ersten Einstecken installiert. Danach
kannst du es an jeden beliebigen USB-Port stecken, anhand der
Seriennummer (und natürlich VID/PID) erkennt Windows das Gerät wieder
und lädt den bereits installierten Treiber.
Hat das Gerät jedoch keine Seriennummer weiß Windows nicht, dass es sich
um dasselbe Gerät handelt und installiert bei jedem weiteren Port, an
dem du das Gerät ansteckt, den Treiber neu.
Ich wüsste auch nicht, wie man das sinnvoll anders lösen könnte. Eine
einzelne Treiberinstallation reicht bei zwei Geräten (oder einem aber
ununterscheidbaren Gerät) nicht, da jede Treiberinstallation eine andere
Konfiguration haben kann (beim COM-Port beispielsweise die Baudrate).
Michael schrieb:> Rolf M. schrieb:>> Es geht nicht um das Auseinanderhalten von verschiedenen Geräten,>> sondern darum, dass für jeden USB-Port, an dem ein Gerät angeschlossen>> wird, der Treiber neu installiert werden muss. Was hat das mit der>> Zuordnung der Geräte zu tun?>> Genau das macht Windows ja nicht. Wenn ein Gerät eine Seriennummer hat,
Ja, wenn…
> Hat das Gerät jedoch keine Seriennummer weiß Windows nicht, dass es sich> um dasselbe Gerät handelt und installiert bei jedem weiteren Port, an> dem du das Gerät ansteckt, den Treiber neu.
Es könnte aber wissen, dass es sich um den selben Typ von Gerät handelt,
der schon mal angeschlossen war. Man braucht ja in der Regel nicht einen
Treiber pro Gerät, sondern einen pro Gerätetyp.
> Ich wüsste auch nicht, wie man das sinnvoll anders lösen könnte. Eine> einzelne Treiberinstallation reicht bei zwei Geräten (oder einem aber> ununterscheidbaren Gerät) nicht, da jede Treiberinstallation eine andere> Konfiguration haben kann (beim COM-Port beispielsweise die Baudrate).
Warum sollte ein Treiber nicht mehrere Geräte bedienen können, die
unterschiedlich konfiguriert sind?
Gerader Ast schrieb:> Z.B. mein SanDisk USB-Stick wird an jeder Buchse ohne> Treiberinstallation gefunden, während viele billige Sticks jedesmal eine> Treiberinstallation erfordern.
Was ist das für ein merkwürdiges Betriebssystem?
Da staunst du, was?
Unter W98 war das noch so.
Rolf M. schrieb:> Warum sollte ein Treiber nicht mehrere Geräte bedienen können, die> unterschiedlich konfiguriert sind?
Wird ja auch gemacht. Wenn man den Gleichen Drucker mehrmals hat.
Löscht man diese, wird man erst beim letzten gefragt, ob man den Treiber
physisch entfernen möchte.
Es wird auch Unterschiede zwischen Datenspeicher und Geräten wie
Druckern geben.
Datenspeicher brauchen nicht konfiguriert werden.
Bei Druckern u.ä. ist das sogar ein Vorteil.
An einem Port als SW-Drucker und am anderen Anschluß als Farbe.
Rolf M. schrieb:> Warum sollte ein Treiber nicht mehrere Geräte bedienen können, die> unterschiedlich konfiguriert sind?
Der Treiber existiert physisch im Dateisystem auch tatsächlich nur
einmal.
Wenn der fünfmal installiert wird (wegen der fünf USB-Ports) bedeutet
das letztlich nur, dass in der Registry die notwendigen Eintragungen
erzeugt werden.
Nur bei der ersten Installation des Treibers werden tatsächlich Dateien
auf die Festplatte kopiert.
Außerdem ist dieser ganze Vorgang gar nicht so abenteuerlich, wie hier
manche annehmen. Man wechselt den USB-Port, es erscheint "neue Hardware
gefunden", dann irgendwann "das Gerät kann jetzt verwendet werden".
Dieser Vorgang dauert vielleicht zehn Sekunden maximal. Einzig das erste
Vorkommen eines neuen Geräts, für das Windows keinen Treiber mitbringt,
dauert länger, da zunächst online gesucht wird - und erst dann - wenn
dies zu keinem Erfolg führt, belästigt Windows den Anwender mit dem
Dialog in dem man den Pfad zum Installationsverzeichnis angeben soll.
Aber auch hier muss man nur bei einer Mehrdeutigkeit selbst Hand
anlegen. Ist das Treiber-Beschreibungs-File (*.inf) eindeutig, macht
Windows alles selbst. Ist das File nicht eindeutig bekommt man eine
Liste aller Möglichkeiten und muss das richtige Device selbst auswählen.
Ich entwickele seit vielen Jahren USB-Geräte. Wenn die Descriptors okay
sind, gibt es keine Probleme beim Anwender. Meistens sind die USB-Geräte
schrottig implementiert. Selbst "Compound-Devices" mit vielen Interfaces
(HID, CDC, MSD) installiert Windows seit vielen Jahren ohne irgendein
Mucken völlig automatisch.
Probleme kommen meistens durch fehlende Seriennummer, proprietäre
Treiber, fehlende oder ungültige Code-Signatur und schlechte
Implementierung der Standby-Geschichte. Wenn man seinem Device eine
Seriennummer gibt und sich an die Standardgeräteklassen hält, so dass
Windows mit Bordmitteln auskommt, kann gar nichts schief gehen.
Michael schrieb:> Der Treiber existiert physisch im Dateisystem auch tatsächlich nur> einmal.>> Wenn der fünfmal installiert wird (wegen der fünf USB-Ports) bedeutet> das letztlich nur, dass in der Registry die notwendigen Eintragungen> erzeugt werden.
Für Eintragungen in der Registry braucht es 20 Sekunden?
Habe hier zwei verschiedene USB-Geräte der gleichen Geräteklasse
(Datenlogger) vom gleichen Hersteller. Der Hersteller hat insgesamt 6
verschiedene solche USB-Geräte im Programm und einen Treiber für alle
Geräte. In der *.inf Datei findet man die VID/PID von allen 6 Geräten
gelistet. Beim ersten Einstecken von Gerät 1 wird der Treiber geladen
und es rödelt ca. 20 sec. Stecke ich nun an der gleichen Buchse das
Gerät 2 ein, dann rödelt es erneut 20 sec. Nur für Einträge in der
Registry etwas lange, wie ich finde.
Ich habe gerade mal spaßeshalber per Smartphone-Timer nachgemessen:
Eine 0815-China-Webcam und ein ft232r-Adapter sind bei mir hier nach
Umstecken in einen anderen Port jeweils binnen 2s verwendbar.
Damit hätte ich ehrlich gesagt nicht gerechnet, gefühlt kam mir das auch
immer recht langsam vor.
Könnte ggf. dem geschuldet sein, dass die Anzeige der "...ist
eingerichtet und kann verwendet werden"-Meldung der Realität teilweise
sogar mehr als 10 Sekunden hinterher hängt - Ich vermute fast das
Windows die aus irgendwelchen Gründen absichtlich verzögert ausgibt.
Ein zuvor noch nicht angeschlossen gewesener
"RD9700"-USB-Ethernet-Adapter war nach knapp 4s einsatzbereit (wenn ich
vorheriges googlen nach einem passenden Treiber nicht mitzähle -
Verflucht seine die Hersteller, die ihre Treiber nicht per Windows
Update verfügbar machen. Mitgezählt ist allerdings die
Treiber-Vorinstallation per dpinst)
Umstecken in anderen Port dann erneut fast genau 2s bis der
Netzwerkadapter auftauchte und anfing per DHCP eine IP zu beziehen.
Andere USB-Geräte habe ich gerade leider nicht zum Testen zur Hand.
Könnte mir aber gut vorstellen, das sehr lange Initialisierungszeiten
womöglich an den jeweiligen Treibern selbst liegen könnten.
(Getestet unter Windows 10 (19042, x64) auf Ryzen 5 1600X mit Samsung
970 EVO SSD)
Gerader Ast schrieb:> Ist bei Windows nicht immer so, sondern nur bei Devices ohne> Seriennummer.
Wenn man mehere Devices des gleichen Typs hat, dann passiert das auch
bei Seriennummern wieder, weil für jede Seriennummer dann ein Eintrag
angelegt wird.
Es bleibt dabei: Die USB-Implementierung auf Windows ist krank. Es muss
absolut nichts installiert oder gespeichert werden, denn USB-Devices
tragen die Informationen welcher Treiber zu ihnen gehört in sich. Linux
und MacOS zeigen auch, dass es richtig geht.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang