Wie erstellt man einen Symlink für ttyUSBx?

26. Juli 2022

Mit einer udev-Regel wird ein fixer Alias-Name für das ttyUSB-Gerät vergeben.

USB Symlink Linux Header
Jeder, der einen Raspberry Pi mit angeschlossenen USB-Geräten betreibt, kennt wahrscheinlich das Problem: Nach einem Neustart des Systems oder beim Wechsel des USB-Ports ändert sich plötzlich die Bezeichnung der angeschlossenen USB-Geräte.

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

Teilen:


Schreibe einen Kommentar

Wird für die Bestätigung benötigt