Forum: PC-Programmierung USB Treiber wird nicht erkannt


von USB123 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

auf einen Mikrocontroller habe ich die USB CDC Klasse als Device 
implementiert und über USB an meinen PC angeschlossen.
Als Treiber habe ich ein .inf File von Controllerhersteller installiert.
Das hat soweit auch alles funktioniert und mein Device wird erkannt und 
kann über einen irutal Com Port mit dem PC kommunizieren.
Da die angeschlossenen Controller unterschiediche Seriennummern haben, 
wird jedes Mal ein neuer Com Port für erstellt, sobald ich einen neuen 
Controller anschließe. Um das Problem zu umgehen habe ich folgenden 
Eintrag zur Registry hinzugefügt:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags]
"IgnoreHWSerNum123E0006"=hex:01

Dieser passt zur Vendor und und Produkt ID vom USB CDC Device.

Nachdem ich den Eintrag einzugefügt habe, habe ich folgendes Problem:

Schließe ich den Controller an einen USB Port an meinem PC an, wird er 
nicht richtig erkannt. Siehe hierzu auch den beigefügten Screenshot.
USB_CDC verwendet den .inf Treiber vom Controllerhersteller und meldet 
sich an COM 7 aber USB_CDC_DATA bleibt übrig und dafür wird kein Treiber 
gefunden. Schließe ich das Device an einen anderen freien USB Anschluss 
an meinem PC an, wird sofort der .inf Treiber verwendet und alles 
funktioniert einwandfrei. Siehe hierzu den zweiten Screenshot.

Hat jemand eine Idee woran das liegen könnte?

von Hans (Gast)


Lesenswert?

Schau mal unter Eigenschaften von USB_CDC_DATA mit dem gelben 
Ausrufezeichen, was das Problem ist.

Ebenfalls hilfreich wäre die Hardware-ID und Geräteinstanz-ID von 
USB_CDC_DATA und "MCB1700 USB Vcom Port" im Gut- und Schlechtfall, sowie 
das INF-File, das Du benutzt.

Außerdem sollten in C:\Windows\INF\setupapi.dev.log mehr Informationen 
stehen. Am besten löscht Du die Datei, schließt das Gerät an und schaust 
Dir dann die Meldungen an bzw. postet sie hier.

von USB123 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Hans,

die setupapi.dev.log Datei ist nach dem Löschen nich wieder hergestellt 
worden. Ich habe mehrmals versucht eine neue zu erstellen, indem ich den 
USB Stecker an- wieder abgezogen habe.

Die Problembeschreibung von USB_CDC_DATA sowei das .inf File habe ich in 
den Anhang mitgepackt.

Vielen Dank für die Hilfe

von Stefan F. (Gast)


Lesenswert?

> Da die angeschlossenen Controller unterschiediche Seriennummern haben,
> wird jedes Mal ein neuer Com Port für erstellt

Was leider nicht immer so war. Ich bin sehr froh darüber, dass Microsoft 
dieses Feature inzwischen nachgereicht hat.

Ich hoffe du hast einen gut durchdachten Grund, dies zu umgehen!?

von USB123 (Gast)


Lesenswert?

Ja, weil andernfalls irgendwann die verfügbaren Com Ports zu Ende sind 
und es sonst ein größerer Aufwand ist verschiedene Programme 
automatisiert zu starten, wenn sich immer der Com Port der Applikation 
ändert.

von USB123 (Gast)


Lesenswert?

Fehler gefunden.
Der Registry Eintrag war nicht vollständig.
Es war nur die Vendor und Product ID angegeben. Es hat noch die Revision 
ID
gefehlt.

von USB123 (Gast)


Lesenswert?

Doch nicht, der Registry Eintrag hat nur leider nicht gewirkt. Hat sich 
nichts geändert.

von Hans (Gast)


Lesenswert?

Was passiert denn, wenn Du den Treiber für USB_CDC_DATA aktualisierst, 
wie es in dem Screenshot steht? Sprich, auf "Treiber aktualisieren" 
klicken und auf den Ordner zeigen, in dem das Inf-File liegt.

Hier ist noch ein anderer Registry-Eintrag beschrieben, den Du probieren 
könntest:
https://msdn.microsoft.com/en-us/library/windows/hardware/jj649944(v=vs.85).aspx

Dort kommt zuerst Vendor/Device/Revision-ID als eigener Registry-Key und 
darunter der "IgnoreHWSerNum"-Eintrag ohne angehängte Vendor/Device-ID.

Ob der Eintrag wirkt, kannst Du an der Device-Instance-ID (auf Deutsch 
vermutlich "Geräteinstanz-ID" o.ä.) sehen. Die steht unter Gerätemanager 
-> Eigenschaften des Geräts -> Details in der Auswahlliste. Sie begint 
mit "USB\VID_123e&PID_0006" und endet entweder mit der Seriennummer oder 
einem vom Bustreiber generierten String à la "6&1b8ff026&0&6", der 
abhängig vom USB-Port ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.