Скрипт запуска Linux для подключения к Bluetooth и cron, чтобы он оставался подключенным

5

У меня есть мини-клавиатура Bluetooth и Raspberry Pi с дистрибутивом на основе Debian. Я знаю MAC-адрес клавиатуры, но для этого вопроса, давайте просто использовать AA:BB:CC:DD:EE:FF. Прямо сейчас мне нужно подключить проводную клавиатуру и мой ключ Bluetooth для мини-клавиатуры. На проводной клавиатуре я должен запустить следующее при загрузке устройства:

sudo hidd --connect AA:BB:CC:DD:EE:FF

Если устройство слишком долго простаивает, Bluetooth отключается, и я должен вынуть проводную клавиатуру и повторить ту же команду.

То, что я ищу, - это способ запуска этой команды при запуске и способ определения, будет ли она отключена, чтобы она автоматически переподключалась.

Раздражает то, что клавиатура должна быть в режиме сопряжения (даже если она уже была спарена), когда я запускаю эту команду, в противном случае она говорит мне, что хост не работает. Поэтому, возможно, сценарий должен предотвратить его отключение из-за неактивности, в противном случае мне придется перевести его обратно в режим сопряжения для повторного подключения.

Итак, резюмируем:

  • Скрипт для подключения при запуске. Я могу убедиться, что клавиатура переведена в режим сопряжения, прежде чем включать ее.
  • Скрипт для предотвращения его отключения. Может быть, какой-то сигнал отправлять на него каждые 60 секунд или что-то?
DR
источник
hcitool conпокажет активные соединения, так что вы можете проверить это и восстановить соединение, если оно исчезнет
Моя обеспокоенность по поводу повторного подключения ПОСЛЕ того, как он отключился, заключается в том, что тогда я должен перевести эту клавиатуру в режим сопряжения. Если я могу ПРЕДОТВРАТИТЬ его от отключения, то мне нужно только перевести его в режим сопряжения при запуске. (Я называю это режимом сопряжения, потому что это та же самая кнопка, которую вы должны удерживать в течение нескольких секунд, но на самом деле вы не восстанавливаете ее, это почти как режим «соединения»)
DR

Ответы:

1

(Замените XX:XX:XX:XX:XX:XXна Bluetooth-адрес вашего устройства)

Установите поддержку Bluetooth.

# pacman -S bluez

Создайте файл конфигурации устройства.

# nano /etc/bluetooth/hcid.conf
device XX:XX:XX:XX:XX:XX {
  name "Apple Wireless Keyboard";
  auth enable;
  encrypt enable;
}

Включить блютуз.

# nano /etc/conf.d/bluetooth
DAEMON_ENABLE="true"
HIDD_ENABLE="true"

Добавьте демонов. Убедитесь, что dbus появляется первым.

# nano /etc/rc.conf
DAEMONS=(… dbus bluetooth)

Перезагрузка.

Проверьте соединение (убедитесь, что клавиатура обнаружена, иначе это не удастся).

# hidd --connect XX:XX:XX:XX:XX:XX

Чтобы разрешить повторное подключение с клавиатуры после перехода в спящий режим, мы создаем наш собственный демон, который проверяет, подключена ли клавиатура раз в секунду. Если это так, он ничего не делает в этом цикле, в противном случае он пытается подключиться к адресу, указанному в address.

Создайте скрипт для запуска демона.

# nano /etc/rc.d/connect-bt-devs
#!/bin/bash
/etc/rc.d/connect-bt-devs.sh &
exit 0

Создайте сценарий.

# nano /etc/rc.d/connect-bt-devs.sh

#!/bin/bash
address="XX:XX:XX:XX:XX:XX"
while (sleep 1)
do
  connected=$(hidd --show) > /dev/null
  if [[ ! $connected =~ .*${address}.* ]] ; then
    hidd --connect ${address} > /dev/null 2>&1
  fi
done

Сделайте их исполняемыми.

# chmod +x /etc/rc.d/connect-bt-devs
# chmod +x /etc/rc.d/connect-bt-devs.sh

Добавьте демона.

# nano /etc/rc.conf
DAEMONS=(… connect-bt-devs)

Перезагрузка.

Когда я впервые сделал это, он работал при первом подключении скрипта, но затем я получал неприятные отчеты о сбоях на консоли всякий раз, когда пользовательский демон пытался восстановить соединение с вновь пробужденной клавиатурой. После более тщательного изучения выяснилось, что это связано с тем, что ключ Belkin был глючным и не отключался от устройства при выключении устройства. Я перешел на дешевый ключ без бренда, и он отлично работает.

Сочетание информации из архива вики и поста в блоге Бенни Боттема .

Styne666
источник
Пока спасибо! Я попробую эту часть и посмотрю, смогу ли я заставить ее работать и дам вам знать!
DR
-1

Старый пост, но я искал всю сеть в поисках приемлемого решения. Вот оно .. быстро и просто

Создайте файл конфигурации устройства.

# nano /etc/bluetooth/hcid.conf
device XX:XX:XX:XX:XX:XX {
  name "Apple Wireless Keyboard";
  auth enable;
  encrypt enable;
}

запустите и добавьте эту строку в ваш /etc/rc.local

# hidd --server
Ганнибал
источник
Это идентично другому ответу на этот вопрос
Burgi