Главная

О кафедре

История

События

Методические материалы

Книги

Электронные
книги


Источники
и  пособия


Библейское обозрение

Рекомендуемые
программы


Ссылки

Обновления
сайта


Написать
письмо

ДОСТУП В ИНТЕРНЕТ ИЗ GNU/LINUX
С ПОМОЩЬЮ BLUETOOTH И GPRS МОБИЛЬНОГО ТЕЛЕФОНА

Практическое руководство по настройке Bluetooth + GPRS для GNU/Linux SuSE 10.1 в KDE 3.5.1

Доступ через GPRS, который в настоящее время обеспечивают все операторы связи стандарта GSM, может быть удобен по следующим причинам:

  • мобильность: можно настроить ноутбук и выходить в интернет из разных мест;
  • доступность при достаточной надежности: во многих регионах России до сих пор модемное подключение по проводной линии недостаточно надежное (частые обрывы, зависания) при его относительной дороговизне;
  • удобство оплаты: оплачивается трафик, а не время подключения - можно не торопясь работать в интернете;
  • голосовой канал мобильного телефона при этом не занят.

Недостатком GPRS-связи является невысокая скорость передачи данных (обычно не более 8 Кбит/с), а также то, что в центре крупных городов при большом количестве мобильных вызовов днем, в "час пик", канал GPRS-связи может быть временно использован мобильным оператором для передачи голосовых данных; на этот период GPRS-доступ отключается. При регулярной загрузке больших (десятки Мб) по объему файлов GPRS-соединение становится уже не столь дешевым.

Для подключения компьютера с GNU/Linux SuSE 10.1 к интернету через мобильный телефон посредством Bluetooth необходимо:

  • телефон должен иметь полностью функциональный модуль Bluetooth с функцией доступа в интернет и предачей данных (будьте внимательны: многие новые телефоны имеют модуль Bluetooth с усеченной функциональностью, которая позволяет телефону соединяться только с гарнитурой; такой телефон не подойдет);
  • компьютер должен иметь модуль Bluetooth. Большинство настольных компьютеров и ноутбуков такого модуля не имеет: в таком случае нужно купить модуль Bluetooth на USB порт. При покупке поинтересуйтесь, поддерживается ли GNU/Linux (если нет, то хотя бы Mac OS - такие модули должны работать и в GNU/Linux).
Часть 1. Установление связи компьютера с мобильным телефоном посредством Bluetooth

В качестве примеров в данном руководстве были использованы телефон Sony Ericsson S700i и Blurtooth-адаптор Cambridge Silicon Radio для порта USB.

Прежде всего проверяем, установлены ли в системе пакеты, необходимые для работы с Bluetooth-устройствами. Для этого или в консоли вводим запросы относительно наличия пакетов bluez-libs, bluez-utils и kdebluetooth:

> rpm -q bluez-libs
bluez-libs-2.24-10

> rpm -q bluez-utils
bluez-utils-2.24-17

> rpm -q kdebluetooth
kdebluetooth-0.0.svn20060413-7
или смотрим в
KDE меню -> Система -> YaST (Центр управления) -> Программное обеспечение -> Управление программным обеспечением...
Поиск: bluetooth

Напротив указанных выше пакетов (bluez-libs, bluez-utils и kdebluetooth) должна стоять отметка о том, что они установлены в системе.

Если пакеты не установлены, устанавливаем их с диска дистрибутива. Подключаем Bluetooth USB адаптор в USB порт. В случае необходимости перезагружаем компьютер.

KDE выдает сообщение: найдено устройство Bluetooth, хотим ли мы его настроить?
Отвечаем: да. Запускается YaST -> оборудование -> Bluetooth. Конфигурируем:

  • Конфигурация Bluetooth: Включить службу Bluetooth: да.
  • Базовая конфигурация. Имя устройства: dellhost [здесь вводится то имя, по которому другие устройства будут идентифицировать наш компьютер]
  • Менеджер безопасности: Использовать локальный PIN для входящих соединений. Идентификационный номер pin: [оставляем пустое поле]
  • Дополнительная конфигурация демона... HCI, SDP, OPD, RFCOMM, HID - включены, PAND, DAND, HID2HCI - выключены.
  • Параметры безопасности... Аутентификация: да, шифрование: да, сканирование запроса: да, сканирование страницы: да.
  • Классы устройств и служб... Класс устройства: обычный компьютер. Перемещение объектов (v-Inbox, v-Folder и т.д.): да, остальные: нет.

Переходим в консоль и в режим суперпользователя:

> su
Password: [вводим пароль суперпользователя]
#

После этого с помощью любого текстового редактора (или с помощью Krusader с режиме суперпользователя) редактируем файл /etc/bluetooth/hcid.conf , например:

# kate /etc/bluetooth/hcid.conf

Меняем в этом файле в разделе:

# 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;
последнюю строку на
lm accept, master;
(это необходимо для того, чтобы наше устройство становилось главным при Bluetooth-соединении).

Даем команду обращения к USB-Bluetooth адаптеру компьютера и получаем вывод наподобие следующего:

# hciconfig -a
hci0:   Type: USB
        BD Address: 00:0A:94:02:22:1E ACL MTU: 384:8 SCO MTU: 64:8
        UP RUNNING AUTH ENCRYPT
        RX bytes:478 acl:0 sco:0 events:34 errors:0
        TX bytes:380 acl:0 sco:0 commands:26 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'dellhost'
        Class: 0x100100
        Service Classes:
        Device Class: Computer, Uncategorized
        HCI Ver: 1.1 (0x1) HCI Rev: 0x7a6 LMP Ver: 1.1 (0x1) LMP Subver: 0x7a6
        Manufacturer: Cambridge Silicon Radio (10)
    Здесь:
  • BD Address: 00:0A:94:02:22:1E - уникальный адрес Bluetooth-устройства, которое имеется в нашем компьютере,
  • UP RUNNING AUTH ENCRYPT - служба работает, включено шифрование.

Включаем Bluetooth службу на телефоне (обычно где-то Bluetooth -> Включить). На телефоне появляется значок Bluetooth.

Сканируем на наличие вблизи компьютера доступных Bluetooth-устройств:

# hcitool scan
При этом обнаруживается наш телефон:
# hcitool scan
Scanning ...
        00:0F:DE:82:22:87       S700i
    Здесь
  • 00:0F:DE:82:22:87 - BD-адрес телефона, который будет активно нами использоваться, его нужно запомнить,
  • S700i - имя телефона, которое прописано в настройках Bluetooth телефона.

Осуществляем проверку надежности передачи пакетов между компьютером и телефоном:

# l2ping 00:0F:DE:82:22:87

Компьютер запрашивает, соединиться ли с телефоном - отвечаем да, вводим любой PIN-код (например: 7777). Затем телефон запрашивает: добавить ли dellhost (т.е. то имя компьютера, которое Вы задали выше, в настройках Bluetooth) в список доступных устройств - отвечаем: да, вводим на телефоне тот же PIN-код. Получаем на экране ряд сообщений, нажимаем через несколько секунд Ctrl-C. Имеем что-то вроде этого:

# l2ping 00:0F:DE:82:22:87
Ping: 00:0F:DE:82:22:87 from 00:0A:94:02:22:1E (data size 44) ...
0 bytes from 00:0F:DE:82:22:87 id 0 time 52.77ms
0 bytes from 00:0F:DE:82:22:87 id 1 time 36.25ms
0 bytes from 00:0F:DE:82:22:87 id 2 time 33.06ms
0 bytes from 00:0F:DE:82:22:87 id 3 time 34.14ms
0 bytes from 00:0F:DE:82:22:87 id 4 time 31.99ms
0 bytes from 00:0F:DE:82:22:87 id 5 time 40.03ms
0 bytes from 00:0F:DE:82:22:87 id 6 time 35.94ms
0 bytes from 00:0F:DE:82:22:87 id 7 time 36.89ms
0 bytes from 00:0F:DE:82:22:87 id 8 time 34.83ms
0 bytes from 00:0F:DE:82:22:87 id 9 time 34.78ms
0 bytes from 00:0F:DE:82:22:87 id 10 time 33.71ms
11 sent, 11 received, 0% loss
Надпись 0% loss означает, что передача идет без потери данных. Хорошо.

Можно (но это не обязательно) посмотреть дополнительную информацию о Bluetooth-модуле телефона:

# hcitool info 00:0F:DE:82:22:87
Requesting information ...
        BD Address:  00:0F:DE:82:22:87
        Device Name: S700i
        LMP Version: 1.1 (0x1) LMP Subversion: 0x9240
        Manufacturer: Philips Semiconductors (37)
        Features: 0xff 0x3b 0x01 0x00 0x00 0x00 0x00 0x00
                <3-slot packets> <5-slot packets> <encryption> <slot offset>
                <timing accuracy> <role switch> <hold mode> <sniff mode>
                <park state> <RSSI> <SCO link> <HV2 packets> <HV3 packets>
                <CVSD>

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

# sdptool browse 00:0F:DE:82:22:87
Если эта команда не заработает, запускаем сначала соответствующий демон sdpd, а потом - команду:
# sdpd
# sdptool browse 00:0F:DE:82:22:87
Получаем вывод очень подробной информации о модуле Bluetooth телефона, что-то наподобие нижеприведенного:
Browsing 00:0F:DE:82:22:87 ...
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: HS Voice Gateway
Service RecHandle: 0x10002
Service Class ID List:
  "Headset Audio Gateway" (0x1112)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 4
Profile Descriptor List:
  "Headset" (0x1108)
    Version: 0x0100

Service Name: Serial Port
Service RecHandle: 0x10003
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 2

Service Name: Serial Port 2
Service RecHandle: 0x10004
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3

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

Service Name: OBEX IrMC Sync Server
Service RecHandle: 0x10006
Service Class ID List:
  "IrMC Sync" (0x1104)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 8
  "OBEX" (0x0008)
Profile Descriptor List:
  "IrMC Sync" (0x1104)
    Version: 0x0100

Service Name: OBEX Basic Imaging
Service RecHandle: 0x1000a
Service Class ID List:
  "Imaging Responder" (0x111b)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 9
  "OBEX" (0x0008)
Profile Descriptor List:
  "Imaging" (0x111a)
    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: 7
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX File Transfer" (0x1106)
    Version: 0x0100

Service Name: HF Voice Gateway
Service RecHandle: 0x1000e
Service Class ID List:
  "Handfree Audio Gateway" (0x111f)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 5
Profile Descriptor List:
  "Handsfree" (0x111e)
    Version: 0x0101

Service Name: OBEX SyncML Client
Service RecHandle: 0x10018
Service Class ID List:
  "Error: This is UUID-128" (0x00000002-0000-1000-8000-0002ee000002)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 15
  "OBEX" (0x0008)

Service Description: S700 series
Service RecHandle: 0x1001b
Service Class ID List:
  "PnP Information" (0x1200)

Service Name: Mouse & Keyboard
Service Description: S700
Service Provider: Sony Ericsson
Service RecHandle: 0x1001c
Service Class ID List:
  "Human Interface Device" (0x1124)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 17
  "HIDP" (0x0011)
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Human Interface Device" (0x1124)
    Version: 0x0100

Для выхода в интернет будем использовать службу Dial-up Networking.В листинге она указана первой, причем подключена она на канале 1 (Channel: 1) и обеспечивает доступ через радио-com порт ("RFCOMM" (0x0003))

Проверяем, есть ли у нас уже в системе на компьютере порты для Bluetooth (которые могут уже быть настроены на работу с другими устройствами, поэтому будьте внимательны при назначении имени порта):

# ll /dev/rfcomm*
/bin/ls: /dev/rfcomm*: Нет такого файла или каталога
Таких устройств у нас пока нет.

Поэтому создадим /dev/rfcomm0 для постоянной работы с нашим телефоном (имеющим адрес 00:0F:DE:82:22:87) по каналу 1 (которому соответствует служба Dial-up Networking):

# rfcomm bind rfcomm0 00:0F:DE:82:22:87 1
(Если бы нужно было создать устройство только для однократного соединения с телефоном, то надо было бы дать команду:
# rfcomm connect rfcomm0 00:0F:DE:82:22:87 1
). Проверяем, правильно ли работает канал:
# rfcomm show
rfcomm0: 00:0F:DE:82:22:87 channel 1 clean

Далее необходимо отредактировать файл /etc/bluetooth/rfcomm.conf - для того, чтобы каждый раз при запуске Bluetooth происходила автоматическая привязка к Bluetooth порту нашего мобильного телефона (т.е. к rfcomm0). В данном файле в разделе
rfcomm0 {
	# Automatically bind the device at startup
	bind no;
последнюю строку меняем на
	bind yes;
Указываем также в этом файле BD-адрес нашего телефона и номер канала соединения, меняя соответствующие строки в разделах:
	# Bluetooth address of the device
	device 00:0F:DE:82:22:87;

	# RFCOMM channel for the connection
	channel	1;

Далее необходимо сделать так, чтобы служба Bluetooth запускалась при каждом запуске системы. Проще всего это сделать в

    KDE меню -> YaST (Центр управления) -> Система -> Системные службы (Runlevel)...
  • Системные службы (Уровень выполнения): службы.
    • Выбираем "Экспертный режим"
    • В "Экспертном режиме" выделяем bluetooth
    • Внизу, в разделе "Служба будет запущена в следующих уровнях", выбираем: 3 и 5 (а также 2, если Вы когда-либо работаете на этом уровне).
    • Завершить
Часть 2. Настройка соединения с интернетом через мобильный телефон посредством GPRS

Теперь настраиваем GPRS соединение с интернетом через Bluetooth. Это можно сделать различными способами - для каждого из них устройство /dev/rfcomm0 будет фигурировать как модем. Ниже приведено описание подключения в графической среде KDE 3.5.1 с использованием утилиты kppp. Подключение другим способом (например, через KInternet) будет во многом аналогичным.

Вызываем kppp: KDE меню -> Интернет -> Телефонное соединение (т.е. kppp)

Первый вызов kppp от имени конкретного пользователя сразу дает ошибку: "Недостаточно прав для запуска /usr/sbin/pppd Убедитесь, что владельцем kppp является root и SUID-бит установлен" (это особенность настроек по умолчанию дистрибутива SuSE 10.1, в других дистрибутивах, например, Mandriva 2006, настройки по умолчанию таковы, что данный этап можно пропустить, перейдя сразу к настройке kppp для доступа в интернет).

Исправляем ситуацию. В консоли проверяем, какие права на доступ имеются у файла /usr/sbin/pppd :

# ls -l /usr/sbin/pppd
-rwxr-xr-x 1 root dialout 291796 2006-04-23 06:38 /usr/sbin/pppd
Действительно, для файла не установлен бит SUID - "Set user ID on execution" (s), который позволяет запускать данный файл не его владельцуу-суперпользователю, а другим пользователям. Устанавливаем данный бит:
# chmod u+s /usr/sbin/pppd
Проверяем, что получилось:
# ls -l /usr/sbin/pppd
-rwsr-xr-x 1 root dialout 291796 2006-04-23 06:38 /usr/sbin/pppd
Заодно разрешаем и утилиту kppp запускать от имени не-суперпользователя (в противном случае будет появляться сообщение об ошибке: "Невозможно создать lock-файл для модема"). Смотрим в консоли, где находится программа kppp:
# whereis kppp
kppp: /opt/kde3/bin/kppp
Получаем информацию о kppp, исходя из указанного расположения:
# ls -l /opt/kde3/bin/kppp
-rwxr-xr-x 1 root root 571236 2006-05-02 15:49 /opt/kde3/bin/kppp
Устанавливаем SUID:
# chmod u+s /opt/kde3/bin/kppp
Проверяем еще раз:
# ls -l /opt/kde3/bin/kppp
-rwsr-xr-x 1 root root 571236 2006-05-02 15:49 /opt/kde3/bin/kppp

Теперь запускаем вновь kppp и настраиваем соответствующие поля для доступа в интернет

KDE меню -> Интернет -> Телефонное соединение (kppp)
    Настроить... Параметры kppp:
  • Соединения...
    Создать...
    • Ручная настройка:
      • Имя соединения: Megafon-GPRS [вводим желаемое имя]
      • Номер телефона: Добавить: *99#
      • Авторизация: PAP/CHAP
      • Сохранить пароль: да
      • Тип Callback, нет
  • Модемы...
    Создать...
    • Устройство
      • Имя модема: S700i-gprs [вводим желаемое имя для модема]
      • Устройство модема: /dev/rfcomm0
      • Управление потоком: Программное (XON/XOFF)
      • Окончание строки: CR
      • Скорость соединения: 115200
      • Использовать lock-файл: да
      • Тайм-аут модема: 120 с
    • Модем
      • Дождаться сигнала в линии перед набором номера: нет
      • Ожидание при занятой линии: 0 с
      • Громкость динамика модема: среднее [значения не имеет]
      • Команды модема... Редактирование команд модема...
        • Строка инициализации 1:
          AT+CGDCONT=1, "IP", "internet.nw" OK

          Внимание! Строка инициализации указана для Северо-Западного Мегафона - Санкт-Петербург, Ленинградская область и т.д. Для других операторов и регионов отличие в скрипте подключения будет заключаться прежде всего в указании параметра, который называется APN (access point name - имя точки доступа). В данном примере это - internet.nw (в строке инициализации его надо прописать в двойных кавычках).

          Информацию об APN см. прежде всего на официальных сайтах операторов связи в разделах "Настройка GPRS" (у "СЗ-Мегафона" он находится в разделе "Абонентам - Настройки мобильных телефонов - Мобильный интернет GPRS"; для Москвы имеется специальный раздел сайта - "Автоматическая настройка телефонов для GPRS" - использовав эту службу, можно посмотреть потом APN в настройках телефона).

          Например, для МТС по всей России APN должно быть internet.mts.ru, тогда строка инициализации 1 будет выглядеть так: AT+CGDCONT=1, "IP", "internet.mts.ru" OK

          См. также очень полезный сайт "Linux Mobile"; в частности, раздел "Статьи". Строки инициализации для разных разных операторов связи можно посмотреть в тексте скриптов, которые можно загрузить с этой страницы указанного сайта.

          По состоянию на август 2006 года строки инициализации из указанных скриптов для отдельных регионов были нижеследующие (автором данной статьи не тестировались!):

          Оператор	Регион			APN
          Билайн Все по России internet.beeline.ru
          Мегафон Москва, т.п. "Лайт" internet.ltmsk
          Мегафон С-Петербург и Сев-Зап internet.nw
          МТС Все по России internet.mts.ru

          Приведенная выше строка инициализации подходит для большинства моделей мобильных телефонов. В противном случае см. сайт "Linux Mobile".

        • Строка инициализации 2: [пусто]
          • Опросить модем...
            Результаты опроса модема:
            ATI: S700 series
            ATI1: CXC125935
            ATI2:
            ATI3: Sony Ericsson S700 Bluetooth Modem
            ATI4:
            ATI5: Configuration Settings on Channel 0 &C: 1 &D: 0 *EIAC: 1,1,"MegaFon WAP GPRS" *EIAC: 2,1,"MegaFon MMS GPRS" *EIAC: 3,1,"Megafon gprs" *ELIN: 1 +CBST: 0,0,1 +CDIP: 0,2 +CGACT: 1, 0 +CGACT: 2, 0 +CGACT: 3, 0 +CGATT: 0 +CGDCONT: 1,"IP","intern...
            ATI6:
            ATI7:
            ATI8: Modem Configuration Profile Product Type Terminal Adapter Interfaces Bluetooth, IrDA, RS-232 Options OBEX, PPP, RLP, V42bis
      • Разное
        • Тайм-аут pppd: 60 с
        • Встроить в панель при соединении: да
        • Автодозвон при разъдинении: да
        • Автодозвон при NO CARRIER: нет
        • Показывать время в строке заголовка: да
        • Разъединиться при остановке X-сервера: да
        • Выход при разъединении: нет
        • Свернуть окно при соединении: да

      Теперь в главном окне kppp выбираем:

      • Соединение с: Megafon-GPRS
      • Имя пользователя: inet [можно указать любое другое, значения не имеет]
      • Пароль: inet [можно указать любой, значения не имеет]
      • Показать окно журнала: да

      Подключиться...

      Если все было сделано правильно, происходит подключение (справа внизу появится значок kppp). Можно работать в интернете.

      Примечание. При составлении была использована статья: Андрей Бешков. Bluetooth + Linux, или Синий зуб на службе cистемного администратора // Системный администратор, 2004, 10.

      Свящ. Дм. Юревич,
      веб-редактор сайта КБ МДА


      © Кафедра библеистики МДА, 2006.
      Последнее обновление:
      Адрес в интернете: http://www.bible-mda.ru/soft/bluetooth/bluetooth-gprs.html

      Рейтинг@Mail.ru ЧИСТЫЙ ИНТЕРНЕТ - logoSlovo.RU