Для начала необходимо включить поддержку bluetooth в ядре (устественно, поддержку USB тоже, если ваш адаптер для этой шины). В моем случае (USB bluetooth dongle MSI MS-6967) адаптер поддерживается драйверами BlueZ
Автор:
Разместил: Amro   Дата: 2006-06-02 11:40
Комментарии: (0)   Рейтинг:

Прикручиваем T68 через Bluetooth к линуксу

Для начала необходимо включить поддержку bluetooth в ядре (устественно, поддержку USB тоже, если ваш адаптер для этой шины). В моем случае (USB bluetooth dongle MSI MS-6967) адаптер поддерживается драйверами BlueZ -

#
# 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
 
#
# Bluetooth device drivers
#
CONFIG_BLUEZ_HCIUSB=m
CONFIG_BLUEZ_USB_SCO=y
CONFIG_BLUEZ_USB_ZERO_PACKET=y
CONFIG_BLUEZ_HCIUART=m
CONFIG_BLUEZ_HCIUART_H4=y
CONFIG_BLUEZ_HCIUART_BCSP=y
CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
CONFIG_BLUEZ_HCIBFUSB=m
CONFIG_BLUEZ_HCIDTL1=m
CONFIG_BLUEZ_HCIBT3C=m
CONFIG_BLUEZ_HCIBLUECARD=m
CONFIG_BLUEZ_HCIBTUART=m
CONFIG_BLUEZ_HCIVHCI=m
Конечно, возможны варианы все вставить в ядро, но это - как желается ;-). Далее, как обычно:
# make dep all modules modules_install install
# shutdown -r now
Ну а далее утягиваем с того-же сайта софт, либо в сырцах, либо для конкретного дистрибутива. Устанавливаем. Правим /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 и сканируем:
# hcitool scan
Scanning ...
        00:0A:D9:2C:87:8B       T68i
Теперь надо "спарить" устройства. Записываем пин-код в файл /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";
}
 
rfcomm2 {
        bind yes;
        device 00:0A:D9:2C:87:8B;
        channel 1;
        comment "T68 DialUp Networking";
}
 
rfcomm3 {
#       bind yes;
        device 00:0A:D9:2C:87:8B;
        channel 2;
        comment "T68 Fax Machine";
}
 
rfcomm4 {
#       bind yes;
        device 00:0A:D9:2C:87:8B;
        channel 3;
        comment "T68 Audio Gateway";
}
 
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 следующее:
add_services()
{
SDPTOOL="/usr/bin/sdptool"
RFCOMM="/usr/bin/rfcomm"

        $SDPTOOL add --channel=10 OPUSH
        $SDPTOOL add --channel=1 DUN
        $SDPTOOL add --channel=2 FAX
        $SDPTOOL add --channel=3 HSET
        $SDPTOOL add --channel=4 SP
        $SDPTOOL add --channel=5 SP
        $RFCOMM bind all
}
и в start(), после daemon /usr/sbin/sdpd
                add_services
Теперь все должно работать "гаутоматЫчно".

К сожалению пока никак не удается прикрутить OpenOBEX к существующей конфигурации. Т.е. все запускается, но, к сожалению, результат нулевой :-(, как впрочем и с obexftp. Хотя последний устанавливает соединение (что видно по логам и мобиле), но отваливается ни с чем...