Я пытаюсь автоматизировать задачу по настройке устройства Bluetooth, когда оно подключено к моей Raspberry Pi 3 под управлением Rasbian.
Предполагая, что $x
является адресом устройства, мне нужно выполнить следующие команды после его подключения:
hcitool enc $x off
hcitool sr $x slave
Начальная информация о подключении по Bluetooth (при запуске hcitool con
) выглядит следующим образом:
Connections:
> ACL $x handle 11 state 1 1m MASTER AUTH ENCRYPT
И после выполнения вышеупомянутых двух команд, hcitool con
показывает желаемое состояние:
Connections:
> ACL $x handle 11 state 1 1m SLAVE AUTH
Мне удалось получить базовое правило udev для выполнения скрипта, но оно не дало желаемого эффекта.
Вот правило udev по адресу /etc/udev/rules.d/99-slave.rules
SUBSYSTEM=="hidraw", RUN+="/home/pi/fix-bluetooth.bash"
И сценарий:
#!/bin/bash
hcitool con >> /tmp/hello_world
Затем я подключаю tail -f /tmp/hello_world
и подключаю / отключаю устройство Bluetooth, и вот что я вижу:
Connections:
Connections:
Connections:
...
и т.п.
Я пытался добавить sleep
на несколько секунд. Я пытался добавить sudo. Я пробовал это с несколькими подключенными устройствами Bluetooth. Я никогда не могу заставить hcitool con
выводить что-либо, когда выполняется как часть правила udev.