Site Mascot
 

Не удивляйтесь, сайт переехал: был http://smacker.fatal.ru, стал http://smacker.heliohost.org.

Настройка GPRS-модема через Bluetooth

10.11.2006 4:35

Сегодня я расскажу о моём опыте настройки bluetooth соединения с телефоном для использования последнего в качестве GPRS-модема.

 
После покупки ноутбука я задумался о том, что было бы очень кстати — благо теперь у меня есть USB — воспользоваться возможностью моего телефона работать в качестве GPRS-модема. Однако для связи его с другими устройствами есть только одно средство — радиоканал bluetooth.
Вчера я, открыв в очередной раз онлайновый каталог одной питерской фирмы, где уже более недели пытался отловить дешёвый адаптер второго класса за 200 с небольшим рублей, обнаружил, что он появился в наличии. Не долго думая, я собрался в путь и менее чем через час получил на его на руки. И уже ночью у меня появился интернет через GPRS. Как — об этом я и расскажу.
Разумеется, не всё шло так гладко, как я буду описывать. Я делал ошибки, повторял некоторые действия, перебирал варианты, но сейчас я расскажу обо всём по порядку, без упоминания ошибочных путей. Конечно, надо помнить и о том, что характер рекомендаций — частный, а не всеобщий, т.е. вам это может не подойти. Во всех файлах были сделаны только те изменения относительно исходного их состояния (после установки пакетов), о которых говорится прямо. Операции по редактированию файлов системных настроек и управление сервисами производятся от имени root. Также подразумевается, что на самом телефоне настроен выход в интернет через GPRS.

 

Исходные данные
Система ASP Linux 11 (пробовал как стандартное ядро, так и самосборное 2.6.17 из SRPM)
Ноутбук Dell Latitude L400
Телефон NOKIA N-Gage QD
Bluetooth адаптер HighPaq BT-W001 (Bluetooth 1.2; USB 1.1; радиус действия до 10 метров (класс 2); Скорость передачи данных до 1 Мбит/с)
HighPaq Bluetooth Adapter

 

Важное замечание
Не забудьте посмотреть вторую часть статьи, в которой я описываю существенные поправки к данной.

 

Шаг первый: определение устройства
Итак, первым делом нужно провести контрольную проверку: видится ли устройство или нет (вдруг нам попался неисправный?). для этого говорим lsusb. Вот как выглядит вывод до подключения адаптера:
 [smacker@localhost ~]$ lsusb    
 Bus 001 Device 001: ID 0000:0000 

 

И вот так — после (нужно некоторое время, чтобы адаптер определился контроллером USB):
 [smacker@localhost ~]$ lsusb    
 Bus 001 Device 004: ID 1131:1001 Integrated System Solution Corp.
 Bus 001 Device 001: ID 0000:0000 

 

Шаг второй: mac адрес
Командой hcitool inq ищем устройство (т.е. мобильный телефон, bluetooth на котором уже должен быть включён) и получаем его mac адрес (первое, что находится в строке вывода команды):
 [root@localhost smacker]# hcitool inq
 Inquiring ...
         00:0E:6D:C6:08:FA       clock offset: 0x7b32    class: 0x500204 

 

Правим файл /etc/bluetooth/rfcomm.conf, указывая наш mac адрес и непременно указывая директиву bind yes;
Запускаем сервис bluetooth: service bluetooth start
Командой rfcomm проверяем, всё ли у нас в порядке:
 [root@localhost smacker]# rfcomm
 rfcomm0: 00:0E:6D:C6:08:FA channel 1 clean 

 

Итак, устройство rfcomm0 это наш телефон — вернее, мой. )))

 

PIN
Я столкнулся с одной, но самой главной проблемой, которую долго не мог решить — для работы телефона в режиме модема необходимо установить согласование его и компьютера (paired device). Для этого, как знают владельцы телефонов с bluetooth-ом, необходимо ввести одинаковые пароли на обоих устройствах. Однако в ASP 11 нет вменяемой программы, которая могла бы работать с сервисом bluetooth, и мне не удалось написать работающую «заглушку» (задача которой была бы автоматически сообщить нужный код телефону) самостоятельно.
Для решения этой проблемы я воспользовался скриптом btpin, который позаимствовал из knoppix-а. Правда, в связи с тем, что я имею привычку класть всякий «самодел» в /usr/local, пришлось немного его подправить. Скрипт использует программу Xdialog для отображения окошка для ввода кода и передаёт его телефону. Кстати, собрать Xdialog из сорцов на ноутбуке «с ходу» у меня не получилось, зато те сорцы, из которых он был собран когда-то на десктопе, собрались отлично — я, видимо, в них когда-то что-то уже подправил, а сейчас напрочь забыл, что и как именно. Поэтому я на всякий случай прикладываю и «свою» версию Xdialog.
Внимание: это не официальная версия, и даже не форк. Это просто исходники, которые я подправил для того, чтобы они собрались на моей конкретной системе. Попробуйте сначала собрать официальный исходный код, и только в крайнем случае попробуйте воспользоваться моим. Кроме того, содержимое этого архива не только не обновляется, но, скорее всего, уже устарело.
Итак, я собрал Xdialog, поместил скрипт в /usr/local/bin и сделал его исполняемым (chmod 750 /usr/local/bin/btpin).
Далее, в конфигурационном файле /etc/bluetooth/hcid.conf указал следующее:
 # PIN helper
 pin_helper /usr/local/bin/btpin;
 # D-Bus PIN helper
 #dbus_pin_helper; 

 

В принципе, в файл /etc/bluetooth/pin можно вписать ваш будущий пароль, скажем, 123321 — но насколько я понимаю, btpin этот файл не использует.

 

После этого я перезапустил сервис bluetooth: service bluetooth restart

 

Согласование устройств
С телефона добавляю новое спаренное устройство. Ввожу пароль, на ноутбуке показывается диалоговое окно от btpin, в котором я повторяю паролью. Затем на телефоне помечаю новое спаренное устройство как «разрешённое» — чтобы при установлении новых соединений не требовался ввод пароля.

 

Настройка звонилки: KPPP
wvdial отказался воспринимать номер, нужный для дозвона к Мегафону, так что я воспользовался KPPP. Собственно, wvdial-ом я перестал пользоваться сразу как перешёл на новый ноутбук — KPPP всё-таки удобнее.

 

Добавляем соединение (у меня Северо-Западный Мегафон):
Название — например, Megafon
Телефон — *99***1# (несмотря на то, что написано на их сайте — надо так, узнавал в службе поддержки)
Авторизация — все варианты, кроме «с помощью скрипта» не дадут установить соединение без логина и пароля, а они-то как раз нам и не нужны. Поэтому выбираем «с помощью скрипта» и делаем скрипт из одной команды Pause 0.

 

Добавляем модем, назовём его, скажем, Bluetooth:
Строка инициализации:
 AT+CGDCONT=1,"IP","internet.nw" 
Управление потоком: отсутствует;
Дождаться сигнала в линии — убрать галочку;
Устройство: /dev/rfcomm0

 

Несколько замечаний:
1. Соединение устанавливается очень быстро, так что если вы хотите «только проверить», приготовьтесь быстро нажать на «отмену»... ведь тарификация идёт по 100 Кб, и когда соединение установится, придётся заплатить за такой тест как за 100 Кб трафика.
2. Если соединение долго не устанавливается — это признак ошибки в настройках. Другой вариант: вы сначала настраивали соединение с одним компьютером, потом переставили адаптер на другой и не перезагрузили телефон. Телефон помнит о принадлежности адаптера к машине и это вызывает ошибки, так что если вы используете один-единственный bluetooth свисток, то после подключения его к новой машине удалите старое сопряжение на телефоне, выключите его и снова включите.

 

Побочные эффекты
Bluetooth позволяет не только сидеть в интернете, но и пересылать файлы с телефона на компьютер и обратно. Для этого воспользуйтесь службой kbluetoothd. В использовании она ведёт себя так же, как если бы файлы пересылались между двумя телефонами.

 

Приложение: файлы
btpin.bz2
Xdialog-2.1.2-smacker-fixed.tar.bz2
  1. linadmin
    Email: zanda гав-гав list.ru  
    Благодарю
    Большое спасибо за оперативный ответ по поводу настройки GPRS-модема. Думаю, теперь справлюсь.
    [ Запись от 10.05.2007, отправлена в 6:57 ]
  2. Я буду рад, если вы оставите свой отзыв об этой заметке:

    Никнейм

    Email

    URL

    Заголовок комментария

    Проверка на человечность
    - Введите буквы:
    The CAPTCHA image