Sparkfun FTDIチップとArduino Unoに接続されたNeato XV-*LiDARデバイスがあります。予測できないほど割り当てられていない/dev/ttyUSB0
合計として表示されます/dev/ttyUSB1
。
だから私はこう書いています/etc/udev/rules.d/80-arduinouno.rules
:
SUBSYSTEM=="tty",
ATTRS{idProduct}=="7523", ATTRS{idVendor}=="1a86",
MODE="0666",
OWNER="pi", GROUP="pi",
SYMLINK+="arduinouno"
...そして/etc/udev/rules.d/90-neatolidar.rules
:
SUBSYSTEM=="tty", ENV(ID_SERIAL_SHORT)=="AL01OTZS",
ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", ATTRS{serial}=="AL01OTZS",
MODE="0666", OWNER="pi", GROUP="pi",
SYMLINK+="neatolidar"
idProduct
idVendor
最初の行から取得
udevadm info --attribute-walk --name=/dev/ttyUSB1 | grep idProduct
そして
udevadm info --attribute-walk --name=/dev/ttyUSB1 | grep idVendor
出力をそれぞれlsusb
。IS_SERIAL_SHORT
出力から取得します。
udevadm info -q all -n /dev/ttyUSB0 | grep ID_SERIAL
または
udevadm info --attribute-walk --name=/dev/ttyUSB0 | grep {serial}
ただし、このコマンドはFTDI / LiDARで動作しますが、Arduinoでのみ提供されていますID_SERIAL
。ID_SERIAL_SHORT
sudo service udev restart
監視中にデバイスを接続して切断しようとすると、最後に接続したデバイスと両方のデバイスへのシンボリックリンクが表示されることがwatch 'ls -lah /dev | grep ">"'
あります。つまり、これまで私はとを見ました。ただし、プラグを抜いて再接続すると、両方ともその状態に切り替わります。arduinouno
neatolidar
ttyUSB*
arduinouno -> ttyUSB1
neatolidar -> ttyUSB1
ttyUSB0
私のudevルールがこれら2つのデバイスを区別し、正しいデバイスが検出された場合にのみ実行されるようにするにはどうすればよいですか?
重要な場合は、Raspbian Jessieを実行しているRaspberry Pi 3にあります。 ArduinoはRPiに直接接続されていますが、FTDI安い黄色に接続EagleTec 4ポートUSBハブ。
ベストアンサー1
私の評判はコメントを残すほど高くなかったようです。
また、次のbashスクリプトを使用してudevルールを再ロードして再起動するため、デバイスを切断して再接続する必要もありません。
#!/bin/bash
sudo udevadm control --reload-rules
sudo udevadm trigger