OpenDCC: USB
Einleitung
- Am USB-Bus hat jeder Teilnehmer eine eindeutige VID und PID
(VID: Vendor ID = Herstellerkennung, PID: Product ID, Produktkennung).
Die hier vorgestellten Schaltungen basieren zumeist auf dem FT232RL von FTDI. Für die OpenDCC Projekte wurde mir von FTDI eine eigene PID innerhalb der für FTDI vergebenen VID zugeteilt. Im Linux-Kernel ab Version 2.6.31.2 sind diese VID und PID als bekannte Devices enthalten, damit werden diese Geräte ohne manuelle Einstellungen als serielle Schnittstelle erkannt.
VID und PID bei OpenDCC
| Schaltung | VID | PID | Product Description | xml-file | ept-file |
|---|---|---|---|---|---|
| Zentrale V1.x | 0x0403 | 0xBFD8 | USB-IF OpenDCC V1.2 | OpenDCC_V1.2.xml | OpenDCC_V1.2.ept |
| Schnüffel | 0x0403 | 0xBFD9 | USB-IF DCC Sniffer V1.0 | dcc_sniffer.xml | dcc_sniffer.ept |
| Handregler | 0x0403 | 0xBFDA | USB-IF OpenDCC Throttle V1.0 | MFT_V1.0.xml | MFT_V1.0.ept |
| Basisstation | 0x0403 | 0xBFDB | USB-IF OpenDCC Gateway V1.0 | gateway.xml | gateway.ept |
| Gleisbelegtmelder V1.x | 0x0403 | 0xBFDC | USB-IF OpenDCC GBM V1.0 | gbm1.xml |
Erstinbetriebnahme des USB
- Nach dem Aufbau einer OpenDCC Schaltung muß die USB-Verbindung konfiguriert werden. Dies gliedert sich in zwei Teile:
- Treiber am PC installieren
- FTDI Chip konfigurieren
Konfiguration und Installation der FTDI Treiber
- Diese Anleitung gilt für die Treiberversion 2.06.02 oder aktueller!
- Zur Nutzung der USB Schnittstelle von OpenDCC ist ein VirtuellerComPort (VCP) Treiber nötig.
Dieser emuliert eine serielle Schnittstelle im PC, auf die dann die Steuerungssoftware zugreifen kann.
Der tatsächliche Datenverkehr wird aber über die USB-Verbindung hergestellt. Der virtuelle
COM-Port wird als weiterer COM-Port eingetragen (also z.B. COM5), die Anwendung wird dann auf diesen
COM-Port eingestellt.
Diesen VCP-Treiber (und weitere Informationen) findet man bei FTDI.
Das ZIP-Archiv von FTDI wird es in ein beliebiges Verzeichnis entpackt. Nun müssen die VID und PID für OpenDCC in zwei Dateien dieses Treibers eingetragen werden. Hierzu sind in den Dateien die folgenden kursiven, roten Zeilen zu ergänzen oder die bereits fertig angepassten Dateien (INI Dateien für OpenDCC.zip) zu verwenden.
Ftdibus.inf [FtdiHw] %USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6001 %USB\VID_0403&PID_BFD8.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_BFD8 %USB\VID_0403&PID_BFD9.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_BFD9 %USB\VID_0403&PID_BFDA.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_BFDA %USB\VID_0403&PID_BFDB.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_BFDB %USB\VID_0403&PID_BFDC.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_BFDC [FtdiHw.NTamd64] %USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6001 %USB\VID_0403&PID_BFD8.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_BFD8 %USB\VID_0403&PID_BFD9.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_BFD9 %USB\VID_0403&PID_BFDA.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_BFDA %USB\VID_0403&PID_BFDB.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_BFDB [Strings] Ftdi="FTDI" DESC="CDM Driver Package" DriversDisk="FTDI USB Drivers Disk" USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter" USB\VID_0403&PID_BFD8.DeviceDesc="USB-IF OpenDCC V1.2" USB\VID_0403&PID_BFD9.DeviceDesc="USB-IF DCC Sniffer V1.0" USB\VID_0403&PID_BFDA.DeviceDesc="USB-IF OpenDCC Throttle V1.0" USB\VID_0403&PID_BFDB.DeviceDesc="USB-IF OpenDCC Gateway V1.0" USB\VID_0403&PID_BFDC.DeviceDesc="USB-IF OpenDCC GBM V1.0" SvcDesc="USB Serial Converter Driver" ClassName="USB" [FtdiHw] %VID_0403&PID_6001.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_6001 %VID_0403&PID_6010.DeviceDesc%=FtdiPort2232.NT,FTDIBUS\COMPORT&VID_0403&PID_6010 %VID_0403&PID_6011.DeviceDesc%=FtdiPort2232.NT,FTDIBUS\COMPORT&VID_0403&PID_6011 %VID_0403&PID_BFD8.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_BFD8 %VID_0403&PID_BFD9.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_BFD9 %VID_0403&PID_BFDA.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_BFDA %VID_0403&PID_BFDB.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_BFDB %VID_0403&PID_BFDC.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_BFDC [FtdiHw.NTamd64] %VID_0403&PID_6001.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001 %VID_0403&PID_6010.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6010 %VID_0403&PID_6011.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6011 %VID_0403&PID_BFD8.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_BFD8 %VID_0403&PID_BFD9.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_BFD9 %VID_0403&PID_BFDA.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_BFDA %VID_0403&PID_BFDB.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_BFDB %VID_0403&PID_BFDC.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_BFDC [Strings] FTDI="FTDI" DESC="CDM Port Driver Package (OpenDCC Mod)" DriversDisk="FTDI USB Drivers Disk" PortsClassName = "Ports (COM & LPT)" VID_0403&PID_6001.DeviceDesc="USB Serial Port" VID_0403&PID_6010.DeviceDesc="USB Serial Port" VID_0403&PID_6011.DeviceDesc="USB Serial Port" VID_0403&PID_BFD8.DeviceDesc="USB-IF OpenDCC V1.2" VID_0403&PID_BFD9.DeviceDesc="USB-IF DCC Sniffer V1.0" VID_0403&PID_BFDA.DeviceDesc="USB-IF OpenDCC Throttle V1.0" VID_0403&PID_BFDB.DeviceDesc="USB-IF OpenDCC Gateway V1.0" VID_0403&PID_BFDC.DeviceDesc="USB-IF OpenDCC GBM V1.0" SvcDesc="USB Serial Port Driver" SerEnum.SvcDesc="Serenum Filter Driver"Die Veränderung der DESC Variablen ist in beiden Dateinen optional, hilft aber bei der Indentifizierung in der Softwareliste.
Da aktuelle Systeme (besonders Vista) bevorzugt zuerst online nach Treibern suchen, empfiehlt es sich den Treiber vor dem ersten Verbinden zu installieren. Als besonders hilfreich erweist sich an dieser Stelle das windowsinterne Driver Installation Framework (DIFx).
Hierfür einfach mal im System nach der Datei DPInst*.exe suchen, in das Verzeichnis kopieren in welchem der Treiber ausgepackt wurde und direkt starten.
Hinweise:
- Sollten die Treiber als ungültig abgewiesen werden, muss DPInst im legacy mode über den Parameter DPInst.exe -lm in der Konsole (cmd) gestartet werden.
- für x64 Systeme muss DPInstx64.exe verwendet werden.
Im Geräte-Manager sollte nun ein neuer serieller Port sowie ein neues USB Device erscheinen. Wenn die Hardware bereits die OpenDCC PID und VID enthält, dann wird das auch angezeigt. Bei neuer Hardware fehlt das noch und man muß das noch konfigurieren.
Konfiguration des USB-Chips
- Damit die Hardware nicht nur als 'irgendein' serieller Port,
sondern als OpenDCC-Baugruppe erkannt wird,
muß man PID und VID in den FTDI Chip hineinschreiben:
-
Mit dem Konfigurationprogramm FT_Prog wird nun die richtige Herstellerkennung und Produktkennung gemäß obiger Tabelle eingetragen. Zur Vereinfachung kann man auch das jeweilige Template (z.B. OpenDCC_V1.2.xml) laden, damit sind alle notwendigen Einstellungen bereits vorgenommen.
Nach dem Eintrag der richtigen Kennung kann man mit 'Cycle Device' ("Lupe") ein Neueinlesen des Busses veranlassen. - Durch Drücken auf das Blitzsymbol werden der USB-Chip und das EEPROM konfiguriert, damit ist dann die richtige Kennung im Chip abgelegt.
- Jetzt abschließend die OpenDCC Baugruppe nochmal vom PC trennen und kurz warten bis Port und Device im Gerätemanager verschwinden.
-
Stellt man nun die Verbindung von
OpenDCC Baugruppe und PC wieder her,
dann sollte die OpenDCC Baugruppe korrekt in der
Deviceübersicht in der Systemsteuerung erscheinen.
Die OpenDCC Zentrale 1 wurde gefunden und wird mittels des VCP-Treibers (=Virtual Com Port) als serielle Schnittstelle (im Bild: COM6) im Gerätemanager angezeigt.
Tipps
- Man kann sich (unter Windows XP) den Device-Manager als Verknüpfung auf den Desktop holen,
dann muß man nicht immer über Arbeitsplatz, rechte Maus, Eigenschaften usw. da hin.
Einfach von devmgmt.msc eine Verknüpfung erstellen.
- Dem FT232R kann man eine Seriennummer mitgeben. Anhand dieser erkennt das Betriebssystem den
Baustein wieder und man bekommt beim Anstecken immer den gleichen COM-Port zugewiesen. Auch mehrere
Boxen lassen sich so unterscheiden. Nähere Informationen hierzu findet man in der
AN123
von FTDI.
Links
- nirsoft.net Analysetool für USB ID's
opendcc_driver_2.08.14_windows_32bit.zip angepasster Treiber für OpenDCC (WinXP 32bit, Stand 04/2011)
opendcc_driver_2.08.14_windows_64bit.zip angepasster Treiber für OpenDCC (Win7 64bit, Stand 04/2011)
FTDI_VCP_INI_for_OpenDCC_2.08.02.zip angepasster Treiber für OpenDCC (WinXP, Stand 09/2010)
FTDI_VCP_INI_for_OpenDCC.zip angepasster Treiber für OpenDCC (WinXP, Stand 2009)
alte Beschreibung der Programmierung (mit MPROG)