web-dev-qa-db-ja.com

Linux上の同一のUSBデバイスを区別する

Linuxシステムで2つの同一のUSB-シリアルアダプタを使用しています。したがって、誰が最初に挿入されたかによって異なりますが、一方は/ dev/ttyUSB0という名前で表され、もう一方は/ dev/ttyUSB1で表されます。名前を永続化できるトリックはありますか? USBポートが3つあります。名前を物理ポートにリンクすることは可能ですか?

ありがとう、

5
lang2

udevadm monitor --propertiesを実行すると、ルールの作成に使用できるさまざまなプロパティが表示されます。 ID_PATHプロパティは、デバイスが接続されたポートを示します。シリアルをusbデバイスに挿入して、udevが何を認識しているかを確認します。

したがって、デバイスが接続されたときにシンボリックリンクを作成するudevルールを作成するのは簡単です。

SUBSYSTEM=="usb_device", SYSFS{idVendor}=="xxxx", SYSFS{idProduct}=="xxxx", ENV{ID_PATH}=="pci....usb-0:1:0",SYMLINK+="ttyUSBport0"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="xxxx", SYSFS{idProduct}=="xxxx", ENV{ID_PATH}=="pci....usb-0:1:1",SYMLINK+="ttyUSBport1"

これはメモリから実行されるため、構文を確認する必要があります。 idvendorとidproductをUSBVIDとPIDに変更し、ID_PATHをudevadm monitorで見つけたものに変更します。

これにより、通常の/ dev/ttyUSB0デバイスがそのまま残りますが、接続されているポートに応じて、デバイスへのシンボリックリンクも作成されます。 minicomまたは使用しているものでシンボリックリンクを使用する場合は、接続するポートに基づいて常に適切なアダプターを入手できます。

5
Paul