Hallo Leute!
Nach 8 Jahre guter Dienst hat sich Dienstag mein alter PC verabschiedet... Der neue PC ist nun endlich eingerichtet worden und alles scheint gut zu funktionieren.
Problem: am dem PC habe ich ein alter ISDN-Modem (USRobotics Courier-I, der nach ~20 Jahre immer noch wunderbar funktioniert), der über seriellen Schnittstelle verbunden werden muss. Gut, USB-Adapter für den Fall gibt es viele und die mit dem Chip PL2303 arbeiten mit Linux problemlos zusammen. ABER: ich habe schon so einen Adapter für die USV, die auch nur über serieller Schnittstelle mit dem PC spricht.
Die Situation ist also dass ich ZWEI USB-Serielle-Adapter habe. Das ist auch natürlich gar kein Problem, aber ich muss sicher sein, dass zB: /dev/ttyUSB0 immer dem Adapter zugewiesen wird, der mit der USV spricht, und /dev/ttyUSB1 dem Adapter, der mit dem Modem spricht.
Wie kann ich es machen? Habt ihr eine Idee? Ich nutze Ubuntu 10.04.
Danke Luca Bertoncello (lucabert@lucabert.de)
Hallo Luca,
On Fri, Nov 28, 2014 at 10:05:03 +0100, Luca Bertoncello wrote:
Die Situation ist also dass ich ZWEI USB-Serielle-Adapter habe. Das ist auch natürlich gar kein Problem, aber ich muss sicher sein, dass zB: /dev/ttyUSB0 immer dem Adapter zugewiesen wird, der mit der USV spricht, und /dev/ttyUSB1 dem Adapter, der mit dem Modem spricht.
Wie kann ich es machen? Habt ihr eine Idee? Ich nutze Ubuntu 10.04.
Es muesste moeglich sein, in udev-Regeln den jeweiligen USB-Port an dem der Adapter steckt zu beruecksichtigen und umzubenennen. Das setzt natuerlich voraus, dass Du die beiden Adapter immer an diesen Ports stecken laesst.
http://askubuntu.com/questions/49910/how-to-distinguish-between-identical-us...
Gruss, Chris
Christian Perle chris@linuxinfotag.de schrieb:
Hallo Christian!
Es muesste moeglich sein, in udev-Regeln den jeweiligen USB-Port an dem der Adapter steckt zu beruecksichtigen und umzubenennen. Das setzt natuerlich voraus, dass Du die beiden Adapter immer an diesen Ports stecken laesst.
http://askubuntu.com/questions/49910/how-to-distinguish-between-identical-us...
Gut, das werde ich probieren! Einmal, dass die Adapter stecken, werden sie auch nicht umgesteckt... Und wenn doch, werde ich das schnell merken und wieder ändern... :)
Grüße und danke Luca Bertoncello (lucabert@lucabert.de)
Danke für den Tipp aus dem Off! Hab hier das gleiche Problem mit zwei Tranceivern.
Thomas
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Man muss nicht zwingend den USB Anschluss als Kriterium nehmen. Es gibt da noch deutlich mehr ... ambesten Du rennst mal über einen Adapter drüber (wenn er angeschlossen ist) und liest Dir die Attribute aus ... und dann schreibst Du Dir eine Regel zusammen die möglichst eindeutig für den Adapter ist ...
udevadm info -a -n /dev/DEVICE
dann rennt udev den Adapter entlang bis zu seinen Parents ... also bitte nur die für den Adapter wichtigen Attribute beachten ... da stehen dann Sachen wie:
ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{devpath}=="1" ATTRS{idVendor}=="1b71" ATTRS{speed}=="480" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{busnum}=="5" ATTRS{devnum}=="2" ATTRS{configuration}=="" ATTRS{bMaxPower}=="500mA" ATTRS{authorized}=="1" ATTRS{bmAttributes}=="80" ATTRS{bNumConfigurations}=="1" ATTRS{maxchild}=="0" ATTRS{bcdDevice}=="0100" ATTRS{avoid_reset_quirk}=="0" ATTRS{quirks}=="0x0" ATTRS{serial}=="300000000002" ATTRS{version}==" 2.00"
Eine Kombination in der UDEV Regel aus idVendor und serial sollte bereits eindeutig sein, dann könntest Du eine Regel anpassen etwa wie:
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1b71" ATTR{serial}=="300000000002", NAME="ttyUSB0"
bei dem anderen dann entsprechend "ttyUSB1"
Das geht auch mit allen anderen Devices (hier oben die Ausgabe kommt von einer TV-Karte), die wichtigsten bekommst Du hier raus ...
Udev arbeitet nach der Regel, alle müssen existieren, im obigen Beispiel muss das also ein USB-Gerät sein, beim Hinzufügen (also einstecken), muss die idVendor haben und die Serial ... dann gibt er ihm den Namen: "ttyUSB0"
Du kannst das Ding auch "Klaus" nennen, dann gibts halt ein Device /dev/Klaus
Wichtig noch: == ist ein Vergleich = ist eine Zuweisung
ansonsten hilft Dir die ellen-lange Man-Page von udev bestimmt weiter ... die wichtigsten Schlüsselwörter für Dich sind beim "Augen-grep" RUN, NAME und PROGRAM (Du kannst nämlich auch Programme beim Anstecken von Hardware starten und sogar Parameter übergeben ;-)
viel Erfolg! Gruß Maddin
Am 28.11.2014 um 11:40 schrieb Thomas Schmidt:
Danke für den Tipp aus dem Off! Hab hier das gleiche Problem mit zwei Tranceivern.
Thomas
_______________________________________________ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Hallo! Es gibt auch bei vielen Distros schon automatisch eindeutigere links unter /dev/serial/by-id Das reicht auch oft schon einfach die zu nutzen.
vg _john
On 28.11.2014 20:53, Martin Schuchardt wrote:
Man muss nicht zwingend den USB Anschluss als Kriterium nehmen. Es gibt da noch deutlich mehr ... ambesten Du rennst mal über einen Adapter drüber (wenn er angeschlossen ist) und liest Dir die Attribute aus ... und dann schreibst Du Dir eine Regel zusammen die möglichst eindeutig für den Adapter ist ...
udevadm info -a -n /dev/DEVICE
dann rennt udev den Adapter entlang bis zu seinen Parents ... also bitte nur die für den Adapter wichtigen Attribute beachten ... da stehen dann Sachen wie:
ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{devpath}=="1" ATTRS{idVendor}=="1b71" ATTRS{speed}=="480" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{busnum}=="5" ATTRS{devnum}=="2" ATTRS{configuration}=="" ATTRS{bMaxPower}=="500mA" ATTRS{authorized}=="1" ATTRS{bmAttributes}=="80" ATTRS{bNumConfigurations}=="1" ATTRS{maxchild}=="0" ATTRS{bcdDevice}=="0100" ATTRS{avoid_reset_quirk}=="0" ATTRS{quirks}=="0x0" ATTRS{serial}=="300000000002" ATTRS{version}==" 2.00"
Eine Kombination in der UDEV Regel aus idVendor und serial sollte bereits eindeutig sein, dann könntest Du eine Regel anpassen etwa wie:
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1b71" ATTR{serial}=="300000000002", NAME="ttyUSB0"
bei dem anderen dann entsprechend "ttyUSB1"
Das geht auch mit allen anderen Devices (hier oben die Ausgabe kommt von einer TV-Karte), die wichtigsten bekommst Du hier raus ...
Udev arbeitet nach der Regel, alle müssen existieren, im obigen Beispiel muss das also ein USB-Gerät sein, beim Hinzufügen (also einstecken), muss die idVendor haben und die Serial ... dann gibt er ihm den Namen: "ttyUSB0"
Du kannst das Ding auch "Klaus" nennen, dann gibts halt ein Device /dev/Klaus
Wichtig noch: == ist ein Vergleich = ist eine Zuweisung
ansonsten hilft Dir die ellen-lange Man-Page von udev bestimmt weiter ... die wichtigsten Schlüsselwörter für Dich sind beim "Augen-grep" RUN, NAME und PROGRAM (Du kannst nämlich auch Programme beim Anstecken von Hardware starten und sogar Parameter übergeben ;-)
viel Erfolg! Gruß Maddin
Am 28.11.2014 um 11:40 schrieb Thomas Schmidt:
Danke für den Tipp aus dem Off! Hab hier das gleiche Problem mit zwei Tranceivern.
Thomas
_______________________________________________ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
lug-dd@mailman.schlittermann.de