Для начала необходимо включить поддержку bluetooth в ядре
(устественно, поддержку USB тоже, если ваш адаптер для этой шины). В
моем случае (USB bluetooth dongle MSI MS-6967) адаптер поддерживается
драйверами BlueZ (http://bluez.sourceforge.net/) -
#
# Bluetooth support
#
CONFIG_BLUEZ=m
CONFIG_BLUEZ_L2CAP=m
CONFIG_BLUEZ_SCO=m
CONFIG_BLUEZ_RFCOMM=m
CONFIG_BLUEZ_RFCOMM_TTY=y
CONFIG_BLUEZ_BNEP=m
CONFIG_BLUEZ_BNEP_MC_FILTER=y
CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
Конечно, возможны варианы все вставить в ядро, но это - как желается
;-). Далее, как обычно:
# make dep all modules modules_install install
# shutdown -r now
Ну а далее утягиваем с того-же сайта [64]софт, либо в сырцах, либо для
конкретного дистрибутива. Устанавливаем. Правим /etc/modules.conf,
куда вписываем следующее:
### BlueTooth ################################
#
alias net-pf-31 bluez
alias bt-proto-0 l2cap
alias bt-proto-3 rfcomm
Стартуем сервис:
# /etc/init.d/bluetooth start
Проверяем наличие локального интерфейса (привожу мой случай):
# hciconfig -a
hci0: Type: USB
BD Address: 00:10:DC:12:34:56 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:733 acl:20 sco:0 events:57 errors:0
TX bytes:3140 acl:37 sco:0 commands:17 errors:0
Features: 0xff 0xff 0x0f 0x00
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'BlueZ-tooth'
Class: 0x000100
Service Classes: Unspecified
Device Class: Computer, Uncategorized
HCI Ver: 1.1 (0x1) HCI Rev: 0x1e7 LMP Ver: 1.1 (0x1) LMP Subver: 0x1e7
Manufacturer: Cambridge Silicon Radio (10)
Прекрасно! Локальный адаптер "прикрутился". Теперь устанавливаем
телефон в bluetooth discoverable и сканируем:
Теперь надо "спарить" устройства. Записываем пин-код в файл
/etc/bluetooth/pin, потом перезапускаем bluetooth, дальше с телефона
запрашиваем инициировать "спаривание" (результаты можно наблюдать в
/var/log/messages).
Теперь пришло время sdptool. Сканируем мобилу на предмет
предоставляемых сервисов (приведу некоторые, кои нас будут
интересовать):
# sdptool browse 00:0A:D9:2C:87:8B
Browsing 00:0A:D9:2C:87:8B ...
Service Name: Dial-up Networking
Service RecHandle: 0x10000
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Service Name: Serial Port 1
Service RecHandle: 0x10003
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 4
Service Name: Serial Port 2
Service RecHandle: 0x10004
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Service Name: OBEX Object Push
Service RecHandle: 0x10005
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100
Создаем устройства rfcomm:
I=0 ;
while [ "$I" -lt 256 ]; do
if [ ! -c /dev/rfcomm"$I" ]; then
mknod -m 666 /dev/rfcomm"$I" c 216 "$I" ;
fi ;
I=`expr "$I" + 1` ;
done
Сначала проверим работу rfcomm "вручную":
# rfcomm bind 0 00:0A:D9:2C:87:8B 4
Этой командой устанавливается связь между последовательным устройством
и bluetooth-сервисом телефона на канале 4 (последовательный порт).
Проверить работоспособность можно с помощью программы minicom - надо
войти в установки программы и указать использование порта
/dev/rfcomm0, после чего вы получите доступ к модему телефона
(управление с помощью AT-крманд). Через этот-же порт можно
устанавливать GPRS-соединение с интернетом с помощью pppd.
Чтобы не делать лишних пассов в будущем, пишем
/etc/bluetooth/rfcomm.conf (согласно сервисам мобилы):
rfcomm0 {
bind yes;
device 00:0A:D9:2C:87:8B;
channel 4;
comment "T68 Serial Port 1";
}
rfcomm1 {
bind yes;
device 00:0A:D9:2C:87:8B;
channel 5;
comment "T68 Serial Port 2";
}
rfcomm10 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device 00:0A:D9:2C:87:8B;
# RFCOMM channel for the connection
channel 10;
# Description of the connection
comment "MyMobile OBEX";
}
А чтобы все это запускалось вместе с сервисом bluetooth, добавим в
/etc/init.d/bluetooth следующее:
и в start(), после daemon /usr/sbin/sdpd
add_services
Теперь все должно работать "гаутоматЫчно".
К сожалению пока никак не удается прикрутить OpenOBEX к существующей
конфигурации. Т.е. все запускается, но, к сожалению, результат нулевой
:-(, как впрочем и с obexftp. Хотя последний устанавливает соединение
(что видно по логам и мобиле), но отваливается ни с чем...
Автор: Dmitry Lya <mcweesatbasis-is.spb.ru>
1015 Прочтений • [Подключение мобильного телефона T68 через Bluetooth к Linux (wireless bluetooth driver linux gprs mobile modem)] [08.05.2012] [Комментариев: 0]