特定のBluetoothデバイスが接続された直後にスクリプトを自動的に実行しようとしています。そのために、新しいUDEVルールを作成しようとしました。私が遭遇する問題は、接続の確立時に私のルールが実行されないことです。
現在、私のルールにはデバイスのMACアドレスのみが含まれています。
ACTION=="add", SUBSYSTEM=="bluetooth", ATTRS{address}=="a0:b1:c2:e3:f4:56", RUN+="/home/myhome/my_script"
ルールにデバイスの詳細を追加するにはどうすればよいですか?
デバイスが接続されると、次のUDEVイベントが表示されます。
$ udevadm monitor
UDEV [7704849.324977] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7/2-1.7:1.0/bluetooth/hci0/hci0:12 (bluetooth)
上記のイベントで活用できる情報はありますか?
ルールを両方のUDEVルールの場所に配置します。/etc/udev/rules.d/
および/lib/udev/rules.d/
、しかしそれでも実行されません。 Linux Mintシステムを使用しています。
このルールには、ディレクトリ内の他のすべてのルールと同じ権限があります。
-rw-r--r-- 1 root root 369 Oct 17 13:07 50-my_bluetooth_rule.rules
私も50〜90のルール番号で遊んでみました。それでも成功しませんでした。
次のようにSudo tail -f /var/log/syslog
を使用してidVendor
を取得し、idProduct
に/etc/udev/rules.d/50-my_bluetooth_rule.rules
へのudevルールを書き込みます。
ACTION=="add" , SUBSYSTEM=="usb", ATTR{idVendor}=="xxx", ATTR{idProduct}=="yyy", RUN+="/home/myhome/my_script"
実行:
Sudo service udev restart
Sudo tail -f /var/log/syslog
Bluetoothデバイスを再接続します。 bashスクリプトでlogger
を使用して、syslog
にメッセージを書き込むことができます。
私の場合、問題はATTRS{name}
のではなく ATTRS{address}
。私はこれを次のように発行して見つけました:
udevadm info -ap /devices/virtual/input/input160/event6
詳細 ここ 。