Hallo,
habe hier ein USB-Device, dessen Treiber sich vor einem Jahr problemlos
installieren ließ. Von dem USB-Device habe ich dann ein weiteres als
Ersatzteil nachbestellt, kann aber nicht mehr sicher sagen, ob ich den
Treiber für dieses 2. Device nochmals installiert habe. Ich meine nicht.
Gestern nun das USB-Device einige Mal benutzt, heute nach dem Sytemstart
ist das USB-Device dem System nicht mehr bekannt. "Neue Hardware
gefunden" muss ich lesen, ein Treiber will installiert werden. Mehrere
Installationsversuche schlagen fehl, da auf dem System scheínbar kein
Treiber vorhanden ist.
Also das Ersatz-Device angeschlossen, neue Hardware wurde gefunden, ein
Treiber will installiert werden. Also einen neuen Installationsversuch
gestartet und diesmal klappt die Installation und das Device
funktioniert.
Dann das "alte" Device angeschlossen, wieder wird eine neue Hardware
gefunden. Also wieder einen Installationsversuch gestartet, die
Installation schlägt erneut fehl, kein Treiber gefunden.
Nun stehe ich vor einem Rätsel. Werden die beiden gleichen Devices als
unterschiedliche Devices behandelt und benötigen jeweils
unterschiedliche Treiber? Wobei es nur einen Treiber gibt und das ganze
gestern abend noch funktioniert hat.
Im Gerätemanager finde ich unter Geräteinstanzerkennung schon mal
unterschiedlichen Zahlensalat. Ebenso unter Hardwarekennung: Hier fällt
allerdings in der 1. Zeile ein unterschiedlicher Zusatz auf:
...&Rev_0000 bei dem Device, welches erkannt wird und ...&Rev_:001 bei
dem Device, welches nicht erkannt wird.
Was ist wo angebrannt?
Oliver
Sofern das Gerät keine Standard USB-Klasse nutzt, für die Windows
bereits einen Treiber mitbringt muss der Inhalt der .inf-Datei eines
Treibers die Hardware-ID matchen.
Ob die .inf dabei nur Product-ID und Vendor-ID matched oder auch z.B.
eine Revision* berücksichtigt liegt im Ermessen des Treiberherstellers.
D.h. da muss ggf. mal ein Blick in die .inf des Treibers geworfen
werden.
(*entspricht dem "bcdDevice" / "Device Release Number" Feld des
Device-Descriptors des USB-Geräts)
Bei PCI-Devices gibt es u.a. auch noch eine Subsystem-ID.
Die kann z.B. verhindern, das man die offiziellen
nvidia/AMD-Grafikkartentreiber installieren kann, wenn der
Systemhersteller eine eigene Subsystem-ID verwendet hat.
Das macht der Systemhersteller teils unnötig und ärgert den Endkunden
damit ggf, weil er dadurch ggf. die neuesten Treiber nie nutzen kann,
falls der Systemhersteller sie nicht angepasst bereit stellt.
Teils aber auch absichtlich weil er die Grafikkarte über einen
angepassten non-Standard-Treiber speziell konfiguriert und wo bei
Verwendung des Standard-Treibers des GPU-Herstellers dann ggf Probleme
auftreten könnten.
Diese Praxis nimmt zum Glück inzwischen eher ab...
Bernd H. schrieb:> D.h. da muss ggf. mal ein Blick in die .inf des Treibers geworfen> werden.
Können vor Lachen, denn den Treiber scheint die zum USB-Device gehörende
Software mitzuringen und bei der Installation irgendwo zu verstecken.
Erst danach funktioniert "Software automatisch installieren
(empfohlen)". Anderenfalls kann man lesen: "Die Hardware wurde nicht
installiert, weil die erforderliche Software nicht gefunden wurde".
Weiß der Teufel, wie das funktioniert.
Wer findet eigentlich was und wo?
Windows selbst schaut in der Regel nach in:
1) C:\WINDOWS\inf
2) C:\WINDOWS\System32\DriverStore\FileRepository
3) Windows-Update
Setup-Programme entpacken heutzutage in der Regel die .inf und sonstige
Treiberdateien in irgendeinen Temp-Ordner zusammen mit Microsofts
"dpinst" ("Driver Package Installer"), welches dann vom Setup-Programm
aufgerufen wird und den Treiber regulär installiert (wobei er in der
Regel nach C:\Windows\inf bzw. C:\Windows\system32\drivers kopiert wird.
Die relevante inf könnte also ggf. in C:\Windows\inf\ zu finden sein,
meist eine der oem- .inf-Dateien)
Nach Start des Setup stehen die Chancen auch gut, das man die
Treiberdateien irgendwo in einem der Temp-Ordner finden kann.
Ich würde allerdings erstmal beim Hersteller vorbei schauen oder den
kontaktieren. Oder nach der Hardware-ID googlen, vllt. findet sich ein
aktueller Treiber da direkt.
Bernd H. schrieb:> Windows selbst schaut in der Regel nach in:> 1) C:\WINDOWS\inf> 2) C:\WINDOWS\System32\DriverStore\FileRepository> 3) Windows-Update
Wenn ich einen Treiber habe, schaut Windows in dem Verzeichnis nach, was
ich manuell vorgebe. Das ist zwar alles bunter und versteckter geworden,
aber hat sich von Windows 2000 bis WIndows 10 nicht geändert.
Oliver K. schrieb:> Können vor Lachen
Du Pfeife kannst noch nicht einmal Deine hochgeheime USB-Device und
deren VID:PID benennen, willst Du Hilfe oder trollen?
Meine Frau hat auch ein Headset, das in der letzten Woche nicht mehr
erkannt wurde ("unbekanntes Gerät"). Es ist ein Plantronics Gamecom 881,
das vor einigen Wochen noch funktioniert hat - jetzt nicht mehr, an zwei
PCs getestet.
Da es schon etwas älter ist, kann es sein, dass es schon entsorgt wurde
- falls nicht, sehe ich heute Abend mal nach, welche VID/PID eingetragen
wird.
Klaus P. schrieb:> Da es schon etwas älter ist, kann es sein, dass es schon entsorgt wurde> - falls nicht, sehe ich heute Abend mal nach, welche VID/PID eingetragen> wird.
Ist noch nicht entsorgt, liegt sogar noch hier...
Meldung im Gerätemanager: Unbekanntes USB-Gerät (Fehler beim Anfordern
einer Gerätebeschreibung)
Unter Details:
Gerätebeschreibung: Unbekanntes USB-Gerät (Fehler beim Anfordern einer
Gerätebeschreibung)
Hardware-IDs: USB\DEVICE_DESCRIPTOR_FAILURE
Geräteinstanzpfad: USB\VID_0000&PID_0002\6&347C8914&0&12
Es kann natürlich sein, dass der USB-Adapter wirklich plötzlich defekt
ist. Und weil es wie gesagt schon älter ist, wird es wohl ersetzt.
Windows kommt mit USB nicht so gut klar. Darum testen wir beim
Entwickeln von USB-Geräten auch lieber mit MacOS.
Hauptschwachpunkt ist die Registry. Da schreibt sich Windows im Laufe
der Zeit immer mehr Unsinn über die Geräte rein. Irgendwann passieren
dann solche Dinge.
Die Treiber sind eigentlich längst installiert. Wenn man dann das Gerät
anschließt, macht sich Windows einen Eintrag in der Registry, dass für
Gerät X am Port Y der Treiber Z verwendet wird. Steckt man das Gerät in
einen anderen Port, passiert das noch mal. Hat man Geräte mit
Seriennummern, dann wird für jedes Gerät an jedem Port so ein Eintrag
erzeugt.
Das ist völlig überflüssig, weil die notwendige Information jederzeit
aus dem USB-Gerät ausgelesen werden kann, aber so ist Windows nun mal.
Meistens wird man das Problem so los:
Gerät anschließen, im Gerätemanager das nicht funktionierende Gerät
löschen. Zur Sicherheit einen Neustart machen und dann noch mal
Anschließen und gucken, ob es tut.
Falls das nicht hilft, muss man meistens in die Registry gehen und dort
direkt die EInträge löschen.
Klaus P. schrieb:> Geräteinstanzpfad: USB\VID_0000&PID_0002\6&347C8914&0&12
Vendor ID 0 ist nicht zulässig. Da beschwert Windows sich zu Recht.
Irdendwie sind da ein paar Bytes abhanden gekommen.
fchk
Vielleicht mal mit "USBDeview" die Liste der am PC hinterlegten
USB-Geräte etwas aufräumen und insbesondere das seltsame Gerät
'rauskicken. Beim nächsten Anstöpseln müsste dann erneut nach den
Treibern gesucht werden - wenn das Gerät selbst noch weiß, wer es ist...
>DEVICE_DESCRIPTOR_FAILURE
könnte in der Tat ein Defekt sein. Der USB Device-Descriptor war wohl
nicht sauber aus dem Gerät lesbar.
Checken könnte man da:
1) Mit anderem Rechner probieren
2) Anderen USB-Port probieren oder ggf. mit zwischen geschaltetem
USB-Hub
3) Kabel auf Wackelkontakte prüfen
4) Quarz im Gerät checken
5) Beim USB-Device ankommende Spannung prüfen
Matthias L. schrieb:> Beim nächsten Anstöpseln müsste dann erneut nach den> Treibern gesucht werden - wenn das Gerät selbst noch weiß, wer es ist...
Genau das war hier das Problem. Bis auf einen kleinen Unterschied: Das
Gerät hat jetzt eine andere Vid/Pid, gibt sich also als ein anderes
Device aus. Dem "neuen" Device kann Windows hier keinen Treiber
zuordnen.
Also in der *.inf-Datei des mittlerweile gefundenen Treibers die neue
Identität eingetragen, der Treiber wurde nun gefunden und erneut
installiert. Das USB-Device funzt wieder. Keine Ahnung, wer das
USB-Device umprogrammiert hat, und keine Ahnung, was der Kinderkram
soll. Möglicherweise ist die Nutzungsdauer des Devices auf 1 Jahr bzw. 2
Stunden begrenzt.
War mir bis jetzt auch nicht bekannt, dass man über das USB-Kabel die
Vid/Pid eines USB-Device ändern kann. Oder den Ast absägen, auf dem man
sitzt. Es gibt wohl nichts, was es nicht gibt.
Oliver K. schrieb:> War mir bis jetzt auch nicht bekannt, dass man über das USB-Kabel die> Vid/Pid eines USB-Device ändern kann.
Nur wenn das Kabel oder Buchse oder das Device defekt ist. Die VID 0000
ist ziemlich sicher fehlerhaft ausgelesen.
Wir wissen ja immer noch nicht, was für ein geheimes Device vorliegt.
Viele USB Devices lassen sich mit externem oder internem EEPROM auf
herstellerspezifische VID/PID ändern.
Christian R. schrieb:> Oliver K. schrieb:>> War mir bis jetzt auch nicht bekannt, dass man über das USB-Kabel die>> Vid/Pid eines USB-Device ändern kann.>> Nur wenn das Kabel oder Buchse oder das Device defekt ist. Die VID 0000> ist ziemlich sicher fehlerhaft ausgelesen.
Du verwechselst was, ICH habe keine 0000 ausgelesen.
Und an dem Device hier ist auch nichts defekt.
Matthias S. schrieb:> Viele USB Devices lassen sich mit externem oder internem EEPROM auf> herstellerspezifische VID/PID ändern.
Damit ist meine Frage eigentlich beantwortet. Bleibt die Frage, ob die
Umprogrammierung der VID/PID durch einen Systemfehler erfolgte, oder
gewollt war.
Björn W. schrieb:> Eventuell ist das geheime "Device" ja eine FTDI-Fälschung
Nö, falsche Party.
Übrigens aufpassen, was einem der Gerätemanager so alles mitteilt. Der
scheint nicht immer das USB-Device direkt auszulesen, sondern der schaut
wohl auch mal nur in irgendeine Tabelle.
Denn: Stecke ich das USB-Device ein, wird mir die neue (unrichtige)
Identität angezeigt. Läuft jedoch die zum USB-Device gehörende Software,
so wird mir die ursprüngliche (richtige) Identität angezeigt. Das
Ersatz-Device (gleiches Gerät) wird hingegen immer mit der gleichen
Identität angezeigt.
Hängt wohl damit zusammen, dass ich den Treiber mit modifzierter
*.Inf-Datei ein zweites Mal installieren musste. Oder auch nicht. Das
ist ja das tolle an der Computerei, man weiß nicht wirklich, was abgeht.