Настройка 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 нужно добавлять такие (вместо тех, которые описаны выше):
Для нормальной работы (включение работы демона USB) USB устройств добавим такую строчку в /etc/rc.conf:
После этого желательно перегрузиться или перечитать /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, НЕ МИГАТЬ, а именно гореть):
Получим такие сообщения:
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
После этого можно подключаться:
#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) Перед установкой пакетов нужно обновить список доступных пакетов:
и только после этого можно уже ставить пакеты. В противном случае будут сыпаться ошибки о том, что пакет не найден.
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
После этого вставляем наш модем и смотрим:
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) Иногда при обрывах нужно выставлять
Файл /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:
Стартовый скрипт /etc/init.d/pppd для запуска выглядит так:
#!/bin/sh /etc/rc.common START=99 start() stop()
Делаем его исполняемым и создаём симлинк в папке /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()
Такая задержка нужна потому, что 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 комментариев
Огромное спасибо. Подключил к МТС-коннект модем к Ubuntu 12.04. Работает как часы.
У меня моторола theory.cdma. можно ее настроить как модем мтс сдма
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