私たちはUSBデバイスについて話しているので、udevがあると仮定しているので、いくつかのudevルールを設定できます。
私は推測しますが、これは単なる推測であり、誰かまたは何かがデバイスのプラグを抜いて/取り外し、デバイスを再びプラグイン/追加して、数を増やします。
さて、最初にベンダーと製品IDが必要です:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
次に、シリアル番号が必要です(複数ある場合):
# udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
ATTRS{serial}=="A6008isP"
次に、udevルールを作成します。
UDEVルールは通常、の多くのファイルに散在しています/etc/udev/rules.d
。という新しいファイルを作成し、99-usb-serial.rules
そこに次の行を追加します。3つのデバイスがあり、それぞれが異なるシリアル番号を持っています。
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
シリアル番号が必要ない場合、同じチップを持つベンダーのデバイスは同じシンボリックリンクを取得します。一度に接続できるのは1つだけです。
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="MySerialDevice"
ここから撮影
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
ます。カスタムudevルールがなければ、これで十分かもしれません。