Подключение GPRS в Linux
GPRS и EDGE — технологии передачи данных в сетях сотовой связи стандарта TDMA и GSM. Они могут использоваться для подключения к интернету в местах, где другие способы подключения не доступны (в дороге, на даче).
Статья описывает настройку доступа для компьютера с операционной системой GNU/Linux и мобильного телефона, поддерживающего технологии Bluetooth и EDGE.
Оборудование и программное обеспечение
правитьИспользованное оборудование:
- ноутбук Roverbook Navigator E510L
- Bluetooth-брелок Supercom EP-9221-R (USB)
- мобильный телефон Nokia 6021 (с поддержкой GPRS/EDGE и Bluetooth)
- сотовая сеть оператора Мегафон-Москва
Использованное программное обеспечение:
- операционная система Debian GNU/Linux (testing/etch), ядро 2.6.12-1-686
- пакеты и версии: bluez-hcidump (1.28-1), bluez-pin (0.26-1), bluez-utils (2.19-1), kernel-patch-2.6-bluez (20050328-1), libbluetooth1 (2.24-1), libbluetooth1-dev (2.24-1), ppp (2.4.4b1-1)
С высокой вероятностью всё написанное ниже будет справедливо и для другого оборудования и для других версий программного обеспечения.
Настройка телефона
правитьСледует убедиться, что услуга передачи данных GPRS/EDGE подключена для Вашего тарифного плана. После этого настроить в телефоне точку доступа (APN) для пакетной передачи данных.
В случае контрактного тарифа Мегафон-Москва, услуга скорее всего уже подключена. В телефоне Nokia 6021:
- Настройки -> Настройки конфигурации -> Стд параметры конфигурации: Персон. конфиг.
- Настройки -> Настройки конфигурации -> Настройки персональной конфиг. -> Варианты -> Добавить нов. -> Точка доступа
- Настройки точки доступа: пакетные данные, настройка канала: Точка доступа пакетных данных: internet.msk, тип аутентификации: обычное, имя пользователя: gdata, пароль: gdata
- Настройки -> Настройки конфигурации -> Предпочтительн. точка доступа: выбрать созданную точку доступа.
В других телефонах может быть немного иначе. Для других операторов следует использовать другую точку доступа, имя пользователя и пароль (internet.ltmsk, gdata, gdata для предоплаченных тарифов Мегафон-Москва, internet.mts.ru, mts, mts для МТС, internet.beeline.ru, beeline, beeline для Билайн).
Эти настройки можно потом внести и на компьютере, но при таком подходе эти же настройки точки доступа можно использовать и для интернет-доступа в телефоне.
В телефоне включить Bluetooth. Для Nokia: Настройки -> Подключение устройств -> Bluetooth: Включить. При необходимости в настройках Bluetooth включить режим видимости.
Настройка компьютера
правитьНастройка Bluetooth-соединения
править1) Вставить Bluetooth-модуль в USB-разъём, подгрузить необходимые модули ядра:
# modprobe hci_usb
2) Редактировать файл /etc/bluetooth/hcid.conf. В моем случае я оставил файл практически без изменений, указав лишь свой pin_helper (об этом ниже):
options { autoinit yes; security auto; pairing multi; pin_helper /usr/local/bin/bluepin.helper } device { name "%h-%d"; class 0x3e0100; iscan enable; pscan enable; lm accept; lp rswitch,hold,sniff,park; auth enable; encrypt enable; }
bluepin.helper должен быть программой, печатающей строку вида "PIN:0000", где "0000" -- пароль доступа к компьютеру по Bluetooth. Для этих целей подойдет крохотный скрипт:
#!/bin/bash echo PIN:0000
Не забудьте вместо нулей вписать нормальный пароль и установить права на исполнение bluepin.helper.
Примечание: в новых версиях bluez-utils механизм ввода пароля изменён. Теперь пользователь Bluetooth должен использовать отдельную программу для подтверждения пароля, а общесистемные настройки пароля стали недействительны. Данное верно как минимум для bluez-utils версии 3.7, а возможно и для более ранних версий. В этом случае рекомендуется установить bluez-passkey-gnome (иконка Bluetooth появится в системном лотке после запуска программы bt-applet). В качестве альтернативы можно использовать программу passkey-agent. При попытке спарить телефон и компьютер, требуется ввести одинаковые пароли на телефоне и в появившемся окне ввода пароля.
3) После этого можно запускать службу Bluetooth (в других дистрибутивах Linux это может выглядеть немного иначе):
# /etc/init.d/bluez-utils start
За ошибками на этом этапе можно следить через /var/log/syslog.
В более поздних версиях bluez-utils служба Bluetooth в Debian перезапускается так:
# /etc/init.d/bluetooth restart
4) Проверить работу устройства можно, например, так:
# hciconfig hci0: Type: USB BD Address: 00:11:F6:04:FB:BF ACL MTU: 120:20 SCO MTU: 64:0 UP RUNNING PSCAN ISCAN RX bytes:965327 acl:6408 sco:0 events:2522 errors:0 TX bytes:294442 acl:3841 sco:0 commands:17 errors:0
5) Теперь необходимо найти телефон. Для этого убеждаемся, что Bluetooth на телефоне включен, и активирован режим видимости.
# hcitool scan Scanning ... 00:16:BC:CD:64:D2 Nokia 6021
Был обнаружен только что настроенный телефон. Все в порядке. Его "мак-адрес" запоминаем (выделяем-копируем), он еще пригодится.
6) Редактируем файл /etc/bluetooth/rfcomm.conf и вносим туда "мак-адрес" телефона:
rfcomm0 { bind yes; device 00:16:BC:CD:64:D2; channel 1; comment "Dial-up networking gateway"; }
Могут быть доступны другие каналы Bluetooth (профили), например, профили синхронизации или обмена файлами. Однако для доступа в интернет они не нужны. Список поддерживаемых телефоном профилей можно просмотреть с помощью
# sdptool browse <мак-адрес-телефона>
или
#sdptool records <мак-адрес-телефона>
Для пользователей телефонов на базе Windows Mobile 6:
В шестой версии винмобайла нет профиля DUN, для таких случаев надо использовать соединение через "Bluetooth NAP Service".
Для пользователей телефонов на базе Windows Mobile 5 Smartphone:
Остерегайтесь телефонов, не поддерживающих Dialup Networking по Bluetooth. Например SonyEriccson T280.
Стек, встроенный в ОС, не возвращает информации о профилях на запрос sdptool browse. Экспериментальным путём было обнаружено, что профиль "Dial-up networking gateway" находится на пятом канале. В этом случае запись в /etc/bluetooth/rfcomm.conf выглядит так:
rfcomm0 { bind yes; device 00:11:22:33:44:55; channel 5; comment "Dial-up networking gateway on WM5 Smartphone"; }
00:11:22:33:44:55 - "мак-адрес" вашего телефона.
7) Остановите и перестартуйте службу Bluetooth (возможно, это и необязательно делать, я не знаю, -- прим. автора)
# /etc/init.d/bluez-utils stop # /etc/init.d/bluez-utils start
8) Теперь необходимо провести первое "сопряжение" устройств. Это можно сделать так:
# echo ATZ > /dev/rfcomm0
или так:
#rfcomm connect 0 00:11:22:33:44:55 1
где 0 - номер устройства rfcomm, 1 - номер канала
и ввести пароль (выдаваемый bluepin.helper) на телефоне. После этого на телефоне в списке сопряжённых устройств для устройства-компьютера установить опцию "Автоподключение без подтверждения", тогда телефон больше не будет спрашивать пароля при каждом соединении.
Примечание: после перезагрузки системы при сопряжении может возникнуть ошибка invalid exchange, при этом телефон даже не пингуется, это вызвано тем что не может выполниться скрипт выводящий пин, у меня это было из-за того что не стояли права на его выполнение, лечится
# chmod +x /usr/local/bin/bluepin.helper
Если эта ошибка возникает с самого начала, то возможно вы не правильно указали путь к скрипту в hcid.conf
На этом настройка Bluetooth-соединения закончена.
Настройка соединения GPRS (EDGE)
правитьЭта часть настройки практически неизменна и в случае, если телефон подключен к компьютеру с помощью кабеля или через инфракрасный порт. В этом случае будет необходимо заменить имя устройства (/dev/rfcomm0 в примерах).
Итак, есть настроенное соединение между компьютером и телефоном, в телефоне настроена точка доступа пакетных данных (GPRS/EDGE). Теперь можно настроить GPRS/EDGE-доступ, используя мобильный телефон в качестве модема. "Дозваниваться" будем с помощью программы pppd.
1) В каталоге /etc/ppp/peers/ создаем файл с настройками нового соединения: /etc/ppp/peers/megaedge
/dev/rfcomm0 115200 # отключаем сжатие данных nobsdcomp nodeflate # команда для установки соединения connect '/usr/sbin/chat -v -f /etc/ppp/chat-megaedge' noauth # автоматическое получение сетевых настроек noipdefault usepeerdns defaultroute # необязательно debug nodetach
2) Создаем диалоговый файл /etc/ppp/chat-megaedge
TIMEOUT 5 ECHO ON ABORT '\nBUSY\r' ABORT '\nERROR\r' ABORT '\nNO ANSWER\r' ABORT '\nNO CARRIER\r' ABORT '\nNO DIALTONE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' '' \rAT TIMEOUT 12 OK ATE1 OK 'AT+cgdcont=1,"IP","internet"' OK ATD*99#
Примечание: Если вы видите 'serial line is looped back', то в конце чат-скрипта не хватает строчки: CONNECT ''
Это настройки для Мегафон-Москва. Для других сотовых операторов строку "internet" нужно будет изменить (например, на "internet.mts.ru" или "internet.beeline.ru"). Возможно, некоторые модели сотовых телефонов потребуют изменить номер дозвона: вместо "*99#" попробуйте тогда "*99***1#".
в данном случае имеет значение числовой идентификатор профиля, его можно найти в свойствах профиля соединения телефона, если у вас один профиль, то его номер будет "1" иначе там может быть другое числовое значение
3) Устанавливаем соединение:
# pppd call megaedge AT OK ATE1 OK AT+cgdcont=1,"IP","internet" OK Serial connection established. using channel 2 Using interface ppp0 Connect: ppp0 <--> /dev/rfcomm0 ... (много всего опускаю) local IP address 10.206.131.173 remote IP address 10.6.6.6 primary DNS address 10.22.10.20 secondary DNS address 10.22.10.21 Script /etc/ppp/ip-up started (pid 6203) Script /etc/ppp/ip-up finished (pid 6203), status = 0x0
Соединение установлено, на телефоне Nokia в левом верхнем углу экрана загорается буква "G" в рамочке. Если в терминале нажать ^C или дать команду "killall pppd" -- соединение будет разорвано.
Если при дозвоне появляется сообщение об отсутствии /dev/rfcomm0 можно воспользоваться командой
#rfcomm bind 0 00:16:BC:CD:64:D2 1
в вашем случае ip 00:16:BC:CD:64:D2 может быть другим см.выше
4) Посмотреть параметры соединения (и количество переданных данных) можно так:
# ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:10.206.131.173 P-t-P:10.6.6.6 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:1495 errors:1 dropped:0 overruns:0 frame:0 TX packets:1467 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:981144 (958.1 KiB) TX bytes:339713 (331.7 KiB)
Количество переданных за время подключения данных указано в последней строчке. Следует однако учитывать, что сотовые операторы при подсчете GPRS/EDGE трафика используют свои методики подсчета. Так, Мегафон-Москва округляет объём переданных данных в большую сторону с точностью до 8 килобайт через каждые три минуты соединения.
Другие руководства
правитьПри настройке использовался опыт предшественников: http://www.teaparty.net/technotes/blue-gprs.html (на англ.) и http://gentoo.ru/node/517#comment-2185. Подключение с использованием инфракрасного порта описано по-русски в http://www.opennet.ru/base/net/gprs_linux.txt.html. При использовании кабеля, будет отличаться название устройства.