mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB-Name ändern bzw. zwei identische USB-Geräte steuern?


Autor: Thomas J. (elektrotechniknewbie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin neu hier (freundliches Hallo in die Runde) und werfe gleich 
einmal eine für mich extrem schwere Frage und Wunsch nach Infos in den 
Raum.

Die Suchfunktion habe ich natürlich benutzt und auch bei Google mehrere 
Wochen und über etliche Monate ab und an gesucht. Da ich als Laie die 
Fachterminologie nicht kenne, habe ich dementsprechend nichts gefunden.
Als Laie weiß ich auch nicht genau, wo ich da ohne Fachbegriffe suchen 
muss.
Hier im Forum ist es schon sehr speziell, aber vielleicht ist es genau 
der Ort, der mir Hilfe bieten kann. Zwecks "Kategorie" und "Forum" hoffe 
ich, dass ich mit meiner Frage hier richtig bin. Irgendwie scheint das 
Thema in viele Kategorien zu passen.

Ich bin interessiert an Technik, Elektrik, Elektronik usw. und kann als 
sogenannter "Hausmann" hier und da eine Lampe befestigen, 
Netzzuleitungen konfigurieren & Stecker/Kupplung anbringen oder hier und 
da kleinere Lötarbeiten durchführen. Etwas "Basiswissen" für den 
Alltagsgebrauch ist vorhanden, aber das war es dann auch schon.

So, nun zur (speziellen) Frage:
Hobbymäßig interessiere ich mich für das Musikmachen und Mixen.
Insofern habe ich ein paar Synthesizer und eine Unmenge an 
USB-Controllern.
Es geht um ein USB-Interface bzw. die Grundlagen eines USB-Controllers.

Als LAie ist mir nicht ganz klar, warum man manch identische Geräte an 
den PC stecken kann und dieser einfach "neue" Namen vergibt bzw. 
angesteckte Geräte selbst fortlaufend nummeriert oder identische Namen 
möglich sind, aber dies bei anderen Geräten missachtet wird. Insofern 
möchte ich nicht nur das Problem gelöst haben, sondern auch das "Warum?" 
verstehen.

Beispiel:
Habe ich z.B. einen USB-HUB und stecke dort z.B. 10x einen Intenso USB 
Stick ein, so erscheinen alle brav (Name: Intenso) im Windows Explorer.
Im Explorer und auch in anderen Programmen kann ich einzeln auf die 
Sticks zugreifen.

Nun interessiert mich, auch wenn "vermeintlich" der gleiche Name stets 
erscheint, wie das intern mit den USB-Controllern gehandhabt wird?

Problem:
Stecke ich z.B. Musikgeräte, Midi-Keyboards usw. per USB an, dann kann 
ich dummerweise immer nur "ein" GErät ansteuern. Ich möchte aber gerne 
mehrere identische Geräte -wie dies bei dem USB Stick der Fall ist- 
anstecken und unterschiedlich benutzen. Nun hatte ich mir als Laie 
gedacht, da es ja bei unterschiedlichen Geräten geht, dass man da evtl., 
wenn der Hersteller beim USB irgendetwas festgelegt oder eingestellt 
hat, etwas selbst ändern kann, sodass beide Geräte erkannt und auch 
benutzt werden können.

Meine Zusatzfrage:
Wo wird der Name vom USB-Gerät "wie" festgelegt? Hex?
Kann man das "einfach" ändern bzw. ist Hardware vonnöten oder gibt es 
eine Software, die USB Geräte zwar nicht manipuliert, aber eine 
ID/NAmensänderung möglich macht?

Das mag sich jetzt komisch lesen, aber mich interessiert nicht nur der 
Hintergrund bzw. warum dies bei manchen Geräten geht und bei anderen 
nicht, sondern hat auch einen praktischen Nutzen für mich.

Wenn ich jetzt z.B. 4x das gleiche Midi-Keyboard (1x Traktor, 1x Laser, 
1x DMX, 1x Scanner) benutzen möchte, geht das nicht. Auch wenn ich z.B. 
mehrere Akai APC anstecke, ist immer ein Gerät blockiert.
Nutze ich unterschiedliche Marken, Hersteller usw., dann geht das 
wunderbar.

Geld spielt jetzt nicht so die große Rolle, aber ich würde das schon 
selbst zerlegen und lösen.

Ist mein Wunsch ein Ding der Unmöglichkeit? Geht das so "einfach"?
Wo steht denn die ID? Kann man das nicht einfach per Software ändern 
bzw. eine andere ID/einen anderen Hersteller vorgaukeln?


Vielen Dank & Gruß

Thomas


Nachtrag:
Also so, dass ich z.B. 4x das gleiche Midi-Keyboard anstecke, aber es 4x 
eigenständig separat erkannt und nutzbar wird. Z.B. Akai 001, Akai 002, 
Akai 003, Akai 004 oder so. Das wäre genial.

: Bearbeitet durch User
Autor: Stefanus F. (stefanus)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Es gab früher mal Windows Versionen, die Geräte mit gleicher ID und 
gleichem Namen immer wieder durcheinander gebracht haben.

Das ist heute nicht mehr der Fall. Inzwischen wird der physikalische 
Anschluss (auch an Hubs) mit einbezogen. Spätesten nach einem Reboot 
hast du in Zukunft immer die selbe Reihenfolge, solange du nichts 
umsteckst.

Ob deine Software mit mehreren gleichen Geräten klar kommt, ist ein 
anderes Thema. An Windows/Linux/Mac OS liegt es jedenfalls nicht.

Wegen dem Umbenennen: Normalerweise melden sich die Geräte mindestens 
mit einer ID Nummer, oft aber auch mit einem Namen am Betriebssystem an.

Der Name kann bei Windows durch eine inf Datei geändert werden. Die 
kannst du aber nicht einfach so editieren, weil ihr Zertifikat sonst 
ungültig wird. Ob man den Namen bei Linux und Mac OS ändern kann, weiß 
ich nicht. Ob deine Programme mit geänderten Namen zurecht kommen ist 
auch wieder ungewiss.

Die ID Nummer ist auf jeden Fall nicht sinnvoll änderbar. Wenn du sie 
änderst, wird das Gerät gar nicht mehr erkannt (bzw. als "Unbekanntes 
Gerät"). Windows findet keinen passenden Treiber und auch die 
Anwendungsprogramme finden ihre Geräte nicht mehr.

: Bearbeitet durch User
Autor: 123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

USB Geräte werden anhand von VID (Venrod ID) und PID (Product ID) 
erkannt. Mit diesen Infos wird der Treiber gesucht.

Weiter definiert USB noch je nach Geräte klasse eine Seriennummer. Beim 
Masstorage (USB Stiks und Co) ist diese Pflicht. Anhand dieser 
Seriennummer kann jetzt ein einzelnes gerät eindeutig identifiziert 
werden. Windows sucht dann nicht mehr nach treibern, kann dann diesem 
Gerät z.B. den letzten bekannten Laufwerksbuchstaben zuweisen (wenn 
dieser frei ist).

Als fallback wird die USB Topologie wie oben beschreiben herangezogen 
(Das gerät das an Port 4 vom USB Hub 2 der an Port 1 des PCs 
angeschlossen ist)
Mann erkennt das daran, das windows die ganze enumeration / treiber 
suchen und installieren von vorne anfängt wenn man das Gerät an einem 
anderen port einsteckt. ( oder wenn die Seriennummer doch nicht 
eindeutig ist )

Das ganze scheint aber auch von den treibern abhängig zu sein ob diese 
mehrere Geräte unterstützen, ...

Zu XP zeiten, ... 2 USB Sticks mit gleicher VID, PID und Seriennummer, 
... egal wo am PC angeschlossen das hat XP mit einem Bluescreen 
quittiert.

gruss

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Wegen dem Umbenennen: Normalerweise melden sich die Geräte mindestens
> mit einer ID Nummer, oft aber auch mit einem Namen am Betriebssystem an.

Neben den bekannten IDs VID und PID haben korrekte USB-Geräte auch eine 
individuelle Seriennummer. Stecke zwei identische USB-COM-Adapter 
wechselweise an den selben USB-Port, und Du bekommst unter Windows 
verschiedene COM-Nummern.

Eine bekannte Ausnahme sind die Chinesen CH340, die haben keine 
individuelle Kennung - da ist jeder China-Arduino immer auf dem gleichen 
COM-Port.

> Der Name kann bei Windows durch eine inf Datei geändert werden. > Die kannst du 
aber nicht einfach so editieren, weil ihr Zertifikat sonst ungültig wird.

Zertifikat ist eine Sache, es aber es macht schon deshalb keinen Sinn, 
weil für Devices gleicher IDs stets der selbe Treiber verwendet wird.

> Ob deine Programme mit geänderten Namen zurecht kommen ist
> auch wieder ungewiss.

Das ist der nächste Punkt. Wenn die Musiksoftware den gleichzeitigen 
Betrieb mehrerer USB-Geräte nicht vorsieht, hat er verloren.

> Die ID Nummer ist auf jeden Fall nicht sinnvoll änderbar.

Kann man schon, wenn man denn kann - Programmiertool für den 
USB-Baustein erforderlich. Wenn man ändert, darf man dann einen eigenen 
Treiber mit angepasster ID bauen, unter Win2000 und XP habe ich sowas 
schon gemacht.

Ist mehr theoretisch, wer das kennt, fragt hier nicht.

Autor: Nautilus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die MIDI-Schnittstelle ist ein eigenständiger Standard.
Diese verwenden die runden DIN Steckverbindungen.
Der MIDI-Standard kann mehrere Geräte adressieren.
Werden Schnittstellenwandler USB - MIDI verwendet, unter Umständen in 
den angeschlossenen Geräten eingebaut, hat das Ansteuerprogramm die 
MIDI-Adressen auf die einzelnen USB Schnittstellenwandler aufzuteilen. 
Hat der Hersteller dieser Schnittstellen beim lizenzieren der USB 
gespart, werden die gleichen ID von mehreren  USB-Schaltkreisen 
verwendet, so dass Windows diese nicht mehr voneinander unterscheiden 
kann.

Darauf deutet hin, dass Geräte unterschiedlicher Hersteller 
funktionieren.

Autor: Rainer R. (Firma: Reusch Elektronik) (reusch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, zumindest unter Windows ist es so, dass Geräte anhand der
- Vendor-ID (Herstellerkennung)
- Produkt-ID
- und Seriennnummer
unterschieden werden.
Zwei gleiche USB-Geräte unterscheiden sich allerdings in der 
Seriennummern. Anhand dieser drei Informationen wird das Gerät 
identifiziert und auch wiedererkannt, egal an welcher USB-Buchse es 
eingesteckt wird.

Erlaubt ist auch der Verzicht auf die Seriennummer. In diesem Fall merkt 
sich Windows die Buchse, an der das Gerät eingesteckt wurde 
(USB-Geräteadresse). Wird das Gerät auf eine andere USB-Buchse 
umgesteckt, installiert es die Treiber für dieses Gerät (und für diese 
Buchse) neu. Auf diese Weise kann Windows immer noch zwischen mehreren 
gleichen Geräten unterscheiden. Allerdings provoziert man jedesmal eine 
Treiberinstallation, wenn eine andere Buchse verwendet wird.

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rainer R. schrieb:
> Wird das Gerät auf eine andere USB-Buchse
> umgesteckt, installiert es die Treiber für dieses Gerät (und für diese
> Buchse) neu. Auf diese Weise kann Windows immer noch zwischen mehreren
> gleichen Geräten unterscheiden. Allerdings provoziert man jedesmal eine
> Treiberinstallation, wenn eine andere Buchse verwendet wird.

Na und?

Beim ersten Mal hat sich Windows die zu VID:PID passende .inf-Datei in 
sein Verzeichnis ..\Windows\inf kopiert, dort aber als OEM??.inf. Unter 
..\drivers hat Windows die zugehörigen .sys gespeichert, mit deren 
originalen Namen.

Kommt nun ein Gerät mit identischen IDs an einen anderen Port, zeigt 
Windows kurz an, es habe neue Hardware gefunden. Es greift aber direkt 
auf die bereits vorhandenen Dateien zu, weder eine Treiber-CD noch eine 
Internetsuche sind notwendig. Es werden auch keine zusaetzlichen Files 
abegelegt, also ist das egal.

Autor: Rainer R. (Firma: Reusch Elektronik) (reusch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich muss man nicht jedes mal eine Treiber-CD einlegen, wenn bei 
einem USB-Gerät ohne Seriennr. die Buchse gewechselt wird. Aber in der 
Registry wird jedes mal ein neues Gerät vermerkt! Die Registry wird also 
mit Geräteeintragungen zugemüllt, was jetzt nicht wirklich dramatisch 
ist. Das ist aber auch mit ein Aspekt, der Windows mit der Zeit etwas 
langsamer werden lässt.

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rainer R. schrieb:
> Die Registry wird also mit Geräteeintragungen zugemüllt, was jetzt nicht 
wirklich dramatisch ist.

Ersetze zugemüllt durch erweitert.

> Das ist aber auch mit ein Aspekt, der Windows mit der Zeit etwas
> langsamer werden lässt.

Ich halte das für ein Märchen, Neudeutsch "urban legend".

Autor: Rainer R. (Firma: Reusch Elektronik) (reusch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, ich denke, man kann schon davon ausgehen, dass ein einzelner 
zusätzlicher Eintrag in der Registry zu keinem Totaleinbruch des Systems 
führt. Es ist vielleicht vielmehr die Masse an Einträgen, die es 
ausmacht. Zumindest bis Windows XP hat eine aufgeblähte Registry schon 
einen Einfluss auf die Boot-Zeit gehabt. Bei den späteren Versionen 
wurde diesbezüglich einiges optimiert, so dass es heute tatsächlich 
keine oder kaum eine praktische Auswirkung haben dürfte.
Aber man müsste vielleicht mal recherchieren oder untersuchen, ob viele 
Einträge von Geräten, die gar nicht existieren, auch auf modernen 
Systemen nicht doch die Boot-Zeit verlängern, schließlich sollte das 
Betriebssystem ja kontrollieren, ob das, was an Geräten vermerkt ist, 
auch tatsächlich vorhanden ist.

Autor: Toxic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moeglicherweise hilft Dir das Programm von Uwe Sieber:

https://www.uwe-sieber.de/usbdlm.html
https://www.uwe-sieber.de/usbdriveinfo.html

Ich selbst verwende dieses Programm um meinen externen USB-Festplatten 
etc.
definierte Laufwerksbuchstaben zu vergeben.Dies kann man ueber 
verschiedene
Parameter tun: z.B. HDD-Groesse,IDnummern etc.
Inwiefern es fuer Dich einen Nutzen hat,kann ich so nicht sagen.
Das Programm ist einfach,trotzdem man um etwas lesen nicht herum....

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die vielfachen Einträge im Gerätemanager sind bei der Zuordnung 
virtueller COM-Ports manchmal nervig, weil nicht jedes Programm 
zweistellige COMx Nummern unterstützt. Manche Uralt-Programme gehen 
sogar nur bis COM4 (habe ich zum Glück nicht mehr).

: Bearbeitet durch User

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.