Использование Bluetooth в OpenBSD: различия между версиями
(не показано 5 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | Данная статья | + | Данная статья 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 | ||
Произведем поиск устройств: | Произведем поиск устройств: | ||
− | + | <pre> | |
− | + | % 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 | ||
+ | </pre> | ||
Сохраняем имя и адрес устройства в локальном файле 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: | Строка 91: | ||
Отцепим ненужные 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 | |
Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально): | Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально): | ||
− | + | <syntaxhighlight lang="bash">#!/bin/sh | |
DEVICE="k530i" | DEVICE="k530i" | ||
Строка 138: | Строка 137: | ||
echo -n "attaching HID devices..." | echo -n "attaching HID devices..." | ||
btdevctl -d ${UBT} -a ${DEVICE} -s HID >/tmp/hid.log 2>&1 | btdevctl -d ${UBT} -a ${DEVICE} -s HID >/tmp/hid.log 2>&1 | ||
− | btdevctl -d ${UBT} -a ${DEVICE} -s HID -A && echo " done"</ | + | btdevctl -d ${UBT} -a ${DEVICE} -s HID -A && echo " done"</syntaxhighlight> |
+ | |||
+ | [[Категория:Howto]] |
Текущая версия на 15:03, 26 мая 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"