Настройка CDMA модема от MTS connect

USB-модемы в наши времена не такая уже и диковинка. Это очень удобная мобильная вещь, с помощью которой можно получить интернет практически в любом месте покрытия вашего оператора.

В этой статье расскажу как можно настроить USB модем под разными типа операционных систем.

Тестовый стенд: FreeBSD 8.1 i386, Debian Linux lenny 5 (kernel 2.6.26), Linksys 160NL, Asus WL-500gP V2 (для этой модели прочтите Примечание для Asus) с прошивкой OpenWRT, модемы AnyData ADU-510A и 3G-CDMA 450 (модем с разъёмом USB-mini)

FreeBSD

1) Подготовка.

Вставляем USB модем в свободный USB порт. В логах (можно смотреть в /var/log/messages, можно через dmesg) должны увидеть такое сообщение:

Sep 27 11:00:46  kernel: ugen0.3: <AnyDATA Corporation> at usbus0
Sep 27 11:00:46  kernel: u3g0: <Data Interface> on usbus0
Sep 27 11:00:46  kernel: u3g0: Found 3 ports.

Если записи присутствуют, значит всё в порядке и приступаем непосредственно к настройкам.

2) Предварительная настройка.

Для начала необходимо подгрузить необходимые USB-драйвера для нормальное работы модема. Для этого прописываем такие строчки в /boot/loader.conf:

ucom_load="YES"
umodem_load="YES"

Иногда нужно подгружать и третий драйвер (ubsa_load=»YES»), но у меня он оказался уже в ядре. Эти строки отвечают за подгрузку драйверов в момент загрузки системы. Если у вас FreeBSD 7.X то в /boot/loader.conf нужно добавлять такие (вместо тех, которые описаны выше):

u3g_load="YES"
umass_load="YES"

Для нормальной работы (включение работы демона USB) USB устройств  добавим такую строчку в /etc/rc.conf:

usbd_enable="YES"

После этого желательно перегрузиться или перечитать /etc/rc.conf и подгрузить модули для usb модема вручную — кому как больше нравиться.

3) Настройка подключения.

Подключение будет осуществляться через соединение PPPoA (PPP через ATM). В handbook’e есть выдержка по поводу этого момента:

Поддержка PPPoA для этого устройства в FreeBSD поставляется в виде порта, поскольку встроенное программное обеспечение поставляется под лицензионным соглашением Alcatel и не может свободно распространяться с основной системой FreeBSD. Для установки этой программы, просто используйте коллекцию портов. Установите порт net/pppoa и следуйте инструкциям.

Но я прочёл это уже после того, как всё настроил. Если вам хочется опробовать рекомендации из handbook’a — можете следовать им. Я же опишу, классическое подключение через pppoa. Так же не маловажным моментом будет упомянуть о «Сравнение версии pppd, входящей в дистрибутив FreeBSD, c обычной версией»

И так, открываем файл /etc/ppp/ppp.conf и пишем туда следующее:

mtsconnect:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set device /dev/cuaU0.0
set speed 115200
set ctsrts off
set phone "#777"
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK \\dATD\\T TIMEOUT 40 CONNECT"
set login
set timeout 0
set authname "mobile"
set authkey "internet"
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

ВНИМАНИЕ! ВСЕ СТРОКИ, КРОМЕ ПЕРВОЙ (mtsconnect:) ДОЛЖНЫ НАЧИНАТЬСЯ С ОТСТУПА

Опишу параметры, которые использовал. Первые 2 строки описывают логгирование. Далее указывается само устройство (/dev/cuaU0.0) и скорость (115200). Что касается опции ctsrts, то вот пояснение, взятое из handbook’a:

Если у вас выделенная линия и нет необходимости устанавливать соединение, выключите контроль передачи данных CTS/RTS командой set ctsrts off. Это обычно необходимо при подключении к поддерживающим PPP терминальным серверам, когда PPP прерывается при попытке записать данные в ваше соединение, и ожидает сигнала CTS, или Clear To Send, который не появляется. Если вы используете этот параметр, используйте также параметр set accmap, который может быть необходим для устранения зависимости от оборудования путем пропускания определенных символов через соединение, обычно XON/XOFF. Обратитесь к странице справочника ppp(8) за более подробной информацией по этому параметру и его использованию.

Далее идёт номер дозвона (#777), команды модему и параметры авторизации. Что касается логина/пароля, так это стандартные для всех модемов MST connect. Строка add default HISADDR отвечает за установку шлюза по умолчанию, полученного от провайдера (в данном случае от MTS). Если не хотите использовать DNS провайдера, уберите строку enable dns.

Теперь осталось добавить строки запуска демона в /etc/rc.conf:

ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="mtsconnect"
ppp_user="root"

После этого запускаем подключение (при этом на модеме должен гореть зелёный индикатор Busy, НЕ МИГАТЬ, а именно гореть):

#/etc/rc.d/ppp start

Получим такие сообщения:

Sep 27 13:04:11 gate kernel: mtsconnect
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_cuseeme.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_ftp.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_irc.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_nbt.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_pptp.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_skinny.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_smedia.so
Sep 27 13:04:11 gate kernel: Warning: No default entry found in config file.

Теперь можно посмотреть в файл /var/log/ppp.log и если там нет ошибок и сообщений вида «hangup» значит всё работает и можно проверить получили ли мы адрес и добавился ли шлюз по умолчанию:

$ifconfig tun0
tun0: flags=8051 metric 0 mtu 1500
options=80000
inet 77.52.25.238 --> 80.255.77.9 netmask 0xffffffff
Opened by PID 483

$netstat -rn | grep default
default 80.255.77.9 UGS 0 22785 tun0

4) Послесловие

В нормальном состоянии на модеме должны гореть 2 индикатора синим цветом:  PWR и IDLE. Когда модем не активен — индикатор Busy не горит, в момент передачи данных — горит постоянно зелёным, в момент подключения мигает зелёным. Если никакие данные не передаются индикатор Busy не горит.

ADU-510A: В режиме ожидания горит зелёный индикатор, в режиме обмена данными — синий. При первом включении нужно дождаться стабильного синего индикатора.

=============================================

Linux

1) Подготовка.

Для того, что увиделся данный модем нужны такие модули ядра: usbserial, usbcore. После подключения модема в dmesg можно увидеть такие строки:

[    5.957968] usb 1-1: configuration #1 chosen from 1 choice
[    6.000222] usb 1-1: New USB device found, idVendor=16d5, idProduct=6502
[    6.000222] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.000222] usb 1-1: Product: AnyDATA CDMA Products
[    6.000222] usb 1-1: Manufacturer: AnyDATA Corporation
[    6.240057] usb 1-2: new full speed USB device using uhci_hcd and address 3

или через lsusb:

#lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 002: ID 16d5:6502 AnyDATA Corporation CDMA/UMTS/GPRS modem
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Теперь у вас должны появится устройства ttyUSB*:

#ls /dev/ttyU*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2

2) Установка ppp

Для нормальной работы нам потребуется пакет ppp. Устанавливаем его:

#apt-get install ppp

3) Настройка.

Создаём файл (по умолчанию он уже есть) /etc/chatscripts/pap такого содержимого:

ABORT           BUSY
ABORT           VOICE
ABORT           "NO CARRIER"
ABORT           "NO DIALTONE"
ABORT           "NO DIAL TONE"
""              ATZ
OK              ATDT\T
CONNECT         ""

Добавляем такую запись в файл /etc/ppp/chap-secrets

mobile      mtsconnect        internet

ну и напоследок создаём собственно файл-пир с настройками нашего подключения /etc/ppp/peers/mtsconnect:

/dev/ttyUSB0
230400
crtscts
modem
noccp
novj
connect "/usr/sbin/chat -e -v -f /etc/chatscripts/pap -T '#777'"
noauth
user mobile
remotename mtsconnect
usepeerdns
defaultroute
debug
updetach
lcp-echo-interval 20
lcp-echo-failure 3
persist
maxfail 0

После этого можно подключаться:

#pon mtsconnect

Либо так:

#pppd call mtsconnect

Что бы соединение поднималось при перезагрузке, добавим такой код в файл /etc/network/interfaces:

auto mtsconnect
iface mtsconnect inet ppp
pre-up /sbin/ifconfig eth0 up
provider mtsconnect

=============================================

OpenWRT

1) Подготовка.

Примечание:

1) В новых реализациях утилита ipkg заменена на opkg.

2) Перед установкой пакетов нужно обновить список доступных пакетов:

#ipkg update

и только после этого можно уже ставить пакеты. В противном случае будут сыпаться ошибки о том, что пакет не найден.

3) Возможно вам и не понадобится устанавливать пакет kmod-usb-storage в следующем пункте

Для того, что бы наш роутер увидел USB-устройство, нужно установить наборы драйверов и утилит для работы с USB-устройствами (иногда вместо ipkg нужно  использовать opkg):

Примечание:

для роутера Asus WL-500gP вместо пакета kmod-usb-ohci нужно использовать пакет kmod-usb-uhci

#ipkg install kmod-usb-core kmod-usb-ohci kmod-usb-serial kmod-usb-storage kmod-usb2 libusb

После этого вставляем наш модем и смотрим:

# cat /proc/bus/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 2.06
S:  Manufacturer=Linux 2.6.32.10 ehci_hcd
S:  Product=Atheros AR91xx built-in EHCI controller
S:  SerialNumber=ar71xx-ehci
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=16d5 ProdID=6502 Rev= 0.00
S:  Manufacturer=AnyDATA Corporation
S:  Product=AnyDATA CDMA Products
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbserial_generic
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbserial_generic
E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbserial_generic
E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

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

2) Настройка.

Подключение будем осуществлять через ppp, поэтому, у вас должен быть установлен пакеты kmod-ppp, ppp, chat.

Что бы иметь возможность работать с нашим устройством, редактируем файл /etc/modules.d/60-usb-serial.  Приводим его к такому виду:

usbserial vendor=0x16d5 product=0x6502

где, параметры vendor и product берём из вывода выше (красная строка).

Конфигурируем ppp. Создаём файл /etc/ppp/peers/mts такого содержания:

hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/ppp/chatscripts/mts"
debug
115200
defaultroute
noipdefault
user "mobile"
#demand
usepeerdns
/dev/ttyUSB0
logfile /dev/nulls
lcp-echo-interval 20
lcp-echo-failure 3
persist
maxfail 0

Примечание:

1) Если подключение не происходит то нужно убирать/добавлять опцию demand.
2) Иногда при обрывах нужно выставлять

lcp-echo-interval 0

Файл /etc/ppp/chatscripts/mts:

ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
'' ATZ
OK-AT-OK "ATDT#777"
CONNECT \d\c

Добавляем пару логиy/пароль в файл /etc/ppp/chap-secrets:

mobile  *       internet        *

Стартовый скрипт /etc/init.d/pppd для запуска выглядит так:

#!/bin/sh /etc/rc.common
START=99
start() {
/usr/sbin/pppd call mts
}
stop() {
killall pppd
}

Делаем его исполняемым и создаём симлинк в папке /etc/rc.d:

#chmod +x /etc/init.d/pppd
#ln -s /etc/init.d/pppd /etc/rc.d/S99pppd

Примечание для Asus

Для модели Asus WL-500gP V2 доступно только ядро 2.4, и с ним связана одна особенность: автоматически не создаётся файл /dev/ttyUSB0, но зато создаются файлы /dev/usb/tts/Х. Попытка прописать в конфиг ppp вместо /dev/ttyUSB0 правильный путь — приводит к ошибке. Поэтому я решил сделать так: немного изменить стартовый скрипт для запуска ppp, о чём свидетельствовали строки 

OpenWrt user.info kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)

В итоге наш скрипт /etc/init.d/pppd должен выглядеть так:

START=99
start() {
ln -s /dev/usb/tts/0 /dev/ttyUSB0
sleep 30
/usr/sbin/pppd call mts
}

Такая задержка нужна потому, что usb драйвера подгружаются не сразу (пока не выяснил почему так).

3) Настройка интернета.

Для раздачи интернета нужен пакет kmod-ipt-nat-extra:

#ipkg install kmod-ipt-nat-extra

Теперь добавляем соответствующее правило трансляции NAT в файервол (обычно это файл /etc/firewall.user):

#iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE

Если внешний IP-адрес статический, то лучше добавить так:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j SNAT --to-source XX.XX.XX.XX

где XX.XX.XX.XX — внешний адрес модема.

Настройка CDMA модема от MTS connect: 5 комментариев

  1. Валера

    Огромное спасибо. Подключил к МТС-коннект модем к Ubuntu 12.04. Работает как часы.

  2. Сергей

    FreeBSD 11.0-RELEASE
    Не распознаёт USB модем 3G-CDMA 450

    umodem0: on usbus0
    umodem0: data interface 255, has no CM over data, has break
    umodem0: no data interface
    device_attach: umodem0 attach returned 6
    umodem0: on usbus0
    umodem0: data interface 255, has no CM over data, has break
    umodem0: no data interface
    device_attach: umodem0 attach returned 6

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *