web-dev-qa-db-ja.com

Bluetoothデバイスが接続されているときにスクリプトを実行する

特定の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のルール番号で遊んでみました。それでも成功しませんでした。

4
slybloty

次のように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にメッセージを書き込むことができます。

1
GAD3R

私の場合、問題はATTRS{name} のではなく ATTRS{address}。私はこれを次のように発行して見つけました:

udevadm info -ap /devices/virtual/input/input160/event6

詳細 ここ

0
Kira