Использование Bluetooth в OpenBSD: различия между версиями
Строка 1: | Строка 1: | ||
Данная статья 100% копипаст с [http://www.openbsd.ru www.openbsd.ru] | Данная статья 100% копипаст с [http://www.openbsd.ru www.openbsd.ru] | ||
− | |||
Поскольку GENERIC ядро не включает в себя ни стек, ни драйверы устройств Bluetooth, необходимо собрать ядро, поддерживающее следующие устройства: | Поскольку GENERIC ядро не включает в себя ни стек, ни драйверы устройств Bluetooth, необходимо собрать ядро, поддерживающее следующие устройства: | ||
− | + | # Контроллер Bluetooth | |
− | + | ubt* at uhub? | |
− | + | # Поддержка шины Bluetooth | |
− | + | bthub* at ubt? | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | # Поддержка HID устройств, работающих через Bluetooth | ||
+ | bthidev* at bthub? | ||
+ | btkbd* at bthidev? | ||
+ | btms* at bthidev? | ||
+ | wskbd* at btkbd? mux 1 | ||
+ | wsmouse* at btms? mux 0 | ||
Для управления устройствами Bluetooth следует установить утилиты bluetooth-tools /usr/ports/net/bluetooth-tools. | Для управления устройствами Bluetooth следует установить утилиты bluetooth-tools /usr/ports/net/bluetooth-tools. | ||
Строка 21: | Строка 19: | ||
Произведем предварительную настройку. Определим наличие контроллеров Bluetooth в системе и распечатаем их начальную конфигурацию: | Произведем предварительную настройку. Определим наличие контроллеров Bluetooth в системе и распечатаем их начальную конфигурацию: | ||
− | + | % btconfig -l | |
− | + | ubt0 | |
− | + | % btconfig ubt0 | |
− | + | ubt0: bdaddr 00:00:00:00:00:00 flags=0<> | |
− | + | num_cmd = 0 | |
− | + | num_acl = 0, acl_mtu = 0 | |
− | + | num_sco = 0, sco_mtu = 0 | |
Зададим такие параметры как: имя узла, класс устройства узла (ноутбук), режим работы. После чего включим интерфейс: | Зададим такие параметры как: имя узла, класс устройства узла (ноутбук), режим работы. После чего включим интерфейс: | ||
− | + | # btconfig ubt0 up name "Q45" pscan switch class 0x02010c | |
− | + | % btconfig -v ubt0 | |
− | + | ubt0: bdaddr 00:1f:3a:ec:05:0f flags=3 | |
− | + | num_cmd = 1 | |
− | + | num_acl = 8, acl_mtu = 1017 | |
− | + | num_sco = 1, sco_mtu = 64 | |
− | + | HCI version: 2.0 | |
− | + | class: [0x02010c] Laptop Computer | |
− | + | name: "Q45" | |
− | + | voice: [0x0060] | |
− | + | pin: variable | |
− | + | options: pscan switch | |
Использование HID устройств Bluetooth | Использование HID устройств Bluetooth | ||
Произведем поиск устройств: | Произведем поиск устройств: | ||
− | + | % btconfig ubt0 inquiry | |
− | + | Device Discovery from device: ubt0 .... 1 response | |
− | + | 1: bdaddr 00:1e:dc:d8:94:0b | |
− | + | : name "K530i" | |
− | + | : class: [0x5a0204] Cellular Phone | |
− | + | ||
− | + | : page scan rep mode 0x01 | |
− | + | : clock offset 23944 | |
Сохраняем имя и адрес устройства в локальном файле Bluetooth-хостов, генерируем PIN код и попытаемся использовать телефон как HID устройство: | Сохраняем имя и адрес устройства в локальном файле Bluetooth-хостов, генерируем PIN код и попытаемся использовать телефон как HID устройство: | ||
− | + | # echo "00:1e:dc:d8:94:0b k530i" >>/etc/bluetooth/hosts | |
− | + | # bthcid | |
− | + | # btpin -d ubt0 -a k530i -r -l 5 | |
− | + | PIN: 84921 | |
− | + | # btdevctl -d ubt0 -a k530i -s HID | |
− | + | local bdaddr: 00:1f:3a:ec:05:0f | |
− | + | remote bdaddr: 00:1e:dc:d8:94:0b | |
− | + | link mode: encrypt | |
− | + | device type: HID | |
− | + | control psm: 0x0011 | |
− | + | interrupt psm: 0x0013 | |
− | + | Collection page=Generic_Desktop usage=Keyboard | |
− | + | ... | |
− | + | End collection | |
− | + | Collection page=Generic_Desktop usage=Mouse | |
− | + | Collection page=Generic_Desktop usage=Pointer | |
− | + | ... | |
− | + | End collection | |
− | + | End collection | |
− | + | # btdevctl -d ubt0 -a k530i -s HID -A | |
Появятся сообщения ядра: | Появятся сообщения ядра: | ||
− | + | bthub0 at ubt0 00:1f:3a:ec:05:0f | |
− | + | bthidev0 at bthub0 00:1e:dc:d8:94:0b encrypt | |
− | + | btkbd0 at bthidev0 reportid 1 | |
− | + | wskbd1 at btkbd0 mux 1 | |
− | + | wskbd1: connecting to wsdisplay0 | |
− | + | btms0 at bthidev0 reportid 2: 3 buttons. | |
− | + | wsmouse2 at btms0 mux 0 | |
− | + | bthidev0: connected | |
Телефон попросит ввести PIN, после чего предложит использовать себя как HID устройство, давая возможность выбрать из ряда приложений, созданных для проведения презентаций и т.п. | Телефон попросит ввести PIN, после чего предложит использовать себя как HID устройство, давая возможность выбрать из ряда приложений, созданных для проведения презентаций и т.п. | ||
Строка 92: | Строка 90: | ||
Отцепим ненужные HID устройства: | Отцепим ненужные HID устройства: | ||
− | + | # btdevctl -d ubt0 -a k530i -s HID -D | |
− | + | # dmesg | tail -6 | |
− | + | wsmouse2 detached | |
− | + | btms0 detached | |
− | + | wskbd1: disconnecting from wsdisplay0 | |
− | + | wskbd1 detached | |
− | + | btkbd0 detached | |
− | + | bthidev0 detached | |
Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально): | Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально): |
Версия 13:09, 25 мая 2013
Данная статья 100% копипаст с www.openbsd.ru
Поскольку GENERIC ядро не включает в себя ни стек, ни драйверы устройств Bluetooth, необходимо собрать ядро, поддерживающее следующие устройства:
# Контроллер Bluetooth ubt* at uhub?
# Поддержка шины Bluetooth bthub* at ubt?
# Поддержка HID устройств, работающих через Bluetooth bthidev* at bthub? btkbd* at bthidev? btms* at bthidev? wskbd* at btkbd? mux 1 wsmouse* at btms? mux 0
Для управления устройствами Bluetooth следует установить утилиты bluetooth-tools /usr/ports/net/bluetooth-tools. Базовая конфигурация
Произведем предварительную настройку. Определим наличие контроллеров Bluetooth в системе и распечатаем их начальную конфигурацию:
% btconfig -l ubt0 % btconfig ubt0 ubt0: bdaddr 00:00:00:00:00:00 flags=0<> num_cmd = 0 num_acl = 0, acl_mtu = 0 num_sco = 0, sco_mtu = 0
Зададим такие параметры как: имя узла, класс устройства узла (ноутбук), режим работы. После чего включим интерфейс:
# btconfig ubt0 up name "Q45" pscan switch class 0x02010c % btconfig -v ubt0 ubt0: bdaddr 00:1f:3a:ec:05:0f flags=3 num_cmd = 1 num_acl = 8, acl_mtu = 1017 num_sco = 1, sco_mtu = 64 HCI version: 2.0 class: [0x02010c] Laptop Computer name: "Q45" voice: [0x0060] pin: variable options: pscan switch
Использование HID устройств Bluetooth
Произведем поиск устройств:
% btconfig ubt0 inquiry Device Discovery from device: ubt0 .... 1 response 1: bdaddr 00:1e:dc:d8:94:0b : name "K530i" : class: [0x5a0204] Cellular Phone
: page scan rep mode 0x01 : clock offset 23944
Сохраняем имя и адрес устройства в локальном файле Bluetooth-хостов, генерируем PIN код и попытаемся использовать телефон как HID устройство:
# echo "00:1e:dc:d8:94:0b k530i" >>/etc/bluetooth/hosts # bthcid # btpin -d ubt0 -a k530i -r -l 5 PIN: 84921 # btdevctl -d ubt0 -a k530i -s HID local bdaddr: 00:1f:3a:ec:05:0f remote bdaddr: 00:1e:dc:d8:94:0b link mode: encrypt device type: HID control psm: 0x0011 interrupt psm: 0x0013 Collection page=Generic_Desktop usage=Keyboard ... End collection Collection page=Generic_Desktop usage=Mouse Collection page=Generic_Desktop usage=Pointer ... End collection End collection # btdevctl -d ubt0 -a k530i -s HID -A
Появятся сообщения ядра:
bthub0 at ubt0 00:1f:3a:ec:05:0f bthidev0 at bthub0 00:1e:dc:d8:94:0b encrypt btkbd0 at bthidev0 reportid 1 wskbd1 at btkbd0 mux 1 wskbd1: connecting to wsdisplay0 btms0 at bthidev0 reportid 2: 3 buttons. wsmouse2 at btms0 mux 0 bthidev0: connected
Телефон попросит ввести PIN, после чего предложит использовать себя как HID устройство, давая возможность выбрать из ряда приложений, созданных для проведения презентаций и т.п.
Выход из приложения означает конец сессии. Этот факт регистрируется и ядром: bthidev0: disconnected
Отцепим ненужные HID устройства:
# btdevctl -d ubt0 -a k530i -s HID -D # dmesg | tail -6 wsmouse2 detached btms0 detached wskbd1: disconnecting from wsdisplay0 wskbd1 detached btkbd0 detached bthidev0 detached
Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально):
#!/bin/sh DEVICE="k530i" NAME="Q45" UBT=$(btconfig -l | head -1) if [ "${UBT}" = "" ]; then echo "No bluetooth controllers have been found!" exit 1 fi if [ "${1}" = "-d" ]; then btdevctl -d ${UBT} -a ${DEVICE} -s HID -D pkill bthcid exit $? fi echo "configuring bluetooth: ${UBT}" btconfig ${UBT} up name "${NAME}" pscan switch class 0x02010c btconfig -v ${UBT} sleep 2 echo -n "starting bthcid..." bthcid && echo " ok" sleep 5 echo -n "generating pin code: " btpin -d ${UBT} -a ${DEVICE} -r -l 5 sleep 3 echo -n "attaching HID devices..." btdevctl -d ${UBT} -a ${DEVICE} -s HID >/tmp/hid.log 2>&1 btdevctl -d ${UBT} -a ${DEVICE} -s HID -A && echo " done"