Меню | Ещё по GPRS | Как я настраивала GPRS

Настройка GPRS в FreeBSD/PC-BSD

FreeBSD GPRS HOWTO
Настройка GPRS в FreeBSD/PC-BSD, 2-я редакция
(FreeBSD 6.2 + USB Data-Cable + Siemens A75)
--------------------------------------------

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

I. Часть 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: Чтобы система определила Ваш кабель необходимо либо пересобрать ядро с опциями

---
option UCOM
option 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. Это значит что все в порядке и проблемы с аппаратной части позади. Если же в ответ тишина, то нужно искать проблему, возможно менять оборудование, а возможно и совершать различные шаманские действия :)

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

    Оператор у меня в данный момент МТС. С его сайта была почерпнута следующая информация о настройках соединения (настройки самого телефона опущены):

Пользователь: 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
---

# chmod 664 /etc/resolv.conf

Содержимое файла /etc/resolv.conf (DNS-сервера)

---
nameserver 217.008.224.194
nameserver 217.008.224.130
---

Также неплохо бы сделать chmod 664 /etc/resolv.conf для того, чтобы ppp (или pppd) мог получить dns-сервера непосредственно в процессе соединения с оператором.

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

# ppp

Working in interactive mode
Using interface: tun0

А затем комманду

ppp ON melkor2> dial

Проверяем связь и радуемся жизни.

Часть II. Делаем красиво (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: Вполне возможно что что-то я делаю неправильно или недостаточно изящно.
Буду рад дополнениям и исправлениям.

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

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

С Уважением, MelkorBSD. 2006-2007


Hosted by uCoz