Änderungen der seriellen Zuordnung auf einem Linux-System

Problem

Du hast mehrere Drucker angeschlossen und manchmal beginnt ein Drucker, der einem Anschluss zugewiesen wurde, den anderen Drucker zu steuern.

Grund

Alle seriellen Geräte werden in den Ordner /dev eingebunden. Je nach verwendetem Treiber haben sie Namen wie ttyACMx oder ttyUSBx, wobei x eine Zahl von 0 … Anzahl der verfügbaren seriellen Geräte ist. Hier ist die Zahl nicht an ein bestimmtes Gerät gebunden – sie hängt nur davon ab, welches USB-Gerät zuerst gemountet wurde. Wenn du also die Drucker A und B deaktiviert hast und A aktivierst, erhält er ttyACM0 und wenn du dann Drucker B aktivierst, erhält er ttyACM1. Wenn du sie in umgekehrter Reihenfolge aktivierst, erhält B ttyACM0 und A ttyAMC0. Das ist der Grund, warum deine Zuordnung falsch ist.

Lösung

Die gute Nachricht ist, dass Linux 2 Links zu diesen echten Geräten hat. Sie sind im Ordner /dev/serial/by-id und /dev/serial/by-path zu finden.

by-id

Der Treiber bekommt eine ID von der Seriennummer gemeldet. Wenn die IDs der Drucker alle unterschiedlich sind, ist es am besten, die Gerätenamen in diesem Ordner zu verwenden. Sie sind immer gleich, unabhängig davon, wo du den Drucker anschließt. Es kann vorkommen, dass ein Druckermodell eine feste Kennung hat, und wenn du mehrere Drucker desselben Typs hast, haben alle die gleiche Kennung, so dass nur ein Link hier erscheint. In diesem Fall funktioniert diese Lösung nicht und du musst die by-path-Lösung verwenden.

by-path

Es gibt eine narrensichere Lösung, um ein Gerät immer zu unterscheiden. Und das ist die Zuordnung anhand des USB-Anschlusses, an den du den Drucker angeschlossen hast. Das funktioniert sogar mit USB-Hubs, die den Namen einfach länger werden lassen. Der einzige Nachteil dieser Lösung ist, dass du den Drucker immer an denselben USB-Anschluss anschließen musst, sonst wird er nicht gefunden.