특정 블루투스 장치가 연결되자마자 자동으로 스크립트를 실행하려고 합니다. 이를 위해 새로운 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
특정 블루투스 이벤트에서 스크립트를 듣고 실행하여 이 문제를 해결했습니다 . 특히,
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