Das Problem

Bei einigen Projekten findet ein Arduino Nano als Steuereinheit und Schnittstelle zum PC Verwendung. Der meldet sich beim PC einfach nur als "USB-SERIAL CH340 - COM3" an. Spätestens wenn man eine zweites Gerät mit einem CH340 anschließt, stellt sich die Frage: Wer ist wer? Außerdem erkennt der PC (hier Windows 10) das Gerät nicht immer wieder und weist ihm einen neuen Port zu.

Die Lösung

Die Arduino verwenden meist einen CH340C. Diese lassen sich nicht von anderen unterscheiden. Es gibt jedoch eine Variante, den CH340B. Dieser besitzt ein EEPROM, in dem man eine Seriennummer und Produktbezeichnung ablegen kann. Man kann sogar die Vendor--- und Product-ID ändern, benötigt dann aber einen neuen Treiber. Man kann den bestehenden Treiber mit neuen IDs ausrüsten (bei einem FT232-Treiber habe ich das gemacht).

SENTHILNATHAN THANGAVEL hat das Programm CH340BConfigure geschrieben, mit dem man das EEPROM eines CH340B editieren kann.

Für ein Projekt, bei dem ein Arduino Nano zur Steuerung eingesetzt wird, habe ich den CH340C gegen einen CH340B ausgetauscht und mit einer eindeutigen Seriennummer versehen. In Verbindung mit meiner ComPortExtension ist nun relativ einfach, den richtigen Port auszuwählen:

example

Das Programm von Senthilnathan hat leider einen Bug. Bei einem neuen, unprogrammierten Chip wirft das Programm eine Exception. Außerdem muss man die Standard-Vendor- und Product-ID heraus suchen.

Ich habe das Programm dementsprechend modifiziert und ergänzt:

Write Success

So sieht es dann im USBView aus:

Descriptor

Downloads

Das Visual-Studio-2022-Projekt für das modifizierte Programm  CH340BConfigureMod zum Download. Das ZIP-Archiv enthält auch eine Vorkompilierte EXE-Datei. Diese ist jedoch allein nicht lauffähig. Es wird die Laufzeitumgebung des .Net Framework 4.8 benötigt. Wenn dies nicht bereits installiert ist, wird der Anwender beim Start aufgefordert dies herunter zu laden und zu installieren.