Сценарий запуска Linux для подключения к bluetooth и cron, чтобы поддерживать связь

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

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

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

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

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

Итак, чтобы повторить:

  • Сценарий для подключения при запуске. Я могу позаботиться о том, чтобы переключить клавиатуру в режим сопряжения, прежде чем включать ее.
  • Скрипт, чтобы предотвратить его отключение. Может быть, какой-то сигнал отправить его каждые 60 секунд или что-то еще?

(Замените 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; } 

Включить Bluetooth.

 # 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 был неисправным и не отключился от устройства, когда устройство выключилось. Я переключился на не-брендовый дешевый ключ, и он отлично работает.

Сочетание информации из архивной вики и блога Benny Bottema .

  • Linux Mint и звуковые проблемы
  • Список доступных сетевых адаптеров в Linux
  • Есть ли поддержка Linux для TRIM на дисках SSD?
  • Почему меньше хвостового режима перестает работать?
  • Альтернатива iTunes для Linux?
  • Рекурсивно считать все файлы в каталоге
  • Что означает «сеть» в файле / etc / network / interfaces?
  • Восстановить файлы с мертвой SD-карты в Linux? (Возможно, убит Nokia E71)
  • Предотвращение разблокировки раздела на USB-накопителе в Linux
  • Как создать многопользовательский файл 7zip в Linux?
  • Почему Dropbox использует так много памяти в Linux?
  • Interesting Posts
    Давайте будем гением компьютера.