Arhive:Подключение к интернету через мобильный телефон с GPRS по Bluetooth

Перейти к: навигация, поиск
Статья описывает настройку доступа в интернет с помощью Bluetooth И GPRS мобильного телефона для KDE
Версия: 11.1 и ранееВ последних версиях openSUSE, это достаточно просто настраивается через графический интерфейс.

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

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

Установление связи компьютера с мобильным телефоном посредством 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, если Вы когда-либо работаете на этом уровне).
  • Завершить

Настройка соединения с интернетом через мобильный телефон посредством 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: Соединения...
     Создать...
         o Ручная настройка:
               + Имя соединения: Megafon-GPRS [вводим желаемое имя]
               + Номер телефона: Добавить: *99#
               + Авторизация: PAP/CHAP
               + Сохранить пароль: да
               + Тип Callback, нет
  • Модемы...
     Создать...
         o Устройство
               + Имя модема: S700i-gprs [вводим желаемое имя для модема]
               + Устройство модема: /dev/rfcomm0
               + Управление потоком: Программное (XON/XOFF)
               + Окончание строки: CR
               + Скорость соединения: 115200
               + Использовать lock-файл: да
               + Тайм-аут модема: 120 с
         o Модем
               + Дождаться сигнала в линии перед набором номера: нет
               + Ожидание при занятой линии: 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"; в частности, раздел "Статьи". Строки инициализации для разных разных операторов связи можно посмотреть в тексте скриптов, которые можно загрузить с этой страницы указанного сайта.

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

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

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

  1. Строка инициализации 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
  • Разное
         o Тайм-аут pppd: 60 с
         o Встроить в панель при соединении: да
         o Автодозвон при разъдинении: да
         o Автодозвон при NO CARRIER: нет
         o Показывать время в строке заголовка: да
         o Разъединиться при остановке X-сервера: да
         o Выход при разъединении: нет
         o Свернуть окно при соединении: да


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

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


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

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

P.S. Не забывайте также добавить вашу учетную запись в группу dialout, это нужно для нормальной работы программы pppd.