
特定の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/syslog
てidVendor
作成するために使用されます。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