NEWS
UNSOLVED Modbus: Serial Port nicht durch /dev/serial/by-id auswählbar
-
Hallo,
nach einem Neustart meines Raspi ändert sich der Port, an dem mein Modbus hängt, immer.
Beispiel: Aktuell kann ich den Port im Modbusadapter mit /dev/ttyUSB0 auswählen.
Nach einem Neustart stimmt er aber nicht mehr, sondern er liegt jetzt auf /dev/ttyUSB1.
Das ist nach meinem Wissen so auch normal, denn Linux vergibt die Ports beim starten jedesmal neu.Eine Möglichkeit das zu ändern gibt es mit /dev/serial/by-id.
Bei mir müsste ich also /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 eingeben und alles wäre gut.
Genau das geht aber nicht.Gibt es hierfür eine Lösung?
-
@StefanTank sagte in Modbus: Serial Port nicht durch /dev/serial/by-id auswählbar:
Genau das geht aber nicht.
Tastatur benutzen...
Was genau heißt denn 'geht nicht'?
-
@Thomas-Braun
Der Adapter stellt folgendes Fenster zur Verfügung.
Unter Port kann nur eine Auswahl getroffen werden, es lässt keine Eingabe zu.
-
@StefanTank sagte in Modbus: Serial Port nicht durch /dev/serial/by-id auswählbar:
Gibt es hierfür eine Lösung?
Schau dir an, wie man udev-Regeln anlegt. Damit kann man bestimmten Geräten immer die gleiche Schnittstelle zuweisen. Ist hier erklärt:
https://wiki.debian.org/udev -
@Thomas-Braun
Ok, habe nun folgendes versucht.
Mit dem Befehl "lsusb" habe ich folgende ID für meinen Stick bekommen: 1a86:7523Dann Befehl "udevadm info --name=/dev/ttyUSB0 --attribute-walk" ausgeführt.
Die lange Ausgabe habe ich auf die Daten für meine ID gekürzt:
looking at parent device '/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1':
KERNELS=="1-1.1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{devspec}=="(null)"
ATTRS{bcdDevice}=="0254"
ATTRS{speed}=="12"
ATTRS{product}=="USB2.0-Serial"
ATTRS{idProduct}=="7523"
ATTRS{maxchild}=="0"
ATTRS{urbnum}=="174335"
ATTRS{version}==" 1.10"
ATTRS{bDeviceClass}=="ff"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{idVendor}=="1a86"
ATTRS{bmAttributes}=="80"
ATTRS{authorized}=="1"
ATTRS{bMaxPower}=="96mA"
ATTRS{bNumInterfaces}==" 1"
ATTRS{devnum}=="3"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bConfigurationValue}=="1"
ATTRS{bNumConfigurations}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{configuration}==""
ATTRS{devpath}=="1.1"
ATTRS{busnum}=="1"
ATTRS{tx_lanes}=="1"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{rx_lanes}=="1"Jetzt eine Datei erzeugt. "sudo nano /etc/udev/rules.d/90_MyUSB_RS485_Modbus_Stick.rules"
Inhalt:# USB Stick RS485 ModBus mit eindeutigem Namen versehen. SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyUSB_ModBus"
Danach ein Reboot
ls -l /dev/serial/by-id insgesamt 0 lrwxrwxrwx 1 root root 13 Sep 4 20:25 usb-1a86_USB2.0-Serial-if00-port0 -> ../../ttyUSB1 lrwxrwxrwx 1 root root 13 Sep 4 20:25 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -> ../../ttyUSB0
Eigentlich habe ich jetzt den Link auf /ttyUSB_ModBus erwartet.
Auch im ModBus-Adapter hat sich die Auswahlmöglichkeit nicht geändert.Welchen Fehler habe ich gemacht?
-
@StefanTank
Hab nur theoretisches Wissen. Selber habe ich das lange nicht mehr gemacht. -
@Thomas-Braun
Danke schonmal bis hierhin, denke das ist der richtige Weg
Vielleicht kannst du mir hier noch helfen.Mit "ls -l /dev/ttyU*" wird folgendes ausgegeben:
crw-rw---- 1 root dialout 188, 0 Sep 4 21:38 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Sep 4 21:31 /dev/ttyUSB1 lrwxrwxrwx 1 root root 15 Sep 4 21:24 /dev/ttyUSB_ModBus -> bus/usb/001/003
Bei den funktionierenden Links steht root dialout, bei neu erzeugten nicht.
Wie kann ich das ändern? -
-
@Thomas-Braun
Die Rechteänderung habe ich gemacht, leider hat sich nichts geändert.
Auch was den Linktarget angeht, komm ich nicht weiter.
Damit bin ich ans Ende meiner Linuxkenntnisse gekommen, vielleicht hat ja noch jemand eine Idee. -
@StefanTank letztendlich wie du es bereits beschrieben hast
ls -la /dev/serial/by-id/
Serial von USB Port ausgeben
udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' | head -n1
UDEV Rule erstellen
sudo nano /etc/udev/rules.d/99-ORNO517.rules
Werte eintragen
SUBSYSTEM=="tty", ATTRS{serial}=="AB0KUH90", SYMLINK+="ORNO517"
Neustarten
Dann in system.adapter.modbus.X unter Raw --> "comName" den vergebenen UDEV Namen eintragen
Bei mir funktioniert es so