Wie erstellt man einen Symlink für ttyUSBx?
Mit einer udev-Regel wird ein fixer Alias-Name für das ttyUSB-Gerät vergeben.
Attribute des USB Gerätes auslesen (Vendor und Product ID)
udevadm info --name=/dev/ttyUSB0 --attribute-walk
Der obige Befehl gibt eine lange Liste an Eigenschaften (Attributen) des angeschlossenen USB-Geräts zurück. In dieser Ausgabe müssen wir nach den Werten für idVendor und idProduct suchen. Diese beiden Werte identifizieren den genauen Hardware-Typ deines USB-Sticks (z.B. einen Zigbee-Stick) eindeutig.
looking at parent device '/devices/platform/.../usb1/1-1/1-1.2':
KERNELS=="1-1.2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceClass}=="00"
ATTRS{bMaxPower}=="100mA"
ATTRS{idProduct}=="ea60"
ATTRS{idVendor}=="10c4"
ATTRS{manufacturer}=="Silicon Labs"
ATTRS{product}=="slae.sh cc2652rb stick - slaesh's iot stuff"
In unserem Beispiel finden wir in der Liste die Werte ATTRS{idProduct}=="ea60" und ATTRS{idVendor}=="10c4". Diese merken wir uns für den nächsten Schritt.
udev Regel anlegen
Nun erstellen wir eine neue Datei für die udev-Regel in folgendem Verzeichnis (z.B. mit sudo nano /etc/udev/rules.d/98-usb-device.rules):
/etc/udev/rules.d/98-usb-device.rules
Füge den folgenden Inhalt in die Datei ein und ersetze dabei idVendor und idProduct mit deinen eigenen Werten aus dem vorherigen Schritt. Das Attribut SYMLINK+="ttyZCOORD" legt fest, unter welchem festen Namen das Gerät künftig erreichbar sein soll (hier: /dev/ttyZCOORD).
KERNEL=="ttyUSB?", SUBSYSTEMS=="usb", ATTRS{idProduct}=="ea60", ATTRS{idVendor}=="10c4", SYMLINK+="ttyZCOORD"
udev Regeln anwenden
Damit das System die neue Regel erkennt, laden wir die udev-Regeln neu. Ein kompletter Neustart des Raspberry Pi ist nicht zwingend erforderlich:
sudo udevadm trigger
Wenn alles geklappt hat, kannst du mit ls -l /dev/tty* prüfen, ob der Symlink erfolgreich angelegt wurde. Er sollte nun als Alias auf dein aktuelles ttyUSB-Gerät zeigen:
lrwxrwxrwx 1 root root 7 28. Jun 00:17 /dev/ttyZCOORD -> ttyUSB0