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

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のルール番号を試してみました。まだ成功していません。

答え1

次のようにudevルールをインポートしsudo tail -f /var/log/syslogidVendor作成するために使用されます。idProduct/etc/udev/rules.d/50-my_bluetooth_rule.rules

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 デバイスを再接続します。loggerを使用してbashスクリプトにメッセージを作成できますsyslog

答え2

ATTRS{name}私の場合は、代わりに使用する必要があるという問題がありましたATTRS{address}。以下を投稿してこれを知りました。

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

追加情報ここ

答え3

同様の問題があります。dbus-monitor特定のBluetoothイベントでスクリプトを聞いて実行して、この問題を解決しました。特に、

dbus-monitor "interface='org.blueman.Applet',member='MenuChanged'"|
while read -r line; do

notify-send 'my bluetooth keyboard has just connected! High time to run my script'

./my_script.sh

done

関連情報