Автор статьи: Дата: 22.07.2003
название статьи: Подключаемся к Интернет через модем в сотовом телефоне
версия: 0.1
ключевые слова для поиска: сотовый телефон модем интернет dial-up pppd
chat linux GPRS siemens mt50 nokia 6100 motorola c333 v600
Обновления: 05.11.2004
1. Введение.
Недавно у меня появилась возможность блуждать по Сети при помощи GPRS через одного
из операторов мобильной связи стандарта GSM. В моем случае это Билайн. Когда я
сам начал настраивать все это дело, то поверхностным поиском по Сети найти что-нибудь
толковое на эту тему не удалось, поэтому после того, как разобрался, решил по
возможности понятно описать свои действия.
2. Общие соображения.
Я не знаю - можно ли использовать сотовый телефон для диалапа на обычные номера
ГТС. Не мне судить об осмысленности такого подключения - ситуации бывают разные.
Что же касается технической реализации такого момента - ничего не мешает кодировать
данные как речь и передавать как обычно. Но при таком соединении скорость передачи
не будет превышать 14400 бит/с (для большинства опеаторов это вообще 9600 бит/с) и
будет тарифицироваться как обычный исходящий звонок на городской номер. С другой
стороны - мне неизвестно, поддерживает ли модем телефона такую возможность (точно
удовостовериться ни в том, ни в обратном пока не получается). Также имеется подозрение,
что оператор может запретить маршрутизацию звонков либо такого типа, либо на такие
номера ГТС, либо и то, и другое.
То же самое с применением GPRS на мой взгляд невозможно в принципе, потому как
в рамках этой технологии звонка как такового не производится и GPRS использует
свойства GSM (тайм-слоты в частности).
3. Исходные данные.
Телефон Siemens MT50, интерфейсный (или data) кабель, пакет pppd. Интерфейсный
кабель в течение этого процесса я перепаял на десять рядов и поэтому уже не помню,
на каком варианте остановился. Скорее всего на нуль-модемном. Точно могу сказать,
что используются только линии TxD и RxD и Общий провод.
Для установления соединения и работы в Интернет будем использовать связку pppd
и chat. Собственно установление соединения начинается с запуска скрипта ppp-on. По его
успешном окончании в системе появится интерфейс ppp0 (если других PPP-интерфейсов в
системе нет, иначе просто номер этого будет на единицу больше наибольшего) - об этом
можно узнать из вывода команды /sbin/ifconfig.
4. Скрипты.
1) /etc/ppp/ppp-on:
#!/bin/bash
exec /usr/sbin/pppd /dev/ttyS1 57600 lock nocrtscts nocdtrcts noipdefault \
defaultroute 0.0.0.0:0.0.0.0 user beeline connect /etc/ppp/dial
/dev/ttyS1 - телефон подключен через COM2;
57600 - модем в моем телефоне на 56К;
lock - монопольная работа с портом;
nocrtscts, nocdtrcts - не использовать в работе управляющие сигналы порта
(у меня ведь используются только две линии);
noipdefault - ипишник мне присвоит провайдер;
defaultroute 0.0.0.0:0.0.0.0 - маршрут по умолчанию тоже;
user beeline - логин, пароль находится в pap-secrets (мой провайдер использует
PAP-аутентификацию)
connect /etc/ppp/dial - для установления соединения с провайдером использовать
скрипт /etc/ppp/dial.
2) Содержимое /etc/ppp/pap-secrets:
# пользователь сервер пароль
beeline 192.168.17.1 beeline
ИП сервера я узнал у провайдера. Скорее всего он также имеется в настройках профиля
WAP в телефоне. Вместо ИП сервера наверное можно поставить и *.
3) /etc/ppp/dial:
#!/bin/bash
exec /usr/sbin/chat -v -f /etc/ppp/connect
Программа chat - это "звонилка", обычно поставляется вместе с pppd и
используется для установления низкоуровневого соединения между модемами (aka handshake).
Скрипт, управляющий ее работой, называется /etc/ppp/connect. В нем как раз и прописываются
команды управления модемом (или AT-команды).
4) Скрипт /etc/ppp/connect:
ABORT BUSY
ABORT 'NO CARRIER'
""
ATZ OK
AT+CGDCONT=1,"IP","internet.beeline.ru" OK
ATDT*99***1#
CONNECT ""
Здесь вроде все понятно. Строку инициализации и номер телефона я узнал у провайдера,
набор тоновый.
Теперь надо дать права на выполнение скриптам ppp-on и dial и скомандовать /etc/ppp/ppp-on.
Через некоторое время соединение должно установиться и появится интерфейс ppp0,
это можно проверить при помощи ifconfig. Если ничего не получилось - смотрите
/var/log/messages на предмет ошибок.
5. Послесловие.
Конечно скрипт /etc/ppp/connect довольно прост, но я и не стремился сделать из
него ЦУП. Для меня достаточно и этого, для кого нет - у вас широкое поле для деятельности.
Все эти скрипты необязательно называть так, как они названы и располагать там,
где они расположены. Если вы измените пути и/или названия - не забудьте просто
все поправить в соотв. местах.
Ну и о впечатлениях. На данный момент в Омске эта услуга находится в тестовой
эксплуатации и может поэтому качество связи оставляет желать много-много лучшего.
Примлемое качество связи приходится на утренние часы - примерно с 4х до 8ми утра.
Плюсы этого способа выхода в интернет - мобильность (достаточно носить с собой
кабель в моем случае), простота оплаты и обслуживания, быстрый дозвон, никогда
не бывает занято. Минусы - есть подозрение, что при вводе этой услуги в штатную
эксплуатацию качество связи не сильно улучшится в силу ограничений, накладываемых
стандартами GSM и GPRS. В любом случае скорее всего для этого вида связи будут
характерны неожиданные замирания передачи.
6. Примечания.
Недавно приобрел новый аппарат Motorola C333, у которого интерфейс организован по
шине USB. Поиски в Сети снова ничего особенно не дали - везде предлагали какой-то
непонятный патч к ядру, который только и делал, что в файле acm.c повышал на единицу
значение одной переменной. Мне он не помог.
Однако я не терял надежды и ждал ядра 2.4.23 - как оказалось не зря. Достаточно было
собрать его с поддержкой USB-модема (USB-support -> USB Modem (CDC ACM) support)
модулем и мой модем в телефоне "увиделся" как /dev/ttyACM0 и именно это устройство
надо "подсовывать" pppd вместо /dev/ttyS1 (в моем случае). Файл устройства можно создать и самостоятельно при помощи команды mknod:
# mknod /dev/ttyACM0 c 166 0
Если вы планируете подключать к компьютеру больше одного модема, то просто увеличивайте минор (0 в этом примере) на 1 для каждого нового устройства, всего устройств может быть 255. Проблема здесь может быть в следующем - устройства по файлам /dev/ttyACMx распределяются по очередности подключения к компьютеру, какой-либо привязки между файлом и устройством в общем случае нет. Для телефона Motorola V600 и соединения через USB-кабель исправлять ничего не потребовалось - сказанное в этом пункте работает как есть. То же самое и в случае ядер 2.6.х (только опция про USB Modem в конфиге ядра переехала).
7. Дополнение.
Что касается использования мобильного телефона Nokia 6100.
При использовании комуникационного кабеля MA-8620E (USB Data Cable for Nokia 7210,
6610, 7250, 5100, 6800, 7250i, 3100, 6220 - данный кабель представляет собой конвертор
USB-to-Serial на читсете PL2303), необходима поддрежка USB Serial Converter suport. В
ядре, по меньшей мере, должны быть включены следующие опции. Надеюсь у вас USB и
так работает. Работоспособность проверялась на ядре 2.4.22.
CONFIG_USB_SERIAL=m # USB Serial Converter Support
CONFIG_USB_SERIAL_GENERIC=y # USB Generic Serial Driver
CONFIG_USB_SERIAL_PL2303=m # USB Prolific Sigle Port Serial Driver
Примечание: Prolific PL2303 Driver
Этот драйвер поддерживает устройства, которые построенны на Prolific PL2303
чипсете. Он включает в себя ряд конверторов USB-портов в последовательные COM-порты
и USB GPS устройства.Также поддерживает работу с устройствами Aten (the UC-232) и IO-Data.
После подключения кабеля cмотрим поднялись ли драйверы:
#lsmod
pl2303 11864 1
usbserial 18876 0 [pl2303]
uhci 24496 0 (unused)
usbcore 58400 1 [pl2303 usbserial hid usbmouse uhci]
Проверяем есть ли у нас устройства:
#ls -l /dev/ttyUS*
crw-r----- 1 root uucp 188, 0 2004-04-12 12:29 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 2001-03-26 01:04 /dev/ttyUSB1
Если таковых нет создаем:
#mknod /dev/ttyUSB0 c 188 0
#mknod /dev/ttyUSB1 c 188 1
Создаем /etc/ppp/GPRS
ABORT "BUZY"
ABORT "NO CARRIER"
"" "AT"
"OK" "AT&FV1&D2&S0&C1&C1S0=0+CVHU=1"
"OK" 'AT+CGDCONT=1, "IP", "internet.mts.ru"'
"OK" "ATS7=60+CBST=,,1;+DS=1,0;&K3"
"OK" "ATD*99#"
TIMEOUT 30
CONNECT
Создаем /etc/ppp/options
debug
/dev/ttyUSB0
connect '/usr/sbin/chat -v -f /etc/ppp/GPRS'
local
ipcp-accept-local
ipcp-accept-remote
-pap
noipdefault
defaultroute
8. Некоторые ссылки по теме.
Про GSM, GPRS и много чего еще:
9. Автор.
San АНДРЕЕВ
9.1. Дополнение
Andrew E. Kuznetsoff aka Разгильдяй на обкуренной кошке
Обоснованные исправления и дополнения вэлкам.
|