Работа с мобильными телефонами через bluetooth
Материал из Gentoo Linux Wiki
- Вернуться в раздел железо
Содержание |
[править] Настройка драйверов
[править] Введение
Это HOWTO поможет вам установить и настроить передачу данных по каналу bluetooth с вашим телефоном.Будет рассмотрена конфигурация ядра,установка userland демонов и клиентских программ.Итак,начнем.
[править] Поддерживаемые устройства
Список всех поддерживаемых устройств можно было найти на этойстранице. К сожалению, сейчас на автора наехали, и он удалил свой список. Вот список устройств,которые поддерживаются на момент написания этого документа:
Bluetooth USB Адапторы
(Device - Chipset - Spec.)
- Ericsson Application Toolkit - Ericsson - 1.0b
- Ericsson Development Kits - Ericsson - 1.0b
- Bluefrog Development Kits - Silicon Wave -
- Minikits based on STLC2410 - ST - 1.1
- Minikits based on STLC2415 - ST - 1.1
- CSR Casira USB Adapter - CSR - 1.1
- CSR Microsira USB Dongle - CSR - 1.1
- TDK USB Adaptor - CSR - 1.1
- 3Com USB Dongle - CSR - 1.1
- Intel USB Adapter - CSR - 1.1
- Brain Boxes BL-554 - CSR - 1.1
- COM1 USB Module - CSR - 1.1
- Anycom USB Adapter - CSR - 1.1
- Anycom USB-100 - CSR - 1.1
- D-Link DBT-120 (Rev B3) - CSR 1.1
- D-Link DBT-120 (Rev B4) - CSR - 1.1
- Gigabyte GN-BTD01 - CSR - 1.1
- Linksys USBBT100 - CSR - 1.1
- EPoX BT-MD01 - CSR - 1.1
- EPoX BT-DG02 - CSR - 1.1
- EPoX BT-DG03 - CSR - 1.1
- MSI MS-6967 - CSR - 1.1
- Microsoft Wireless Transceiver - CSR - 1.1
- Sony PCGA-BA1 - CSR - 1.1
- Deluo USB Dongle - CSR - 1.1
- Digicom Palladio USB Dongle - CSR - 1.1
- BlueTake USB Dongle BT007S - CSR - 1.1
- BlueTake USB Dongle BT007X - CSR - 1.1
- BlueTake USB Dongle BT009S - CSR - 1.1
- BlueTake USB Dongle BT009V - CSR - 1.1
- BlueTake USB Dongle BT009X - CSR - 1.1
- i-Tec Bluetooth USB Dongle - CSR - 1.1
- Sitecom USB Dongle - CSR - 1.1
- IVT USB Dongle - CSR - 1.1
- AboCom USB Dongle - CSR - 1.1
- Samsung USB Dongle - CSR - 1.1
- CCnC USB Dongle - CSR - 1.1
- DSE XH4104 USB Adapter - Transilica - 1.1
- Abe UB20 USB Bluetooth Dongle - RTX - 1.1
Bluetooth PCMCIA Адапторы
- Billinton PCMCIA Bluetooth Class 1 - CSR - 1.1 (hciattach /dev/ttyS4 bcsp)
[править] Конфигурирование ядра
[править] Для ядер серии 2.6
Рассмотрим процесс конфигурирования 2.6 ядра.Большинство Bluetooth адаптеров используют USB порт,то есть USB должен быть включен. Собирать поддержку модулями или встраивать в ядро это ваше личное дело.
Device Drivers --->
Networking Support --->
<*> Bluetooth subsystem support --->
<*> L2CAP protocol support
<*> SCO links support
<*> RFCOMM protocol support
[*] RFCOMM TTY support
<*> BNEP protocol support
[*] Multicast filter support
[*] Protocol filter support
Bluetooth device drivers --->
<*> HCI USB driver
[*] SCO (voice) support
USB support --->
<*> Support for Host-side USB
--- USB Host Controller Drivers
<M> EHCI HCD (USB 2.0) support
<M> OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
--- USB Device Class drivers
<*> USB Audio support
Теперь необходимо собрать ядро и загрузить его.После успешной загрузки выполним команду:
# cat /proc/bus/usb/devices | grep -e^[TPD] | grep -e Cls=e0 -B1 -A1 T: Bus=02 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=0a12 ProdID=0001 Rev= 5.25
ЗАМЕЧАНИЕ: Cls=e0(unk. ) идентифицирует bluetooth адаптер.
[править] Для ядер серии 2.4
Конфигурирование этой серии ядер мало чем отличается от конфигурирования ядер 2.6.х. Надо заметить, что желательно обновить ядро до наиболее свежей версии (сейчас 2.4.31). В противном случае могут быть очень неприятные глюки, вроде зависания соединения Bluetooth. В любом случае, вам необходимо включить по крайней мере эти опции :
<M> Bluetooth subsystem support <M> L2CAP protocol support <M> RFCOMM protocol support <*> RFCOMM TTY support Bluetooth device drivers ---> <M> HCI USB driver
Ну и конечно же поддержку USB,если у вас USB Bluetooth адаптер.
[править] Установка и настройка BlueZ
[править] Установка пакетов
Теперь когда адаптер обнаружен ядром,нам необходим интерфейс,который помогал бы программам взаимодействовать с bluetooth устройством.Есть несколько стеков для работы с bluetooth,но мы будем использовать официальный стек протокола - BlueZ.Нам необходимо установить следующие пакеты:
* net-wireless/bluez-libs
Последняя доступная версия: 2.10
Размер файлов: 262 kB
Домашняя страница: http://bluez.sourceforge.net/
Описание: Bluetooth Userspace Libraries
Лицензия: GPL-2
* net-wireless/bluez-utils
Последняя доступная версия: 2.10
Размер файлов: 276 kB
Домашняя страница: http://bluez.sourceforge.net/
Описание: bluetooth utilities
Лицензия: GPL-2
ЗАМЕЧАНИЕ: В зависимости от ваших целей,может потребоваться установка дополнительных пакетов BlueZ.
ВАЖНО: Некоторые устройства,которые не представлены здесь,могут требовать пакет net-wireless/bluez-bluefw.Этот момент пока не рассмотрен.
ВНИМАНИЕ: Не устанавливайте пакеты bluez-kernel или bluez-sdp, так как они могут "поломать" bluez-utils!
[править] Конфигурирование BlueZ
После установки пакетов bluez-libs и bluez-utils,введите hciconfig.Должно отобразиться что-то типа этого:
# hciconfig hci0: Type: USB BD Address: 00:10:60:A2:DD:2A ACL MTU: 192:8 SCO MTU: 64:8 DOWN RX bytes:131 acl:0 sco:0 events:18 errors:0 TX bytes:565 acl:0 sco:0 commands:17 errors:0
Скорее всего вы увидите,что сервис не запущен,ведь мы его не отконфигурировали.Так давайте сделаем это.Ниже представлен рабочий файл конфигурации.За дополнительной информацией man hcid.conf.
[править] Правка конфигурационных файлов
FILE: /etc/bluetooth/hcid.conf
#
# Файл конфигурации демона HCI.
#
# Опции HCId
options {
# Автоматически инициализировать новые устройства
autoinit yes;
# Режим менеджера безопасности
# none - менеджер отключен
# auto - использовать локальный PIN для входящих соединеий
# user - всегда справшивать PIN
#рекомендуем установить авто
security auto;
#Режим сопряжения
# none - сопряжение отключено
# multi - разрешить сопряжение с уже сопряженными устройствами
# once - Pair once and deny successive attempts
pairing multi;
# PIN helper
pin_helper /etc/bluetooth/pin;
# D-Bus PIN helper
#dbus_pin_helper;
}
# Стандартные настройки для HCI устройств
device {
# Имя устройства
# %d - id устройства
# %h - имя хоста
name "TuxBox";
# класс устройства
class 0x100;
# стандартный тип пакета
#pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
#
#lm accept,master;
#
lm accept;
# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
#
#lp hold,sniff;
#
lp rswitch,hold,sniff,park;
# Authentication and Encryption
auth enable;
encrypt enable;
}
Теперь отредактируем файл /etc/bluetooth/pin.Приведите его к такому виду:
#!/bin/sh echo "PIN:1234"
Теперь необходимо установить права на выполнение этого файла:
#chmod a+rx /etc/bluetooth/pin
ПРИМЕЧАНИЕ: При сопряжении телефон будет спрашивать у компьютера PIN-код.И чтобы ответить телефону будет вызываться программа указаная в pin_helper.В нашем случае это скрипт,который автоматически ответит телефону,что пин 1234.
[править] Запуск и проверка сервиса
С правкой конфигов окончили. Теперь самое время запустить сервис и добавить его в автозагрузку(aka default runlevel):
# /etc/init.d/bluetooth start # rc-update add bluetooth default
Давайте проверим запустился ли сервис:
# ps -ae | grep hcid 26050 ? 00:00:00 hcid # ps -ae | grep sdpd 26054 ? 00:00:00 sdpd
Сервис работает.Если же нет, то отключите и включите адаптер и перезапустите сервис.
#/etc/init.d/bluetooth restart
При успешной инициализации вы должны получить что-то типа этого:
# hciconfig hci0: Type: USB BD Address: 00:10:60:A2:DD:2A ACL MTU: 192:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN AUTH ENCRYPT RX bytes:408 acl:0 sco:0 events:21 errors:0 TX bytes:574 acl:0 sco:0 commands:20 errors:0 # hciconfig -a hci0: Type: USB BD Address: 00:10:60:A2:DD:2A ACL MTU: 192:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN AUTH ENCRYPT RX bytes:408 acl:0 sco:0 events:21 errors:0 TX bytes:574 acl:0 sco:0 commands:20 errors:0 Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'Blackhat BlueZ' Class: 0x000100 Service Classes: Unspecified Device Class: Computer, Uncategorized HCI Ver: 1.1 (0x1) HCI Rev: 0x20d LMP Ver: 1.1 (0x1) LMP Subver: 0x20d Manufacturer: Cambridge Silicon Radio (10)
ЗАМЕЧАНИЕ: Запустив hciconfig -a, мы можем увидеть параметры которые были указаны в конфигурационных файлах.
[править] Использование Bluetooth
[править] Обнаружение устройств
Теперь мы можем попытаться обнаружить bluetooth устройства.Для этой цели будем использовать hcitool.
Для проверки локального устройства:
# hcitool dev Devices: hci0 00:10:60:A2:DD:2A
Для сканирования удаленных устройств:
# hcitool scan Scanning ... 00:10:60:A3:CB:41 Grayhat
Для исследования удаленных устройств:
# hcitool inq Inquiring ... 00:10:60:A3:CB:41 clock offset: 0x5579 class: 0x72010c
Теперь нам необходимо осуществить сопряжение bluetooth устройств.Это можно сделать средствами встроенными в телефон.В качестве PIN-кода используйте код из/etc/bluetooth/pin.Теперь устройства сопряжены.Попробуем пингануть телефон :
# l2ping 00:10:60:A3:CB:41 Ping: 00:10:60:A3:CB:41 from 00:10:60:A2:DD:2A (data size 20) ... 20 bytes from 00:10:60:A3:CB:41 id 200 time 69.85ms 20 bytes from 00:10:60:A3:CB:41 id 201 time 9.97ms 20 bytes from 00:10:60:A3:CB:41 id 202 time 56.86ms 20 bytes from 00:10:60:A3:CB:41 id 203 time 39.92ms 4 sent, 4 received, 0% loss/bluetooth/hcid.conf were set correctly
[править] Установка OpenOBEX
Для передачи файлов нам потребуется OpenOBEX.Это протокол сессий который необходим нам для передачи файлов.Для его установки делаем
#emerge openobex
Собственно вся установка к этому и сводится.
[править] Клиенты для передачи файлов
[править] Работа с Bluetooth в KDE
Для любителей KDE существует пакет kdebluetooth.Сейчас он находиться в разработке,и поэтому там достаточно много багов и недоработок.Но это ведь не препятствие?;)Давайте его установим:
#emerge kdebluetooth
Возможно у вас пакет будет замаскирован по KEYWORDS. В этом случае просто добавьте соответствующую строку в /etc/portage/package/keywords echo "net-wireless/kdebluetooth ~x86 ~amd64" >> /etc/portage/package.keywords. однако следует заметить, что ~ ветке возможны проблемы с сопряжением устройств.
Размер дистрибутива 1 мегабайт.После его установки вам станут доступны следующие приложения:
- kbluetoothd - это метасервер.Необходим для работы остальных приложений пакета.
- kbtobexclient - передача файлов по bluetooth.
- kbthandsfree - позволяет использовать компьютер как bluetooth-гарнитуру.
Кроме того вы получаете доступ к функциям телефона через Konqueror с помощью KParts. Наберите bluetooth:/ в строке адреса, и вы увидите доступные сервисы и устройства.
[править] Работа с Bluetooth в Gnome
Для работы с Bluetooth из среды GNOME мы будем использовать пакет gnome-bluetooth.Для начала его нужно установить командой : emerge gnome-bluetooth Теперь зайдитев GNOME под обычным пользователем и выполните: gnome-bluetooth-admin(если у вас GNOME 2.4) и gnome-bluetooth-manager(если у вас GNOME 2.8). Эта команда запустит графическую версию hcitool.Для поиска устройств используйте кнопку Scan.Для передачи файлов на телефон используйте виртуальную ФС bluetooth:///.Просто введите это в адресной строке Nautilus'а.
[править] Передача файлов с компьютера на телефон
Если вам нужна консольная утилита для передачи файлов на мобильный телефон, то вам подойдет пакет obexftp.
# emerge obexftp
Теперь научимся передавать файлы с компьютера на ваш мобильный телефон:
# obexftp -b 00:11:22:33:44:55 -p ~/test
где 00:11:22:33:44:55 - это mac-адрес телефона, на который вы передаете файл, а ~/test - это путь к файлу, который вы передаете. Узнать mac-адрес можно утилитой:
# hcitool scan
[править] Передача файлов с телефона на компьютер
Возможно, принимать файлы можно и через obexftp, когда он работает в режиме сервера, но у меня что-то не получилось и я решил попробовать сделать это с помощью пакета sobexsrv
# emerge sobexsrv
В этот пакет входят скрипты для запуска сервера как сервиса Gentoo, поэтому запускается все просто:
# /etc/init.d/sobexsrv start
Перед этим лучше запускать сервис bluetooth, т.к. sobexsrv использует sdpd. Но перед запуском немного подправим файл конфигурации /etc/conf.d/sobexsrv.Стоит поменять в нем следующие строки:
USER="имя_пользователя_от_которого_запускается_демон" GROUP="группа" INBOX="путь_к_директории_куда_класть_принятые_файлы"
[править] Автоматизация запуска приложений
Возможно автоматизировать запуск всех необходимых сервисов при включении bluetooth адаптера. Напимер, у меня он включается кнопкой на передней панели ноутбука. При установке net-wireless/bluez-utils устанавливаются необходимые правила для udev /etc/udev/rules.d/70-bluetooth.rules, а также скрипт /lib/udev/bluetooth.sh, который можно подправить следующим образом:
#!/bin/sh
#
# bluetooth.sh: udev external RUN script
#
# Copyright 2005-2006 Henrik Brix Andersen <brix@gentoo.org>
# Distributed under the terms of the GNU General Public License v2
script=/etc/init.d/bluetooth
script_srv=/etc/init.d/sobexsrv
[ ! -e "$script_srv" ] && logger "No obex server installed (sobexsrv)"
# Find out where sysfs is mounted. Exit if not available
sysfs=`grep -F sysfs /proc/mounts | awk '{print $2}'`
if [ "$sysfs" = "" ]; then
echo "sysfs is required"
exit 1
fi
if [ ! -d $sysfs/class/bluetooth/hci[0-9]* ]; then
if $script --quiet status; then
$script stop
$script_srv stop
fi
else
if ! $script --quiet status; then
$script start
$script_srv start
fi
fi
Теперь при включении bluetooth-устройства будут запускаться все необходимые сервисы, а при отключении - останавливаться.
|
Посоветовать или спросить, |
