LXF113-114:gprs

Материал из Linuxformat.

Перейти к: навигация, поиск
GPRS из-под Linux Подружите свой сотовый телефон с открытой ОС, выберите подходящий тарифный план, и – в Сеть!

Содержание

Интернет отовсюду

На даче, в лесу, на балконе... С тех пор, как Алексей Маслий подключил услугу «GPRS Интернет», мы никогда не можем сказать наверняка, где он пишет свои статьи.

Пожалуй, в начале 2009 года уже никого не нужно убеждать в удобстве мобильного выхода в Интернет. Отвечать на письма, развалившись в шезлонге на берегу моря (или даже в гамаке на даче) – это, согласитесь, не то же самое, что сидеть восемь часов в день в душном офисе. Тарифы на GPRS-трафик у большинства мобильных операторов сейчас весьма приемлемые, кое-где даже предлагаются услуги вроде «ночной безлимитки» за фиксированную абонентскую плату: в общем, на мобильный Интернет есть смысл взглянуть даже в том случае, если вы безвылазно сидите дома.

Поскольку все как один операторы мобильной связи дают рекомендации по настройке GPRS-подключения только для ОС семейства Microsoft Windows (причем весьма часто – лишь для одного представителя этого семейства), у большинства пользователей возникает резонный вопрос: а будет ли это все работать в Linux? Отвечаем: будет! Но – давайте обо всем по порядку.

Разберемся с телефоном

В первую очередь, убедитесь, что ваш телефон поддерживает GPRS и может выступать в роли GPRS-модема. Большинство новых аппаратов располагает такой возможностью. Кроме этого, необходимо решить, какой именно способ подключения вы собираетесь использовать. Основных вариантов сейчас два: USB-кабель и Bluetooth. Второй способ в чем-то удобнее (можно вообще не вынимать телефон из чехла или сумочки), но многие современные модели умеют подзаряжаться по дата-кабелю; этот факт может оказаться решающим в случае, если вы выходите в Сеть из зоны со слабым сигналом.

Подключение через USB-порт

Основная составляющая дата-кабеля – это конвертор USB-to-serial, «превращающий» продвинутый USB в старый добрый COM-порт. Соответствующим файлам устройств дается имя вроде /dev/ttyUSBx или /dev/ttyACMx; современные дистрибутивы создают их автоматически. Чтобы выяснить, какое именно устройство соответствует вашему телефону, подсоедините включенный аппарат к компьютеру, подождите несколько секунд, а затем просмотрите последние строки в системном журнале. Обычно нужный файл называется /var/log/messages, и для его чтения требуются права root. Перейдите в консоль и наберите:

tail /var/log/messages

Вы должны увидеть нечто вроде

...
kernel: usbcore: registered new interface driver usbserial_generic
kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core
kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
kernel: pl2303 1-3:1.0: pl2303 converter detected
kernel: usb 1-3: pl2303 converter now attached to ttyUSB0
kernel: usbcore: registered new interface driver pl2303
kernel: drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

Это означает что система определила ваш телефон (правильнее сказать – конвертор дата-кабеля, здесь – Prolific PL2303, один из самых распространенных вариантов), загрузила для него драйвер и создала файл устройства в каталоге /dev. Как можно видеть, у нас это /dev/ttyUSB0.

Подключение через Bluetooth

Скорая помощь

Мы сознательно ограничились самыми стандартными и универсальными инструментами настройки Bluetooth, чтобы вы могли применить наши советы практически в любом дистрибутиве Linux. Однако и в KDE, и в GNOME есть собственные графические Bluetooth-утилиты: это bluez-gnome и KDE Bluetooth. Многие настольные дистрибутивы предоставляют их «из коробки», а некоторые – например, Mandriva – даже имеют специализированные средства для настройки мобильного Интернета. Используйте их, если вам это кажется более удобным, но знайте: если что-то пойдет не так, у вас всегда есть запасной вариант.

В этом случае рассчитывать на полностью автоматизированную настройку («воткнул–заработало») не приходится. Фактически, нужно проделать две вещи: настроить работу Bluetooth-адаптера (встроенного в ноутбук или внешнего, подключаемого через USB/PCMCIA) и активировать Rfcomm, протокол, который реализует эмуляцию последовательного порта поверх Bluetooth.

В первую очередь необходимо удостовериться, что в системе есть все необходимое ПО: требуемые нам пакеты называются bluez и bluez-utils. В Debian, Ubuntu, ALT Linux и прочих дистрибутивах, использующих Apt, надо просто дать команду apt-get install bluez-utils от имени суперпользователя. Во многих дистрибутивах, включая ALT Linux и openSUSE, Bluez устанавливается по умолчанию.

Настройка Bluetooth выполняется редактированием файлов в каталоге /etc/bluetooth; конечно, для этого требуются права root. Нас интересуют hcid.conf и rfcomm.conf. В первом из них надо обратить внимание на раздел options. Установите значение autoinit в yes, чтобы подключаемые устройства инициализировались автоматически. Параметр passkey задает PIN-код для входящих соединений по умолчанию (чтобы это значение использовалось, необходимо также установить security в auto, в противном случае система всегда будет выдавать приглашение для ввода PIN).

Пришла пора проверить связь! Включите Bluetooth на компьютере и на телефоне, перейдите в консоль и дайте команду

hcitool inq

Вы должны увидеть что-то вроде:

Inquiring ...
             00:01:E3:4F:DE:AB clock offset 0x0df6 class 0x720204

Шесть двузначных шестнадцатеричных чисел, разделенных двоеточиями – это адрес телефона. Если же их нет, а телефон и компьютер находятся в зоне действия друг друга, проверьте, что ядро «видит» ваш Bluetooth-адаптер:

hcitool dev

Отсутствие осмысленного вывода указывает или на неподдерживаемое устройство, или на отсутствие драйверов в вашей системе.

Далее, необходимо выяснить список предоставляемых телефоном сервисов, убедиться, что среди них есть модем, и определить, какой канал он использует. Для этих целей служит команда sdptool:

sdptool browse 00:01:E3:4F:DE:AB

Адрес телефона, конечно, следует взять из вывода предыдущей команды. Результатом будет длинный список, в котором следует поискать секцию, озаглавленную Dial-up networking. Она будет выглядеть примерно так:

Browsing 00:01:E3:4F:DE:AB ...
...
Service Name: Dial-up networking
Service RecHandle: 0x11103
Service Class ID List:
   " Dialup Networking" (0x1103)
   "Generic Networking" (0x1201)
Protocol Descriptor List:
   "L2CAP" (0x0100)
   "RFCOMM" (0x0003)
     Channel: 1
Language Base Attr List:
   code_ISO639: 0x656e
   encoding: 0x6a
   base_offset: 0x100
Profile Descriptor List:
   "Dialup Networking" (0x1103)
     Version: 0x0100
...

Итак, модем имеется и использует канал 1. Теперь у нас есть вся необходимая информация, чтобы отредактировать файл /etc/bluetooth/rfcomm.conf. Откройте его от имени root: вы сразу же заметите, что он полностью закомментирован. Исправьте это, попутно подставив обнаруженные ранее адрес устройства и номер канала. Получится примерно такое:

rfcomm0 {
             # Automatically bind the device at startup
             bind yes;
             # Bluetooth address of the device
           device 00:01:e3:4f:de:ab;
           # RFCOMM channel for the connection
           channel     1;
           # Description of the connection
           comment "1234";
 }

Обратите внимание на параметр bind. Его значение по умолчанию – no – я изменил на yes. Это значит, что при обнаружении телефона компьютер будет автоматически пытаться связать его с устройством /dev/rfcomm0. При необходимости, это можно проделать и вручную, введя (от имени root, конечно) команду rfcomm bind rfcomm0.

Ну вот, все файлы в порядке. Удостоверьтесь, что Bluetooth-соединение работает, введя команду rfcomm. Вывод

 rfcomm0: 00:01:E3:4F:DE:AB channel 1 clean

сообщает, что /dev/rfcomm0 подключен к устройству 00:01:E3:4F:DE:AB и каналу 1. Прекрасно: доступ к GPRS-модему мы получили. Осталось лишь настроить его для выхода в Интернет.

Если у вас есть COM-порт...

...то знайте, что его тоже можно использовать для подключения сотового телефона! Правда, искать модель, поддерживающую соответствующую функцию, придется в антикварных магазинах. Тем не менее, приятно знать, что и USB, и Bluetooth – лишь средства, предоставляющие эмуляцию последовательного порта для коммуникационных программ.

Если же у вас есть и подходящий телефон, и COM-порт, подключение существенно упрощается. Никакие дополнительные драйвера, сверх включенных в любое ядро, не нужны. Файл устройства называется /dev/ttySx, где 0 соответствует первому последовательному порту (COM1 в терминологии DOS), 1 – COM2 и так далее.

Выходим в сеть

С точки зрения пользователя, GPRS-модем мало чем отличается от обычного US Robotics: в основном, он понимает те же AT-команды, разве что требует дополнительной строки инициализации. Параметры, которые составляют ее, и номер телефона, на который вы должны позвонить, обычно указаны на сайте вашего оператора мобильной связи. От операционной системы они не зависят, так что пусть ориентация последнего на Windows вас не смущает.

Путь KDE

Стандартным средством для настройки dial-up соединения в KDE является KPPP, входящий в состав пакета kde-networking. Проверьте, установлено ли у вас это приложение, и в случае необходимости, добавьте его через менеджер пакетов.

Запустите KPPP и нажмите кнопку Настроить. В появившемся окне настройки соединения нас интересуют первые две вкладки: Соединения и Модемы. Сначала настроим телефон. Перейдите на вкладку Модемы и нажмите кнопку Создать. Появится диалог Новый модем, содержащий две вкладки: Устройство и Модем. На первой необходимо ввести имя модема, которое ограничивается исключительно вашей фантазией. Мы же выберем безыскусное «GPRS Modem». В поле Устройство модема следует указать файл устройства в /dev, определенный вами на предыдущем шаге (скажем, /dev/ttyUSB0 или /dev/rfcomm0). Если же требуемого вам устройства нет в списке, создайте для него понятную KPPP символьную ссылку (например, /dev/modem): это можно проделать как вручную командой ln (что не рекомендуется), так и отредактировав правила udev (это выходит за рамки данной статьи). Можно также ограничить скорость соединения до 115200 бод.

Главное отличие GPRS-модема от обычного (с точки зрения пользователя) – дополнительная строка инициализации.

Переходим на вкладку Модем. Здесь необходимо нажать кнопку Команды модема. В появившемся окне нас интересует поле Строка инициализации 2. Сюда необходимо ввести строку инициализации, предоставляемую вашим оператором. Она выглядит так: AT+CGDCONT=1,"IP","..."; разные операторы обычно отличаются только последней частью (и то для нее часто используется вездесущее «internet»). Будьте внимательны, здесь важно все вписать в точности так, как указывает оператор. Далее, необходимо проверить поле Строка набора номера: там должно стоять ATDT.

Что в имени тебе моем?

Если ваш оператор требует «оставить имя пользователя и пароль пустыми», будьте внимательны. При выборе PAP/CHAP-аутентификации, KPPP заставит вас ввести в указанные поля хоть какую-то информацию, что может не понравится серверу на стороне оператора. Если соединение установить не удается и причина, согласно журналу, кроется как раз в невозможности произвести аутентификацию, выберите в окне настроек соединения в разделе Авторизация пункт С помощью скрипта вместо PAP/CHAP. Никакого скрипта не набирайте, имя пользователя и пароль оставьте пустыми.

Ни GNOME PPP, ни WvDial также не любят работать с пустыми паролями. Чтобы «обмануть» их, заполните соответствующие поля чем угодно, но заставьте pppd игнорировать эти реквизиты. Действуя от имени суперпользователя, откройте на редактирование файл /etc/ppp/options. Найдите в нем параметр noauth и убедитесь что он не закомментирован (если в вашей системе такого параметра нет, просто добавьте его с новой строки). Это заставит pppd не выполнять аутентификацию.

Теперь настроим соединение. Переключитесь на вкладку Соединения и нажмите кнопку Создать. В появившемся окне выберите ручную настройку. В диалоге Новое соединение содержится множество вкладок, но для нас представляет интерес только первая: Дозвон. В качестве имени соединения можно выбрать любое, например, «GPRS Internet». Телефон дозвона опять же предоставляется оператором и может зависеть от используемой вами модели телефона. Способ авторизации можно оставить по умолчанию (PAP/CHAP), но если ваш оператор требует, чтобы имя пользователя и пароль были пустыми, обратите внимание на врезку. Ну и, наконец, можно заглянуть на вкладку Разное окна Параметры KPPP. Я, например, очень люблю опцию Встраивать в панель при соединении.

Настройка закончена – можно возвращаться в главное окно KPPP. В выпадающем меню Соединение с выбираем GPRS Internet, в меню Использовать модемGPRS Modem. Не забудьте ввести имя пользователя и пароль. Можно также поставить галочку в поле Показать окно журнала, чтобы иметь возможность быстро обнаруживать возможные проблемы. Теперь можно нажать кнопку Подключиться и наслаждаться мобильным Интернетом.

Путь GNOME

Окно настроек GNOME PPP содержит изрядное число параметров: не знаем, как это соотносится с известной концепцией, но нам удобно.

Настройку соединения в GNOME будем производить при помощи программы GNOME PPP (http://www.gnome-ppp.org), являющейся, по сути, надстройкой над WvDial. Родная поддержка коммутируемого доступа есть в NetworkManager 0.7, и многие дистрибутивы, например, Fedora и Ubuntu, включают его предварительные релизы, но на то, чтобы стать стандартом де-факто, NM 0.7 потребуется некоторое время. А GNOME PPP уже здесь и работает хорошо.

Действия, которые необходимо совершить, практически в точности повторяют настройку KPPP. Запустите GNOME PPP и нажмите кнопку Настройка. В появившемся окне Setup нужно вручную вписать имя файла устройства (в выпадающем списке есть только стандартный набор из 4-х COM-портов и /dev/modem), оставить тип Аналоговый модем без изменений, указать скорость порта и выбрать Тональный способ набора. Далее, есть две кнопки: Телефонные номера и Строки инициализации. Нажмите на Телефонные номера и введите указанный сотовым оператором номер в первой строке появившегося окна, обязательно нажмите Enter и только потом – Закрыть. Действуя аналогично, нажмите кнопку Строки инициализации, введите уже известную нам последовательность (AT+CGDCONT=...), нажмите Enter и кнопку Закрыть; настройка модема закончена. На вкладке Сеть все можно оставить по умолчанию, а на вкладке Общие – выбрать необходимые опции (например, Сворачивать в трей при соединении). Все готово: можно вводить имя пользователя, пароль и подключаться к Сети. Для поиска неполадок можно вновь использовать окно журнала (настраивается в диалоге Setup во вкладке Общие).

WvDial, «переодетый» GNOME PPP, готов к труду и обороне, независимо от того, какой рабочий стол вы предпочитаете.

Универсальный путь: WvDial.

Если вы не являетесь сторонником KDE или GNOME, возможно, вам придется по вкусу консольное приложение WvDial. Несмотря на отсутствие графического интерфейса, настраивать его, пожалуй, даже проще, чем KPPP и GNOME PPP. Все параметры собраны в файле /etc/wvdial.conf. Писать в него может только root, а читать, кроме того, пользователи группы dialout. В принципе, местоположение конфигурационного файла WvDial можно указать ключом -c путь; отдельные пользователи могут также сохранять свои настройки в ~/.wvdialrc.

Структура конфигурационного файла весьма проста:

[Dialer Defaults]
Modem = /dev/rfcomm0
Baud = 115200
Init = ATZ
Init2 = AT+CGDCONT=1,"IP","internet.xxx.ru"
Phone = *99***1#
Username = my-login
Password = my-password

Значения опций точно такие же, как и в предыдущих случаях, но здесь их не надо выискивать среди мириад вкладок. Параметр Modem определяет коммуникационное устройство, Baud – это скорость COM- порта, Init1 и Init2 – строки инициализации, Phone – номер для дозвона, Username и Password – имя пользователя и пароль, соответственно. Последние четыре параметра предоставляются вашим оператором сотовой связи. Если вас интересуют дополнительные параметры, то их можно легко найти, набрав man wvdial или man wvdial.conf.

Чтобы установить соединение, надо лишь набрать wvdial, нажать клавишу Enter и подождать пару-тройку секунд. Обратите внимание, что программа сразу выводит сообщения в консоль, так что вся необходимая информация будет у вас перед глазами.

Если что-то пошло не так

«Мусор» в журнале – верный признак того, что телефон сейчас придется «выткнуть и воткнуть обратно»

Сотовый телефон – достаточно надежное (по бытовым меркам) средство выхода в Интернет, но, как утверждают герои популярного мюзикла, ничто не безупречно. Мы попытались собрать воедино основные проблемы, с которыми приходится сталкиваться «мобильному интернетчику», и предложить пути их решения.

При подключении с помощью USB-кабеля периодически возникает ситуация, представленная на рисунке: соединение вроде бы устанавливается, но вместо CONNECT сервер провайдера шлет «мусор». При принудительном разрыве связи и новой попытке соединения все повторяется заново. В этом случае помогает отсоединение телефона от USB-кабеля и повторное его подключение. Иногда эту процедуру приходится повторять дважды.

Аналогичные трудности возникают и при использовании Bluetooth: подключение вроде бы происходит нормально, но сообщения «CONNECT» коммуникационная программа так и не дожидается и довольно быстро разрывает соединение. В этом случае помогает следующий обходной путь: удалите компьютер из списка «доверенных устройств» на телефоне и повторите спаривание заново. Придется вводить PIN-код, но зато проблема исчезнет.

Указанные неприятности возникают периодически, но достаточно хаотичным образом: вне зависимости от модели телефона, сотового оператора и дистрибутива (хотя смена последнего тоже иногда помогает). Если вы знаете, в чем кроется разгадка, черкните нам письмецо на letters@linuxformat.ru.

Трюки и хитрости

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

Основное отличие GPRS от обычного Интернета в том, что он медленнее и заметно дороже. Сократив (за счет излишеств, разумеется) объем загружаемого трафика, вы сэкономите и деньги, и время. Например, отключите загрузку картинок в своем web-браузере. Это не так уж страшно, как кажется на первый взгляд, но дает ощутимые результаты. Если же вы – приверженец теории, что Web непременно должен быть графическим, настройте блокировку бан-неров – уж без них-то вы точно проживете. Пользователям Firefox рекомендуем расширение AdBlock Plus: https://addons.mozilla.org/ru/firefox/addon/1865.

Второй крупный растратчик трафика – электронная почта, точнее, спам. Пользователям web-ящиков здесь волноваться особенно не о чем, а тем, кто предпочитает традиционные почтовые клиенты, предлагаем использовать IMAP, а не POP3. В комбинации с антиспамом и Sieve (язык для фильтрации на стороне сервера, http://sieve.mozdev.org) этопозволяет заблокировать львиную долю нежелательной корреспонденции (или хотя бы не скачивать ее за свой счет).

Возможна ситуация, когда web-интерфейса к ящику нет, а IMAP недоступен. Что делать тогда? На помощь приходит функция загрузки заголовков писем, присутствующая во всех маломальски популярных почтовых клиентах. В Mozilla Thunderbird надо перейти в Правка > Настройки > Параметры учетной записи > Параметры сервера и установить галочку напротив строки Принимать только заголовки сообщений. В KMail воспользуйтесь Настройка > Настроить KMail > Учетные записи > Получение, активируйте пункт Фильтровать сообщения, размер которых превышает и укажите небольшой порог, например, 5 байтов. В этом случае KMail будет выводить окно со списком, содержащим тему сообщения, имя автора, дату отправки и размер. Вам останется только решить, принять сообщение или удалить его прямо на сервере.

Ну что же, теперь вы укомплектованы на все сто процентов. Если вам случится выйти в Сеть, сидя на вершине Эвереста или в джунглях Амазонки – не забудьте заглянуть на http://www.linuxforum.ru и похвастаться своими достижениями! LXF

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию