连接蓝牙设备时运行脚本

连接蓝牙设备时运行脚本

我试图在连接某个蓝牙设备后立即自动运行脚本。为此,我尝试创建一个新的 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

用于sudo tail -f /var/log/syslog获取idVendoridProduct写入 udev 规则,/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

重新连接您的蓝牙设备。您可以logger在 bash 脚本中使用将消息写入syslog.

答案2

就我而言,问题是我必须使用ATTRS{name}而不是ATTRS{address}.我通过发布发现了这一点:

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

更多信息这里

答案3

我有类似的问题。我通过dbus-monitor在特定的蓝牙事件下监听并运行我的脚本来解决这个问题。尤其,

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

相关内容