RasPi: Feste USB-Schnittstellen-Namen durch udev-Regeln

USB-Geräte ändern am Raspberry nach jedem Booten oder Einstecken den Schnittstellen-Namen. Das bringt Software oft durcheinander, läßt sich aber verhindern.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Feste USB-Schnittstellen-Namen durch udev-Regeln
Lesezeit: 5 Min.
Von
  • Heinz Behling
Inhaltsverzeichnis

Zahlreiche Programme, etwa zur Steuerung von Lasercuttern, 3D-Druckern oder Mediaplayern, erfordern bei ihrer Konfiguration die Angabe der Schnittstellenbezeichnung der an USB-Buchsen angeschlossenen Geräte. Lästig dabei: Nach einem Neustart des RasPis werden diese Bezeichnungen neu vergeben: Wenn ein 3D-Drucker zuvor noch auf ttyUSB0 hörte, kann er nun vielleicht ttyUSB1 sein. Klar, dass soetwas Programme durcheinander bringen kann, insbesondere, wenn zwei gleichartige Geräte (3D-Drucker Anet A8 und Creality Ender 3 mit silent board)) angeschlossen sind und verwechselt werden.

Es gibt aber einen Mechanismus, mit dem man das Betriebssystem zwingen kann, zusätzlich zu diesen mehr oder weniger zufälligen Bezeichnungen an die jeweiligen Geräte fest gebundene Schnittstellennamen zu vergeben – und zwar mit udev-Regeln.

Das Hintergrundprogramm udev verwaltet dynamisch alle Gerätedateien im Verzeichnis /dev, also auch die USB-Geräte. Bei jedem Bootvorgang oder dem An- beziehungsweise Abstecken eines Geräts vergibt es normalerweise automatisch die Bezeichnungen, kann aber durch Regeln (Textdateien) im Verzeichnis /etc/udev/rules.d/ gezwungen werden, bei bestimmten Geräten den wechselnden Bezeichnungen zusätzlich feste Namen in Form von symbolischen Links zuzuordnen. So hört dann ein 3D-Drucker beispielsweise immer auf ttyANET, obwohl er mal die Schnittstelle ttyUSB0, und dann wieder ttyUSB1 erhält.

Im Verzeichnis /dev findet sich für jedes an den RasPi angeschlossenes Gerät eine Datei. Dessen Name entspricht der Schnittstellenbezeichnung.

Dazu muss udev das jeweilige Gerät aber individuell identifizieren können. Deshalb enthalten udev-Regeln immer mindestens eine Bedingung, die eine charakteristische, vom Gerät ans Betriebssystem gemeldete Eigenschaft enthält, und eine Aktion, die bei Erfüllung der Bedingung ausgeführt wird.

Am Beispiel zweier am RasPi angeschlossener 3D-Drucker zeigen wir, wie man diese Geräteeigenschaften herausfindet und eine entsprechende udev-Regel schreibt. Sie können das aber auch für alle anderen USB-Geräte anwenden.