/dev/ttyUSB0
FTDIドライバなどによって列挙されるシリアルデバイスが2つ以上あります。再起動すると、これらのデバイスは異なる順序でスクランブルされる可能性があります。また、これらのデバイス間または他の同様のデバイスを物理的に交換/交換することもできます。/dev/ttyUSB1
/dev/ttyUSB2
今、私はこれらを常に列挙したいと思います。デバイスが接続されている物理USBポートに基づいてデバイス名を列挙したい(PCマザーボードのUSBポートに直接接続するか、USBハブを使用できます)。デバイスがUSBハブ、ポート1に接続されているとします。ttyUSB0
、ポート2ttyUSB1
などのままにしてください。
いくつかの基本的な内容を読んだ後、私は考えました(前述のようにここ)/dev/serial/by-path/
デバイスをシンボリックリンクとしてリストします。そのため、/etc/udev/rules.d/101-usb-serial.rules
次の内容でファイルを作成しました。
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", PATH=="pci-0000:00:14.0-usb-0:10.1:1.0", SYMLINK+="ttyUSB000"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", PATH=="pci-0000:00:14.0-usb-0:10.2:1.0", SYMLINK+="ttyUSB001"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", PATH=="pci-0000:00:14.0-usb-0:10.3:1.0", SYMLINK+="ttyUSB002"
しかし、これはうまくいきません。これにより、ls /dev/ttyUSB*
私が作成した新しいシンボリックリンクを見ることができなくなります。何が間違っている可能性がありますか?
答え1
上記のコメントを参考に、上記の問題に対する解決策を見つけました。
udevadm info /dev/ttyUSB0 | grep "ID_PATH="
/dev/ttyUSB0
接続ポートの sysfs パスは上にリストされています。この値を使用して、ttyUSB1
次のようにルールファイル内のデバイス数(、....)のルールを作成します。ttyUSB2
/etc/udev/rules.d/101-usb-serial.rules
SUBSYSTEM=="tty",ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:10.1:1.0",SYMLINK+="ttyUSB001"
SUBSYSTEM=="tty",ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:10.2:1.0",SYMLINK+="ttyUSB002"
SUBSYSTEM=="tty",ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:10.3:1.0",SYMLINK+="ttyUSB003"
ファイルの変更または作成が完了したら、次のコマンドを実行してください。
sudo udevadm control --reload-rules
sudo /etc/init.d/udev restart
ポリスチレン:上記の例のシナリオ(私が作業しているシナリオ)では、4ポートBelkin USBハブを使用しています。ハブDevice 1
に接続などを接続します。port 1
Device 2
port 2