User Tools

Site Tools


lenz-static-linux-de

Lenz


Statische Methode (Treiber beim booten laden)

Diese Methode wurde mit openSUSE 11.1 erfolgreich getestet.

Für die Kommunikation mit dem LI-USB ist es erforderlich, die Datei rocrail.ini anzupassen. Nach der Installation von Rocrail gibt es aber noch keine solche Datei. Wir starten daher zunächst den Rocrail Server. Dadurch wird ein Ordner rocrail in dem Home-Verzeichnis des Benutzers angelegt. Dann starten wir den Rocview Client, wo wir in dem "Datei"-Menü links oben den Eintrag "Rocrail Eigenschaften …" auswählen. Dadurch öffnet sich ein Dialogfenster. Wir lassen uns nicht durch die Vielzahl der Register und Optionen verwirren, sondern schliessen das Fenster durch drücken auf "OK". Dadurch wird im Verzeichnis "rocrail" die Datei "rocrail.ini" angelegt. Jetzt schliessen wir Rocrail mit "Datei" → "Shutdown Rocrail und beenden".

Nachdem wir nun eine Datei "rocrail.ini" haben, können wir einen Editor benutzen, um die folgende Zeile zu ersetzen:

<digint lib="virtual" iid="vcs-1" stress="false" libpath="/opt/rocrail"/>

durch diese neue Zeile:

<digint iid="lenz-1" lib="lenz" sublib="usb" device="/dev/ttyUSB0"/>

Möglicherweise muss /dev/ttyUSB0 noch angepasst werden, falls wir noch andere USB-Geräte angeschlossen haben. Dies können wir aber jetzt noch nicht testen und lassen es daher vorerst unverändert.

In dem Interface benutzt Lenz einen Chip von Future Technology Devices International, Ltd. Dieser arbeitet mit dem Treiber ftdi_sio. Leider kennt der Kernel (2.6.27) die Produkt- und Herstellerkennung (product-ID und vendor-ID) von Lenz aber nicht und lädt daher auch den Treiber nicht. Basierend auf http://forums.opensuse.org/hardware/395149-ftdi-usb-serial-adapter-unknown-vendor-device-id.html machen wir Folgendes:

Wir verwenden einen Editor, um die Datei /etc/sysconfig/kernel so anzupassen, dass der Treiber ftdi_sio jedesmal beim booten geladen wird. Wir müssen uns dazu als root anmelden oder sudo benutzen. Die einzige erforderliche Änderung an der Datei ist, ftdi_sio zwischen "" so einzufügen wie in dem folgenden Auszug aus /etc/sysconfig/kernel gezeigt.

## Type:		string
## ServiceRestart:	boot.loadmodules
#
# This variable contains the list of modules to be loaded
# once the main filesystem is active
# You will find a few default modules for hardware which
# can not be detected automatically.
#
MODULES_LOADED_ON_BOOT="ftdi_sio"

Nun müssen wir dem Treiber noch die Produkt- und Herstellerkennung (product-ID und vendor-ID) von Lenz mitteilen. Dies geschieht durch einen Eintrag in /etc/modprobe.conf.local. Auch dazu benutzen wir als root einen Editor. Die Datei /etc/modprobe.conf.local sieht dann z.B. so aus:

#
# please add local extensions to this file
#
options ftdi_sio vendor=0x0403 product=0xd780

Die in dem Beispiel eingetragenen Produkt- und Herstellerkennungen sollten für alle Lenz LI-USB gelten.

Möglicherweise hat aber Lenz aber auch einige Geräte mit den Werten vendor=0x1111 und product=0x1234 ausgeliefert. Um dies zu überprüfen, schliessen wir die LI-USB an und geben in einer Konsole lsusb ein, z.B.:

hans@Taurus:/> lsusb
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 004: ID 0403:d780 Future Technology Devices International, Ltd
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 046a:0050 Cherry GmbH
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 0c4b:0100 Reiner SCT Kartensysteme GmbH cyberJack e-com/pinpad
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
hans@Taurus:/>   

Nun wird das Gerät /dev/ttyUSB0 korrekt angelegt. Allerdings können wir immer noch nicht mit dem Gerät kommunizieren, da es mit Schreib-/Leseberichtigung nur für den Benutzer root und die Gruppe uucp angelegt wird. Wir müssen daher alle Benutzer, die Rocrail verwenden möchten, in die Gruppe uucp eintragen.

Dies können wir z.B. in Yast machen, über "Sicherheit und Benutzer" → "Benutzer und Gruppenverwaltung" → Dopppelklick auf den auszuwählenden Benutzer → Häkchen setzen in dem Kästchen uucp (dazu muss man wahrscheinlich nach unten scrollen, um uucp zu sehen). Dann bestätigen wir zweimal mit OK.

Jetzt:

  • starten wir den PC neu
  • schliessen wir das LI-USB an und schalten die Lenz Geräte alle ein
  • überprüfen wir in dem Verzeichnis /dev ob ttyUSB0 das korrekte Gerät ist. Es könnte auch z.B. ttyUSB1 oder ähnlich sein, falls wir mehrere Geräte am USB angeschlossen haben. In diesem Falll müssen wir rocrail.ini anpassen, um auf das richtige Gerät zu zeigen.
  • starten wir den Rocrail Server
  • starten wir Rocview
  • in dem Menü "Tabellen" wählen wir "Lokomotiven …" und erzeugen eine Lokomotiventabelle
  • die neu eingetragenen Lokomotiven erscheinen nun über der Uhr → Doppelklick auf eine Lokomotive
  • nun dürfen wir nicht vergessen, im Menü "Steuerung" die "Gleisspannung ein" zu schalten
  • und hoffentlich kann's losgehen zu ersten Fahrt !!!!!!
lenz-static-linux-de.txt · Last modified: 2018/11/12 08:56 by 127.0.0.1