5

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

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

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

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

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

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

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

2 ответа2

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

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

-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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .