===== Installation unter Linux ===== Die aktuellen Distributionen erkennen die OpenDCC-Baugruppen und weisen Namen und Schnittstelle korrekt zu. Für ältere Distribution gibt es einfache Möglichkeiten, den vorhandenen FTIO-Treiber mittels /new auch für die OpenDCC-Baugruppen zuzuweisen. ==== Berechtigung für Benutzer ==== Damit der Zugriff auf die Serielle Schnittstelle möglich ist, muss der Benutzer in der Gruppe "dialout" sein. Um die aktuell zugewiesenen Gruppen abzufragen kann folgendes Kommando verwendet werden: less /etc/group | grep my_user :!: Bitte ''my_user'' mit dem echten Benutzernamen ersetzen. //Falls die Ausgabe von ''less'' nicht terminiert (z.B. mehr Zeilen als auf dem Bildschirm Platz hat) kann man den Befehlt mit ''q'' beenden.// Falls der Benutzer nicht in der ''dialout''-Gruppe ist, kann man mit folgendem Kommando den Benutzer //my_user// der //dialout//-Gruppe hinzufügen: sudo adduser my_user dialout Für Debian: su - adduser my_user dialout Anschliessend muss ein neuer Login (Logout oder Reboot) erfolgen um die geänderten Berechtigungen zu übernehmen. ==== Informationen lesen ==== Wenn der GBMboost angesteckt ist kann man über ein Termial / Konsole weitere Informationen über folgende Kommandos erhalten: * ''ls -la /dev/ttyUSB*'' : zeigt alle seriellen USB-Geräte an. Hier wird auch angezeigt unter welchem //Anschluss// der GBMboost verfügbar ist. * ''lsusb'' : Zeigt Infomartionen über alle angeschlossenen USB-Devices an. Über die ID ''0403:bfdd'' kann der GBMboost mit der OpenDCC-Kennung identifiziert werden.\\ Das IF2 und der GBMboost (mit Standard-Kennung) wird über die ID ''0403:6001'' identifiziert. * ''udevadm monitor'' : Monitoring der Events. Beim Ein- oder Ausstecken des GBMboost werden Statusmeldungen erzeugt in denen man erkennen kann unter welchem ''tty'' der GBMboost angelegt wurde. Über den Befehl ''dmesg'' erhält man noch mehr Informationen wie z.B. die Seriennummer des GBMboost: [ 3913.536190] usb 4-1: new full-speed USB device number 3 using uhci_hcd [ 3913.944113] usb 4-1: New USB device found, idVendor=0403, idProduct=bfdd [ 3913.944123] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 3913.944129] usb 4-1: Product: USB-IF OpenDCC GBMBoost V1.0 [ 3913.944135] usb 4-1: Manufacturer: FTDI [ 3913.944141] usb 4-1: SerialNumber: A9XI8TBD [ 3913.957567] ftdi_sio 4-1:1.0: FTDI USB Serial Device converter detected [ 3913.957746] usb 4-1: Detected FT232RL [ 3913.957754] usb 4-1: Number of endpoints 2 [ 3913.957760] usb 4-1: Endpoint 1 MaxPacketSize 64 [ 3913.957766] usb 4-1: Endpoint 2 MaxPacketSize 64 [ 3913.957772] usb 4-1: Setting MaxPacketSize 64 [ 3913.962229] usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0 ----- ==== Manjaro Linux ==== Unter Manjaro Linux gibt es statt der ''dialout''-Gruppe die ''uucp''-Gruppe. Deshalb muss unter Manjaro Linux (und evtl. Arch Linux?) dieser Befehl verwendet werden: ''sudo usermod -aG uucp xxx'' xxx = Benutzername. ==== Linux Mint ==== Unter Linux Mint hat der User standardmässig keine Berechtigung um auf die serielle Schnittstelle zugreifen zu können. Der Befehl ''ls -la /dev/tty*'' führt zu folgender Ausgabe: ''crw-rw---- 1 root dialout 188, 0 Jul 21 12:55 /dev/ttyUSB0'' Um die Berechtigungen zu setzen, damit der User auf die Schnittstelle zugreifen kann, muss folgendes Kommando (als root, mit sudo) ausgefürt werden:\\ ''sudo chmod a+rw /dev/ttyUSB0'' Anschliessend führt ''ls -la /dev/tty*'' zu folgender Ausgabe: ''crw-rw-rw- 1 root dialout 188, 0 Jul 21 12:58 /dev/ttyUSB0'' ==== Raspbian ==== Unter neuem Raspian pi@raspberrypi:~/Downloads $ uname -a Linux raspberrypi 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux haben die Berechtigungen für den Zugriff auch gefehlt: pi@raspberrypi:~/Downloads $ ls -la /dev/tty* ... crw-rw---- 1 root dialout 204, 64 Sep 2 19:35 /dev/ttyAMA0 ... pi@raspberrypi:~/Downloads $ pi@raspberrypi:~/Downloads $ sudo chmod a+rw /dev/ttyAMA0 pi@raspberrypi:~/Downloads $ pi@raspberrypi:~/Downloads $ ls -la /dev/tty* ... crw-rw-rw- 1 root dialout 204, 64 Sep 2 21:17 /dev/ttyAMA0 ==== Symbolischer Link ==== Soll der GBMboost unter einem //symbolischen Link// statt ''dev/ttyUSB0'' zur Verfügung stehen, kann eine udev-Rule unter ''/etc/udev/rules.d'' angelegt werden. Für diese Aktion werden Superuser-Rechte (''sudo'') benötigt. sudo cd /etc/udev/rules.d touch 90-bidib.rules edit 90-bidib.rules Für Debian: su - cd /etc/udev/rules.d touch 90-bidib.rules edit 90-bidib.rules Für Mint: cd /etc/udev/rules.d sudo touch 90-bidib.rules sudo nano 90-bidib.rules Mit dem ''edit''-Befehl wird ein Editor geöffnet. :!: Falls ''vi'' geöffnet wurde, kann man mit ''i'' in den //Insert//-Modus wechseln um die udev-Rule einzufügen. Mit der ''Esc''-Taste kann der //Insert//-Modus verlassen werden. Mit '':wq'' werden die Anpassungen gespeichert. In meinem Fall habe ich folgende Rule definiert, welche einen symbolischen Link ''/dev/bidib_interface_master'' erzeugt der im BiDiB-Wizard oder anderen Tools (Rocrail) verwendet werden kann. KERNEL=="ttyUSB*" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bfdd", SYMLINK+="bidib_interface_master", GROUP="dialout" Mit ''cat 90-bidib.rules'' kann der Inhalt der Datei angezeigt werden. Um den ''sudo''-Mode zu verlassen muss ''exit'' eingegeben werden. Falls mehr als 1 GBMboost verwendet wird (z.B. zusätzlicher GBMboost für Programmiergleis) muss die udev-Rule die SerialNumber als zusätzliches ''ATTRS{serial}'' beinhalten, damit die GBMboost unterschieden werden können. In diesem Fall kann über den Befehl ''dmesg'' die SerialNumber der beiden GBMboost ermittelt werden (siehe oben). Im folgeden Beispiel wird der GBMboost mit der SerialNumber ''A9WG8ULI'' als ''bidib_interface_master'' und der 2. GBMboost mit der SerialNumber ''A9XI8TBD'' als ''bidib_interface_prog'' im System erscheinen. KERNEL=="ttyUSB*" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bfdd", ATTRS{serial}=="A9WG8ULI", SYMLINK+="bidib_interface_master", GROUP="dialout" KERNEL=="ttyUSB*" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bfdd", ATTRS{serial}=="A9XI8TBD", SYMLINK+="bidib_interface_prog", GROUP="dialout" ==== Unbekannte Product und Vendor ID ==== Die OpenDCC-Product und Vendor IDs sind in den meisten Linux-Distributionen bekannt. Falls eine unbekannte Product und Vendor ID verwendet wird, kann mit folgender Rule gearbeitet werden: ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="7908", RUN+="/sbin/modprobe ftdi_sio", RUN+="/bin/sh -c 'echo 0403 7908 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'" Der erste RUN-Command lädt den //ftdi_sio//-Treiber (und erstellt das Verzeichnis //usb-serial/drivers/ftdi_sio//), der zweite RUN-Command piped die Product und Vendor ID in new_id. Anschliessend wird das Device als Serial-Device erkannt.