Linux-Mint

連接藍牙設備時執行腳本

  • May 7, 2022

我正在嘗試在連接某個藍牙設備後立即自動執行腳本。為此,我嘗試創建一個新的 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獲取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.

就我而言,問題是我必須使用ATTRS{name}而不是ATTRS{address}. 我通過發出以下命令發現了這一點:

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

更多資訊在這裡

引用自:https://unix.stackexchange.com/questions/476094