Настройка GPRS в FreeBSD 6.1


Настройка GPRS в FreeBSD (FreeBSD 6.1 + USB Data-Cable + Siemens A75)

Если Вам часто приходится работать в "полевых" условиях, то ноутбук в этом плане вещь просто незаменимая. Но в "полевых" условиях обычно не приходится надеяться на проводное соединение с сетью (глобальной, локальной, а зачастую и электрической). Приходится искать беспроводные решения. Связь через IEEE 802.11 есть далеко не везде. Остается только GPRS, благо сотовая связь существует почти повсюду.
Часть I. Подбор оборудования и настройка ОС

Во-первых, сам телефон. Лично мне в процессе поиска в Сети попалось больше всего положительных отзывов о телефонах Siemens (конкретно моделей C55 и С60), поэтому был приобретен Siemens A75 из нижнего ценового ряда доступных на тот момент моделей.

Во-вторых, дата-кабель. Тут все зависит от того, какой интерфейс у Вас имеется в наличии: COM (RS-232) или USB. Если Вы собираетесь подключаться через COM, то большая часть проблем с совместимостью у Вас отпадает: необходимый кабель можно купить или спаять самому (схем в Сети полно), а затем работать с телефоном как с обычным внешним модемом. На большинстве современных ноутбуков COM-порты отсутствуют, поэтому остается только USB. В FreeBSD есть два драйвера (мне известных) для поддержки USB-дата-кабелей: uplcom и uftdi. Страницы справочника FreeBSD говорят нам следующее:

> man uftdi
The uftdi driver provides support for various serial adapters based on
the FTDI FT2232C, FT8U100AX and FT8U232AM chips.

> man uplcom
The uplcom driver provides support for various serial adapters based on
the Prolific PL-2303, PL-2303X and PL-2303HX USB-to-RS232 Bridge chips.

Логично будет заключить, что искать следует кабель, собранный на этих микросхемах :) Но суровая реальность внесет свои коррективы в Ваш замысел, ибо производители соответствующих шнурков обычно умалчивают о их начинке, а блондинки из салонов сотовой связи этого тем более не знают. И говорить им, что Вам нужен кабель на чипе Prolific PL-2303 бесполезно (я поначалу так и делал:).

Результатом поисков явился дата-кабель серебристого цвета с надписью на коробке "Евросеть" и упоминанием что он предназначен для моделей Siemens c65/s55. На этом информация о нем исчерпывалась. При ближайшем рассмотрении оказалось что он собран на микросхеме Prolific PL-2303HX, то есть как раз то, что нам было необходимо. FreeBSD 6.1 отреагировала на подключение кабеля следующим сообщением:
ucom0: Prolific Technology Inc. USB-Serial Controller, rev 1.10/3.00, addr 2

PS: Чтобы система определила Ваш кабель необходимо либо пересобрать ядро с опциями
device ucom
device uplcom

либо загрузить модули ucom.ko и uplcom.ko (вручную или посредством /boot/loader.conf).

Итак, кабель подключен и определен системой, а в каталоге /dev появились новые устройства:
crw-r----- 1 uucp dialer 0, 123 24 июн 19:34 /dev/cuaU0
crw-rw---- 1 uucp dialer 0, 124 24 июн 13:58 /dev/cuaU0.init
crw-rw---- 1 uucp dialer 0, 125 24 июн 13:58 /dev/cuaU0.lock
crw------- 1 root wheel 0, 120 24 июн 17:51 /dev/ttyU0
crw------- 1 root wheel 0, 121 24 июн 13:58 /dev/ttyU0.init
crw------- 1 root wheel 0, 122 24 июн 13:58 /dev/ttyU0.lock

Если у Вас FreeBSD 5.X, то вместо этого зоопарка Вы увидите только /dev/ucom0. С ним Вам и придется работать.

Мы же можем работать с любым из файлов /dev/cuaU0 и /dev/ttyU0. Следуя привычке, будем работать с первым.

Прежде всего нам необходима возможность работать с модемом не только из под root, но и из под простого смертного юзера (melkor)

Выполняем:
# pw groupmod wheel -m melkor
# pw groupmod dialer -m melkor
# chmod 660 cuaU0* ttyU0*

А чтобы не делать это после каждой перезагрузки - запишем в /etc/devfs.conf
perm cuaU0 0660
perm cuaU0.lock 0660
perm cuaU0.init 0660
perm ttyU0 0660
perm ttyU0.lock 0660
perm ttyU0.init 0660

link cuaU0 cuad1
link cuaU0.lock cuad1.lock
link cuaU0.init cuad1.init

Последние три строчки понадобились мне, чтобы заставить модем работать из-под kppp. Возможно Вам они ни к чему.

Для проверки работоспособности модема можно дать следующую команду:
# cu -l /dev/cuaU0 -s 115200

Затем ввести команду AT и жутко обрадоваться, если модем ответит OK. Это значит, что все в порядке и проблемы с аппаратной частью позади. Если же в ответ тишина, то нужно искать проблему, возможно менять оборудование, а возможно и совершать различные шаманские действия :)

Итак, мы убедились что модем работает и можно приступать к настройке софта.

Прежде всего запишем информацию о DNS-серверах в /etc/resolv.conf:
nameserver 217.008.224.194
nameserver 217.008.224.130

Также неплохо бы сделать
# chmod 664 /etc/resolv.conf

для того, чтобы ppp (или pppd) мог получить dns-сервера непосредственно в процессе соединения с оператором и самостоятельно добавить их в файл.

Оператор у меня в данный момент МТС. С его сайта была почерпнута следующая информация о настройках соединения (настройки самого телефона опущены):
Пользователь: mts
Пароль: mts
Строка инициализации: AT+CGDCONT=1,"IP","internet.mts.ru"
Телефон: *99# (на самом деле придется использовать *99***1# )
DNS: 217.008.224.194, 217.008.224.130
Часть II. Настройка PPP

Вначале попробуем заставить работать модем из-под PPP "уровня пользователя".

Конфиг /etc/ppp/ppp.conf выглядит у нас следующим образом:
default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set device /dev/cuaU0
set speed 115200
set ctsrts off
set phone "*99***1#"
set dial "ABORT BUSY ABORT NO\sCARRIER TIMEOUT 10 "" AT+CGDCONT=1,"ip","internet.mts.ru" OK ATDT\T TIMEOUT 60 CONNECT"
set login
set authname "mts"
set authkey "mts"
set ifaddr 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0
add default HISADDR
set ipcpretries 10 5
enable dns

Все настроили. Теперь даем команду
# ppp

Working in interactive mode
Warning: iface rm: ioctl(SIOCDIFADDR_IN6, fe80:4::211:5bff:fe32:ca2c/64): Can't assign requested address
Using interface: tun0

А затем команду
ppp ON melkor2> dial

Проверяем связь и радуемся жизни.
Часть III. Делаем красиво (pppd + kppp)

Если на машине стоит KDE, то неплохо бы использовать штатную звонилку kppp. Сказано - сделано! Вначале настраиваем pppd.

Создаем следующие файлы:

/etc/ppp/options
/dev/cuad1 115200
debug
defaultroute
persist
user mts
nobsdcomp
nodeflate
kdebug 1
name mts
novj
nocrtscts
lcp-echo-interval 6

/etc/ppp/chap-secrets
"mts" * "mts"

/etc/ppp/pap-secrets
"mts" * "mts"

Также для нормальной работы kppp необходимо дать к ним доступ на запись
# chmod 660 /etc/ppp/options
# chmod 660 /etc/ppp/pap-secrets
# chmod 660 /etc/ppp/chap-secrets

А также поставить SUID-бит на kppp
# chmod 750 /usr/local/bin/kppp
# chmod o+s /usr/local/bin/kppp

Теперь настроим KPPP.

1. Создаем модем:
Имя: Siemens A75
Устройство: /dev/cuad1
Управление потоком: аппаратное
Окончание строки: CR
Скорость соединения: чем больше тем лучше :)
Отмечаем галку "Использовать lock-файл"
Убираем галку "Дождаться сигнала в линии"

В окне "Команды модема" исправляем:
Строка инициализации 1: ATZ
Строка инициализации 2: AT+CGDCONT=1,"ip","internet.mts.ru"
Строка набора номер: ATDT

(остальные команды можно оставить по умолчанию) 2. Создаем соединение:
Имя: МТС
Номер телефона: *99***1#
Авторизация: PAP/CHAP
IP-адрес: динамический
Шлюз: по умолчанию
[X] Назначить этот шлюз маршрутом по умолчанию
DNS-серверы: 217.008.224.194, 217.008.224.130

3. На остальных вкладках настраиваем все по собственному желанию

Вот теперь можно соединяться (не забыв ввести логин и пароль).

PS: Информация из частей II и III является независимой друг от друга. То есть если Вы хотите использовать только какой-то один из способов подключения, Вам необходимо выполнить настройки только из соответствующей части. Информация в части I является общей для обоих способов подключения, и приведенные в ней настройки должны выполняться в любом случае.

PS2: Вполне возможно что что-то я делаю неправильно или недостаточно изящно. Буду рад дополнениям и исправлениям.

PS3: Источники информации:
FreeBSD Handbook
FreeBSD Manual Pages
поиск по форумам bsdportal, opennet и all-siemens

Благодарности: sys, techniX, AnbioZZ, RomA

С Уважением, MelkorBSD. 25.06.2006

http://wiki.bsdportal.ru/doc:gprs

Обновлено: 12.03.2015