Bluetooth keyboard (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Bluetooth keyboard. Дата последней синхронизации: 13 февраля 2024. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

В этой статье описан метод подключения Bluetooth HID клавиатуры. Используется bluez версии 5.

Сопряжение

Войдите на нужный компьютер с проводной клавиатурой или через ssh.

В первую очередь убедитесь, что Bluetooth-контроллер определился:

# lsusb
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Приведённый выше вывод получен на Raspberry-Pi revision 'B' с archlinux-arm и Bluetooth-донглом Keysonic.

Помните три вещи:

  • Между Bluetooth-устройством (клавиатурой) и контроллером (донглом) сопряжение настраивается один раз.
  • Bluetooth-контроллер необходимо включать после каждой загрузки.
  • Контроллеру необходимо указывать подключение к клавиатуре после каждой загрузки.

Сопряжение — однократный процесс, который достаточно выполнить один раз. Бывают Bluetooth-клавиатуры, продаваемые вместе с донглом и заранее настроенным сопряжением, но так не у всех. Мы используем команду bluetoothctl из пакета bluez-utils для сопряжения нашего донгла и клавиатуры.

Включение может быть выполнено через bluetoothctl или автоматически в /etc/bluetooth/main.conf (см. ниже).

Аналогично подключение может быть выполнено через bluetoothctl или hcitool, последний более полезен для написания скриптов.

Используем bluetoothctl для сопряжения. Запустите команду для получения приглашения [bluetooth]#.

# bluetoothctl
[bluetooth]#
Примечание: Если у вас цветная консоль, слово «bluetooth» будет иметь цвет по умолчанию, если нет доступных устройств, и синий цвет, если требуемые устройства и/или контроллеры нашлись.

Находясь в bluetoothctl, включите контроллер:

[bluetooth]# power on
Changing power on succeeded
[CHG] Controller 06:05:04:03:02:01 Powered: yes

Затем сообщите bluetoothctl, что мы ищем только клавиатуры, и сделайте это агентом по умолчанию:

[bluetooth]# agent KeyboardOnly
Agent registered
[bluetooth]# default-agent
Default agent request successful

Далее переведите ваш контроллер (локальный донгл) в режим сопряжения (pairable):

[bluetooth]# pairable on
Changing pairable on succeeded

Теперь переведите вашу клавиатуру в активный режим, когда она может быть обнаружена и сопряжена. Некоторые клавиатуры имеют специальную кнопку для этого, некоторые требуют нажать специальную комбинацию клавиш — читайте документацию к вашей клавиатуре. Имейте в виду, что время, в течение которого будет доступно обнаружение, ограничено, обычно около 30 секунд или пары минут в зависимости от устройства.

Далее попросите контроллер найти подходящее устройство:

[bluetooth]# scan on
Discovery started
[CHG] Controller 06:05:04:03:02:01 Discovering: yes

После нескольких секунд адрес вашей клавиатуры должен быть найден. Строка может повторяться снова и снова, но это не мешает вводить новые команды.

Теперь выполните собственно сопряжение. Используемый адрес это MAC-адрес вашей Bluetooth-клавиатуры:

[bluetooth]# pair 01:02:03:04:05:06
Pairing successful
Примечание: Некоторые клавиатуры, такие как Microsoft Surface Ergonomic, отправляют пасскод (например, [agent] Passkey: 501334), который нужно набрать на Bluetooth-клавиатуре, после чего нажать Enter для завершения сопряжения. Используйте команду paired-devices, чтобы точно убедиться, что сопряжение прошло успешно.

Теперь сделайте это устройство доверенным (это позволит ему самостоятельно устанавливать соединение). Аналогично, используемый адрес это MAC-адрес вашей Bluetooth-клавиатуры:

[bluetooth]# trust 01:02:03:04:05:06
Trusted

Наконец, подключитесь к устройству (клавиатуре). Аналогично, используемый адрес это MAC-адрес вашей Bluetooth-клавиатуры:

[bluetooth]# connect 01:02:03:04:05:06
Connection successful

Готово. Теперь можно выйти из bluetoothctl:

[bluetooth]# quit

Теперь внешнее устройство (клавиатура) и USB-донгл сопряжены навсегда, пока вы самостоятельно не удалите сопряжение.

Решение проблем

В первую очередь убедитесь, что сам Bluetooth-контроллер определился и работает; смотрите основную статью Bluetooth (Русский).

Ошибка: hci0 ACL packet for unknown connection handle 4

  • Попробуйте выполнить сброс командой hciconfig hci0 reset

Xorg

Устройство добавляется как /dev/input/event* и Xorg должен увидеть его автоматически, если вы не отключили такую возможность.