udevルールは区別されません

udevルールは区別されません

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"

idProductidVendor最初の行から取得

udevadm info --attribute-walk --name=/dev/ttyUSB1 | grep idProduct

そして

udevadm info --attribute-walk --name=/dev/ttyUSB1 | grep idVendor

出力をそれぞれlsusbIS_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_SERIALID_SERIAL_SHORT

sudo service udev restart監視中にデバイスを接続して切断しようとすると、最後に接続したデバイスと両方のデバイスへのシンボリックリンクが表示されることがwatch 'ls -lah /dev | grep ">"'あります。つまり、これまで私はとを見ました。ただし、プラグを抜いて再接続すると、両方ともその状態に切り替わります。arduinounoneatolidarttyUSB*arduinouno -> ttyUSB1neatolidar -> ttyUSB1ttyUSB0

私の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

おすすめ記事