Одной из причин на покупку моего телефона, Nokia 7650, была поддержка Bluetooth, и мне пришлось потрудиться, чтобы настроить его под Linux, и использовать телефон в качестве простой цифровой камеры и т.п. В этой статье я и опишу, чего мне удалось добиться
Автор:
Разместил: Amro   Дата: 2006-06-02 11:20
Комментарии: (0)   Рейтинг:

Bluetooth и Linux на примере Nokia 7650

Автор: Дмитрий Шурупов aka SHuRuP
E-mail: [root at nixp dot ru]
ICQ: 76011665
Домашняя страничка: http://www.nixp.ru/

Автор оригинала: Maarten Stolte
Прочитать оригинал >>

1. Введение
2. Подключаемся с помощью Bluez
3. Знакомимся с OpenOBEX
4. Погружаемся в GNOME
5. Открытые источники

Введение

Одной из причин на покупку моего телефона, Nokia 7650, была поддержка Bluetooth, и мне пришлось потрудиться, чтобы настроить его под Linux, и использовать телефон в качестве простой цифровой камеры и т.п. В этой статье я и опишу, чего мне удалось добиться. Однако, проблем с поддержкой bluetooth у Linux хватает, особенно с точки зрения приложений. Например, я так и не настроил синхронизацию календаря и адресной книжки…

Bluetooth, изобретенный голландским инженером в шведской корпорации Ericsson в 1994 году, получил свою название от Harald'а Blaatand (на английском «Bluetooth») II, короля Дании 940—981 годов до нашей эры, который был хорошим связным. Связь предназначена для подключения электронных устройств путем использования коротких радио-сигналов на дистанции не более чем, примерно, 10 метров. Скорость передачи данных составляет 1 МБит/с, из которых 20 процентов может расходоваться на посторонние вещи (header-информация и т.п.).

Существует множество устройств, поддерживающих bluetooth, среди них телефоны, КПК, принтеры и клавиатуры. Большинство из них могут быть использованы в Linux, однако, как я уже писал в введении, статья посвящена телефонам.

Подключаемся с помощью Bluez

Существует четыре реализации bluetooth в Linux, но только Bluez и Affix распространяются под лицензией GPL. Я решил остановиться на Bluez, т.к. он присутствует в 2.4-ядрах Red Hat Linux, дистрибутива, который я использовал при написании этой статьи. Он является выбором многих других дистрибутивов, таких как SuSE, Mandrake, Debian и Gentoo.

Вам потребуются следующие установленные пакеты:

            bluez-libs
bluez-sdp
bluez-utils
gnome-bluetooth

После установки необходимо ввести свой bluetooth pincode под root'ом:

            # echo "your_pin_here" > /etc/bluetooth/pin

В "/etc/bluetooth/hcid.conf" укажите название своего bluetooth-устройства, чтобы он мог быть распознан компьютером при сканировании на наличие bluetooth-устройств в дальнейшем.

Запустите bluetooth daemon:

            # /etc/init.d/bluetooth start

Теперь пора проверить пару вещей, запустим hciconfig:

            $ /usr/sbin/hciconfig -a

hci0: Type: USB
BD Address: 00:00:00:00:00:00 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:331 acl:1 sco:0 events:46 errors:0
TX bytes:1412 acl:0 sco:0 commands:39 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'
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-скрипта. Проверим, нашелся ли наш телефон:

            $ hcitool scan

Scanning ...
00:02:EE:A0:25:90 Nokia7650


Если телефон не найден, проверьте, включен ли bluetooth в его настройках. Посмотрим, способен ли телефон на все, о чем говорилось в рекламе Nokia:

            $ sdptool browse 00:02:EE:A0:25:90

Browsing 00:02:EE:A0:25:90 ...
Service Name: Fax
Service RecHandle: 0x10000
Service Class ID List:
"Fax" (0x1111)
"Generic Telephony" (0x1204)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Fax" (0x1111)
Version: 0x0100

Service Name: Dial-up Networking
Service RecHandle: 0x10001
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: Bluetooth Serial Port
Service RecHandle: 0x10003
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100

Service Name: OBEX Object Push
Service RecHandle: 0x10004
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 9
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x1000d
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100


Похоже, все в порядке.

Знакомимся с OpenOBEX

Пора поиграться с тем, что откроет нам доступ ко всем сервисам. Во-первых, это OpenOBEX — open-source версия протокола Object Exchange (OBEX). По словам самого проекта, «OBEX — протокол сессий, и может быть лучше всего описан как бинарный HTTP-протокол». Он используется для отправки/закачки файлов между bluetooth-устройствами.

OpenOBEX должен быть установлен после всех проинсталлированных нами до этого rpm.

Погружемся в GNOME

Для использования протокола OpenOBEX мы обратимся к GNOME, так как похоже, что для него существует наиболее зрелое ПО подобного рода (и очень простое в использовании). Если вам не нравится GNOME или вы предпочитаете только CLI, то можете подыскать и другие достойные OBEX-программы.

Теперь мы можем закчивать файлы на телефон, но для начала попробуем определить адрес телефона:

запустите (под обычным пользователем)

            $ gnome-bluetooth-admin

и нажмите [scan].

Через несколько секунд появится список bluetooth-устройств. При выборе какого-либо из них должны появится его возможности и сетевой адрес.

gnome-bluetooth-admin showing off

Теперь, когда мы знаем адрес телефона, можем загрузить на него файл с помощью команды "gnome-obex-send":

            $ gnome-obex-send -dest 00:02:EE:A0:25:90
            Nokia_7650_RemoteSync.SIS

Таким образом файл перекачается в основную папку телефона, как только появится соответствующая надпись на телефоне.

gnome-obex-send showing progress

Для обратного процесса, перекачивания файлов из телефона на компьютер, выберите «Bluetooth file sharing» в главном меню в «system tools > more system tools». Теперь в Gnome появится иконка с bluetooth. Когда что-нибудь будет отправляться с телефона на ПК, иконка будет начинать двигаться, а файлы помещаться в домашний каталог.

5. Открытые источники

 — Zur Zeit als die Pinguine blaue Z?hne bekamen (in German), Marcel Holtmann: http://www.holtmann.org/papers/bluetooth/uptimes2003.html

 — Bluez, Official Linux Bluetooth protocol stack: http://www.bluez.org/

 — OpenOBEX: http://openobex.sourceforge.net/

 — The Fedora Project: http://fedora.redhat.com/

 — GNOME Bluetooth Subsystem: http://usefulinc.com/software/gnome-bluetooth/

 — Bluetooth and Linux, links by Marcel Holtmann: http://www.holtmann.org/linux/bluetooth/

 — Tux logo modified by Melissa van Putten: http://lizzy.orangenose.com/

Материал взят с сайта Linux.ru