1/15/2007

Настройка GPRS в Debian GNU/Linux с телефоном Siemens ME45

Задача: выходить в Интернет через телефон с GPRS подключением, используя USB-адаптер Prolific PL2303 и делать всё это в Линуксе.
Решение: в Дебиане есть всё, что нужно для настройки GPRS в Линукс.


Исходные данные
Есть ноутбук Asus M5200AE под управлением Debian GNU/Linux, есть телефон Siemens ME45, шнурок и оператор Билайн. Приведённые ниже настройки будут чуть другими для других телефонов и / или сотовых операторов, но сюжетная канва та же самая.


Подготовительные мероприятия
Для того, чтобы всё получилось с полпинка, требуется, чтобы в ядре была поддержка PPP:
Networking options-> TCP/IP networking -> Network device -> PPP (point-to-point protocol) support
монолитно или модулем. Кроме того, в ядре должна быть собрана поддержка данного шнурка - модуль сидит тут:

USB support-> Support for USB -> USB Serial Converter support-> USB Serial Converter support
[m] USB Generic Serial Driver
[m] USB Prolific 2303 Single Port Serial Driver
Если всё это сделано, соединяем шнурок с телефоном и втыкаем в USB-порт, при этом в логах dmesg должны появиться примерно такие строчки:
usb 3-1: new full speed USB device using uhci_hcd and address 3
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 3-1:1.0: pl2303 converter detected
usb 3-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

Всё, шнурок найден и опознан ядром. Более того, создан новый последовательный порт /dev/ttyUSB0, который мы укажем программе дозвона.


Настраиваем GPRS

Осталось только правильно указать программам параметры дозвона - и можно сидеть в Интернете через GPRS. Все следующие действия делаются с рутовыми привилегиями.

Заходим в каталог /etc/ppp/peers/ и создаём там файл beeline следующего содержания:
/dev/ttyUSB0
57600
noauth
defaultroute
usepeerdns
persist
noipdefault
lock
connect '/usr/sbin/chat -v -f /etc/chatscripts/beeline-connect'
novjccomp
nopcomp
noaccomp
noipdefault
nodeflate
novj
Не стоит указывать слишком большую скорость подключения, из-за этого соединение может оборваться. Как поясняется здесь, опции означают:
defaultroute - установить маршрутом "по умолчанию"
noipdefault - не использовать IP адрес, назначенный для данного hostname
persist - восстанавливать соединение при разрыве
updetach - `возвратить управление` процессу, вызвавшему pppd, при успешно установленном соединение
usepeerdns - получить DNS адреса от сервера (потребуется при настройке pdnsd)
Ещё один файл, beeline-connect, создаём в каталоге /etc/chatscripts/ такого содержания:
TIMEOUT 45
ABORT 'NO ANSWER'
ABORT 'BUSY'
ABORT 'NO CARRIER'
SAY 'Starting GPRS connection\n'
ABORT ERROR
"" 'ATZ'
"" 'ATE1'
OK AT+CGDCONT=1,"IP","internet.beeline.ru"
OK ATD*99***1#
CONNECT c
Если у вас не Билайн, заходите на сайт своего оператора и интересуетесь, как выглядит строка подключения: AT+CGDCONT=1,"IP","internet.beeline.ru" будет другой. Так же может измениться строка ATD*99***1#, которая характерна для телефонов компании Siemens.


Выходим в Интернет по GPRS
На этом настройки закончились и теперь можно использовать GPRS в Линукс. Для этого от рута даём команду:
pppd call beeline
либо
pon beeline
Несколько секунд ожидания, и в броузере можно работать так же, как и всегда. Вот, например, я ищу свой блог :-)



Для того, чтобы отсоединиться от Интернета, набираем
killall pppd
или
poff beeline
И всё.


Если что-то пошло не так...
Не всё и не всегда получается с первого раза, поэтому для получения информации о том, почему GPRS в Linux не работает, следует использовать данные из логов, а конкретно - /var/log/syslog. Доступ к нему имеет только рут, так что заделываемся администратором и читаем бортжурнал об ошибках. В моём (успешном) случае записи в конфиге выглядят так:

Aug 14 08:30:37 localhost chat[7715]: timeout set to 45 seconds
Aug 14 08:30:37 localhost chat[7715]: abort on (NO ANSWER)
Aug 14 08:30:37 localhost chat[7715]: abort on (BUSY)
Aug 14 08:30:37 localhost chat[7715]: abort on (NO CARRIER)
Aug 14 08:30:37 localhost chat[7715]: abort on (ERROR)
Aug 14 08:30:37 localhost chat[7715]: send (ATZ^M)
Aug 14 08:30:37 localhost chat[7715]: send (ATE1^M)
Aug 14 08:30:37 localhost chat[7715]: expect (OK)
Aug 14 08:30:37 localhost chat[7715]: g^?ATZ^MAT^M
Aug 14 08:30:37 localhost chat[7715]: OK
Aug 14 08:30:37 localhost chat[7715]: -- got it
Aug 14 08:30:37 localhost chat[7715]: send (AT+CGDCONT=1,"IP","internet.beeline.ru"^M)
Aug 14 08:30:38 localhost chat[7715]: expect (OK)
Aug 14 08:30:38 localhost chat[7715]: ^M
Aug 14 08:30:38 localhost chat[7715]: EAT+CGDCONT=1,"IP","internet.beeline.ru"^M^M
Aug 14 08:30:38 localhost chat[7715]: OK
Aug 14 08:30:38 localhost chat[7715]: -- got it
Aug 14 08:30:38 localhost chat[7715]: send (ATD*99***1#^M)
Aug 14 08:30:38 localhost chat[7715]: expect (CONNECT)
Aug 14 08:30:38 localhost chat[7715]: ^M
Aug 14 08:30:38 localhost chat[7715]: ATD*99***1#^M^M
Aug 14 08:30:38 localhost chat[7715]: CONNECT
Aug 14 08:30:38 localhost chat[7715]: -- got it
Aug 14 08:30:38 localhost chat[7715]: send (c^M)
Aug 14 08:30:38 localhost pppd[7314]: Serial connection established.
Aug 14 08:30:38 localhost pppd[7314]: Using interface ppp0
Aug 14 08:30:38 localhost pppd[7314]: Connect: ppp0 <--> /dev/ttyUSB0
Aug 14 08:30:41 localhost pppd[7314]: PAP authentication succeeded
Aug 14 08:30:44 localhost pppd[7314]: Cannot determine ethernet address for proxy ARP
Aug 14 08:30:44 localhost pppd[7314]: local IP address 10.0.103.11
Aug 14 08:30:44 localhost pppd[7314]: remote IP address 192.168.254.254
Aug 14 08:30:44 localhost pppd[7314]: primary DNS address 217.118.66.243
Aug 14 08:30:44 localhost pppd[7314]: secondary DNS address 217.118.66.244

Всё, после этого у меня появляется новый сетевой интерфейс ppp0

notebeast:/home/beast# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:84 errors:0 dropped:0 overruns:0 frame:0
TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5483 (5.3 KiB) TX bytes:5483 (5.3 KiB)

ppp0 Link encap:Point-to-Point Protocol
inet addr:10.1.193.83 P-t-P:192.168.254.254 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:204 errors:0 dropped:0 overruns:0 frame:0
TX packets:273 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:109516 (106.9 KiB) TX bytes:27628 (26.9 KiB)

через который льётся широкой рекой желанный интернет-трафик.

Замечания
Обычно всегда советуют использовать программу wvdial. У меня был крайне отрицательный опыт использования этой программы: дозвон шёл и соединение устанавливалось, но потом в консоль выдавался "мусор" и соединение обрывалось, хотя настройки были те же. Потом я всё-таки решил воспользоваться старым-добрым pppd - и буквально за пять минут всё настроил.

Ссылки
Пост вдохновлён статьёй "Настраиваем GPRS соединение в Дженту" Артёма Носова aka ChiP, за что ему большое человеческое спасибо. Так же стоит посмотреть на эту заметку, вот эту и ещё вот тут.

21 комментарий:

  1. в дебиане можно использовать
    pon beeline и poff beeline

    ОтветитьУдалить
  2. Давно интересовался данной возможностью, но на данный момент проверить не могу. Приеду домой, буду знать где искать:).

    ОтветитьУдалить
  3. 2 madw
    в дебиане можно использовать
    pon beeline и poff beeline

    Ага, точно. Надо будет дописать в пост, спасибо.

    2 serhiy cherevko
    Давно интересовался данной возможностью
    Настраивается на самом деле "на раз", только если в ядре не выключена поддержка PPP и драйвер для шнурка. wvdial у меня так и не заработал... ну и фиг с ним :-)

    ОтветитьУдалить
  4. У меня с Siemens C55 есть такая проблема. Её, кстати, лучше всего видно в wvdial. Если просто воткнуть шнур и подключиться, после первой же команды переданной в модем вместо ответа идут символы отображаемые как пробел.
    Связано это, с тем что порт по умолчанию правильно не настроен. Решается это с помощью команды 'stty -F /dev/ttyUSB0 -cread'.
    Вылезла эта проблема в testing образе дебиана слитого в конце декабря. В kanotix и kubuntu таких проблем не наблюдалось. Подходящее состояние порта выставлялось по умолчанию.

    ОтветитьУдалить
  5. А чем вы пользуетесь для работы с памятью телефона (музыку-картинки залить)? Я использую siefs, но она малость кривовата. С основанными на obex программами ничего не вышло.

    ОтветитьУдалить
  6. есть еще такой пакет как pppconfig - так намного проще создавать и редактировать ppp-скрипты.

    ОтветитьУдалить
  7. 2 Ivan A-R
    У меня с Siemens C55 есть такая проблема. Её, кстати, лучше всего видно в wvdial.
    Это уже особенности дистрибутива - тестируемого, между прочим. Поэтому сижу на стэйбле :-)

    2 Anonymous
    А чем вы пользуетесь для работы с памятью телефона (музыку-картинки залить)?
    Пользуюсь scmxx, картинки и музыку не заливаю - мне по телефону звонить...

    2 shadone
    есть еще такой пакет как pppconfig - так намного проще создавать и редактировать ppp-скрипты.
    Может быть, но мне проще так. Но всё равно спасибо.

    ОтветитьУдалить
  8. Virens, про тестируемый это Вы зря. У знакомой мандряка и ME45, так схожая проблема была. Видимо по умолчанию порт настраивают по разному. Не вдавался в детали, где это происходит.

    ОтветитьУдалить
  9. долго пытался на 2.6ядре в etch прикрутить нокию 6610и с помощью usb шнурка dku5... и все безрезультатно:(
    \с надеждой\ может кто что-то такое делал?:))) т.е. модуль видится, даже пытается загрузиться, но ошибка - и все:(ti_usb_3410_5052 3-1:1.0: TI USB 3410 1 port adapter converter detected
    ti_usb_3410_5052: probe of 3-1:1.0 failed with error -5

    2.6.18-3-686 etch

    ОтветитьУдалить
  10. Долго эксперементировал с gprs - работает, но очень плохо.

    Перешел на cdma от Скайлинка - гораздо лучше - у них есть "квадратная коробка" внешний модем с отвинчивающейся антенной - загородом работало шустро и часами не обрывалось - с diald подружил в момент.

    ОтветитьУдалить
  11. Спасибо большое за описание:) Хотелось только добавить, с чем я столкнулся при подключении.
    Через каждые 2 минуты интернет отваливался. Долго искал в чем проблема. В лог писалось что-то про FLC:
    LCP: Rcvd Code-Reject for code 9, id 3
    No response to 4 echo-requests
    И выходило.
    Избавился, поставив значения параметров cp-echo-failure 0 и lcp-echo-interval 0 в файле /etc/ppp/options
    Теперь все работает:)

    ОтветитьУдалить
  12. И зачем такая возня со скриптами? Используйте kppp это намного удобнее.

    ОтветитьУдалить
  13. Подскажите, пожалуйста, что делать, если pppd пишет "unrecognized option: /dev/ttyUSB0".
    При этом, если модем комовский, то с портом /dev/ttyS3 соединяется нормально. А вот на USB матерится. Почему?

    ОтветитьУдалить
  14. 2 Rodegast комментирует...
    И зачем такая возня со скриптами? Используйте kppp это намного удобнее.
    Во-первых, kppp есть не у всех, а во-вторых, часто проще поправить скрипты, чем долго тыкать кнопками...

    2 Анонимный комментирует...
    Подскажите, пожалуйста, что делать, если pppd пишет "unrecognized option: /dev/ttyUSB0".
    Скорее всего, потому что его нет :-) Не опознаётся чип шнурка или не собран драйвер для него. Киньте логи на forum.ubuntu.ru - посмотрим.

    Пост немного обновил, добавил информацию с логов.

    ОтветитьУдалить
  15. Непонятно, зачем напрочь отключать разные виды сжатия. Какие в этом могут быть преимущества? Недостатки -- как минимум в снижении скорости. А то и -- в стоимости (впрочем, я думаю, что трафик провайдер всё равно считать будет несжатым).

    Значение же разных параметров над\жнее смотреть через man pppd, чем у кого-то там на страничке в дебрях Интернета. (-:

    ОтветитьУдалить
  16. 2 асоциальный психопат пишет...
    Непонятно, зачем напрочь отключать разные виды сжатия.
    Мой оператор сотовой связи их не поддерживал, хотя может с тех пор что-то изменилось. Посмотрю, спасибо.

    Недостатки -- как минимум в снижении скорости.
    Это всё понятно, просто когда я использова wvdial со сжатием, подключение обрывалось - ну я и перестраховался :-)

    Значение же разных параметров над\жнее смотреть через man pppd
    Да, я краем уха слышал о команде man :-)

    Насчёт сжатия в самом деле посмотрю. Спасибо за конструктивную критику.

    ОтветитьУдалить
  17. Мой оператор сотовой связи их не поддерживал, хотя может с тех пор что-то изменилось.
    Странно, мне казалось, что речь идёт о запросе (в мане так и пишут -- request) сжатия, а не о принудительном требовании его. То есть по идее, если ОпСоС сжатие не предоставляет -- соединение всё же будет установлено, просто без сжатия.
    И из этих соображений получается наоборот -- лучше его всегда включать (впрочем, оно в большинстве случаев включено по умолчанию), ибо хуже не будет.

    Да, я краем уха слышал о команде man :-)
    Ваш блог могут прочитать дети! (-:
    А у Вас периодически встречается похабщина: то из сырцов компилим по ./configure && make, вместо того, чтобы пакетик собрать, то лезем править конифиги в /etc/, вместо того, чтобы dpkg-reconfigure --priority=low на пакет сделать, то, описывая параметры, ссылаемся не на man, а на блог васи, который ссылается на блог пети, который ссылается на man (притом хорошо ещё если той же самой версии).
    Прям "Записки слакварщика" какие-то! (-:

    Да, я понимаю, это не со зла, а просто зачастую так бывает проще. Но почему бы, заодно с изложением, не делиться секретами удобной и эффективной работы с новичками, которые тоже могут читать этот блог? Ведь мы же все за "true debian way", не правда ли?

    ОтветитьУдалить
  18. 2 асоциальный психопат пишет...
    Странно, мне казалось, что речь идёт о запросе (в мане так и пишут -- request) сжатия, а не о принудительном требовании его.
    Перечитал ман - вы правы. Просто пост писался поздно вечером и было не до этого, а потом забыл :-))

    Большое спасибо, я обязательно исправлю пост.

    А у Вас периодически встречается похабщина
    Да, бывает. Просто иногда в самом деле проще собрать по-быстрому из сырцов, чем городить огород с пакетами.

    Собтсвенно, из сырцов я собираю только dcraw, qemu и ядро. Так что если похабщина и есть - её немного :-)

    то лезем править конифиги в /etc/, вместо того, чтобы dpkg-reconfigure --priority=low на пакет сделать
    А вот тут я с вами не согласен. Информация, изложенная тут, может пригодиться не только пользователям Дебиан. И поэтому сильно привязывать изложение к дистрибутиву я не хочу. Может, я завтра на Arch перейду - и что, всё переписывать!? :-)

    описывая параметры, ссылаемся не на man, а на блог васи, который ссылается на блог пети
    Я стараюсь давать прямые ссылки. Будемте откровенны: хороший ман - большая редкость. Чаще они написаны программистами для программистов.

    Прям "Записки слакварщика" какие-то! (-:
    Нет, просто я работаю, как мне удобно, не сильно заморачиваясь по поводу debian way. К чему-то привык и не вижу смысла отвыкать. В крайнем случае, текст поста распространяется под свободной лицензией - делайте форк и правьте :-)

    Но почему бы, заодно с изложением, не делиться секретами удобной и эффективной работы с новичками, которые тоже могут читать этот блог?
    Изначально блог не создавался как учебник для новичков - вот libc6 Андрея Афанасенко это да, это новичковый блог.
    Я сюда выкладываю то, что делаю сам. Если что-то делаю криво - напишите, я посмотрю.

    Линукс - это не моя основная работа, поймите. Это хобби. Я не админ, не программист и не Debian Developer. Я простой пользователь.

    Ведь мы же все за "true debian way", не правда ли?
    Безусловно.

    Спасибо вам за ценную критику - взгляд со стороны всегда полезен.

    ОтветитьУдалить
  19. 2 Анонимный комментирует...
    Подскажите, пожалуйста, что делать, если pppd пишет "unrecognized option: /dev/ttyUSB0".
    Скоее надо писать /dev/ttyACM0
    Посмотри в /dev какое устройство появляется при подключении шнурка.

    ОтветитьУдалить
  20. вопрос а как можно откомпилировать файл драйвера
    вот - есть два примера - только не выходит- ругается когда происходит make -C /lib/modules/`uname -r`/build M=`pwd`
    ядро - 2.6.18-6-686 - дебиан - без иксов


    http://www.evilaxe.org.ua/2008/11/debian-i-usb-modem-verizon-u720.html

    ОтветитьУдалить
  21. Есть еще отличный скрипт -"sakis3g". Мне помог быстро настроить интернет через телефон, и 3g модем от МТС-а. Подходит для всех ОПСОСов:))

    ОтветитьУдалить