Настройка CDMA модема Novatel U720 от ИнтерТелекома

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

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

Тестовый стенд: FreeBSD 8.1 i386, Debian Linux lenny 5 (kernel 2.6.26), Linksys 160NL, Asus WL-500gP V2 (для этой модели прочтите Примечание для Asus) с прошивкой OpenWRT, модемы Novatel U720

FreeBSD

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

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

Nov 10 12:15:10  kernel: ugen1.2: <Novatel Wireless Inc.> at usbus1
Nov 10 12:15:10  kernel: u3g0: <Data Interface> on usbus1
Nov 10 12:15:10  kernel: u3g0: Found 3 ports.

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

Данный модем использует драйвер u3g, поэтому проверьте присутствие его в системе:

# kldstat -v | grep u3g
305 uhub/u3g

Если у вас его нет, то можно либо вкомпилировать в ядро, а можно подгрузить и модулем:

#kldload /boot/kernel/u3g.ko

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

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

itc:
ident user-ppp VERSION (built COMPILATIONDATE)
set log PHase Chat LCP IPCP CCP tun command
set device /dev/cuaU0.0
set phone "#777"
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0s7=60 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set login
set timeout 0
set authname "IT"
set authkey "IT"
add default HISADDR

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

Иногда могут потребоваться такие строки:

set speed 1920000
set ifaddr 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0

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

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

После этого запускаем подключение:

#/etc/rc.d/ppp start

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

$ifconfig tun0
tun0: flags=8051 metric 0 mtu 1500
options=80000
inet 95.111.XX.XX --> 195.128.XX.XX netmask 0xffffffff
Opened by PID 483

$netstat -rn | grep default
default 195.128.XX.XX UGS 0 22785 tun0

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

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: Novatel CDMA Products
[ 6.000222] usb 1-1: Manufacturer: Novatel 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 Novatel 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

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/pap-secrets:

IT * IT *

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

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

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

#pon itc

Либо так:

#pppd call itc

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

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

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

OpenWRT

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

Примечание:

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

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

#ipkg update

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

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

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

Примечание:

для роутера 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=1410 ProdID=2110 Rev= 0.00
S: Manufacturer=Novatel Wireless Inc.
S: Product=Novatel Wireless CDMA
C:* #Ifs= 2 Cfg#= 1 Atr=a0 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

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

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

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

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

usbserial vendor=0x1410 product=0x2110

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

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

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

Примечание:

и файл /etc/ppp/chatscripts/itc:

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

Примечание:

Для модема используется тип шифрования только PAP, поэтому логин и пароль (у Интертелекома используется логин/пароль=IT/IT заглавными) нужно добавлять именно в файл /etc/ppp/pap-secrets:

IT    *     IT   *

В противном случае будет появляться сообщение:

rcvd [CHAP Failure id=0x1 "Account disabled"]

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

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

Делаем его исполняемым и создаём симлинк в папке /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 its
}

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

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

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

#ipkg install kmod-ipt-nat-extra

Теперь добавляем соответствующее правило трансляции NAT в файервол:

#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 модема Novatel U720 от ИнтерТелекома: 7 комментариев

  1. tehnikpc

    «#kldload /boot/kernel/u3g.ko»
    Не нужно вводить полный путь к модулю можно ввести просто «kldload u3g».

    1. skeletor Автор записи

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

  2. Pit Molla

    Может, кому пригодиться. Для openwrt attitude_adjustment еще нужно добавить маршрут по умолчанию
    route add default ppp0
    Не забываем про dns и для раздачи правила
    #/etc/ppp/ip-up
    iptables -A forwarding_rule -o $1 -j ACCEPT
    iptables -A forwarding_rule -i $1 -j ACCEPT
    iptables -t nat -A postrouting_rule -o $1 -j MASQUERADE

  3. Андрей

    Как тоже самое сделать на altlinux p7? Неделю копаюсь и не могу решить проблему!

  4. Борис

    Здравствуйте !
    У меня Debian (Jessie). Такой же модем от Интертелеком . Сделал по вашим инструкциям. Но коннект не проходит.
    Здесь — лог :
    Jan 22 11:14:50 debian chat[5975]: AT$NWRSSI^M^M
    Jan 22 11:14:50 debian chat[5975]: ^M^M
    Jan 22 11:15:10 debian chat[5975]: alarm
    Jan 22 11:15:10 debian chat[5975]: Failed
    Jan 22 11:15:10 debian pppd[5898]: Script /usr/sbin/chat -e -v -f /etc/chatscripts/pap -T ‘#777’ finished (pid 5974), status = 0x3
    Jan 22 11:15:10 debian pppd[5898]: Connect script failed
    Jan 22 11:15:42 debian chat[5998]: abort on (BUSY)
    Jan 22 11:15:42 debian chat[5998]: abort on (VOICE)
    Jan 22 11:15:42 debian chat[5998]: abort on (NO CARRIER)
    Jan 22 11:15:42 debian chat[5998]: abort on (NO DIALTONE)
    Jan 22 11:15:42 debian chat[5998]: abort on (NO DIAL TONE)
    Jan 22 11:15:42 debian chat[5998]: send (ATZ^M)
    Jan 22 11:15:42 debian chat[5998]: expect (OK)
    Jan 22 11:15:42 debian chat[5998]: ^M^M
    Jan 22 11:15:50 debian chat[5998]: AT$NWRSS^M
    Jan 22 11:15:50 debian chat[5998]: ^M^M
    Jan 22 11:16:20 debian chat[5998]: AT$NWRSSI^M^M
    Jan 22 11:16:20 debian chat[5998]: ^M^M
    Jan 22 11:16:27 debian chat[5998]: alarm
    Jan 22 11:16:27 debian chat[5998]: Failed
    Jan 22 11:16:27 debian pppd[5898]: Script /usr/sbin/chat -e -v -f /etc/chatscripts/pap -T ‘#777’ finished (pid 5997), status = 0x3
    Jan 22 11:16:27 debian pppd[5898]: Connect script failed
    Jan 22 11:16:59 debian chat[6001]: abort on (BUSY)
    Jan 22 11:16:59 debian chat[6001]: abort on (VOICE)
    Jan 22 11:16:59 debian chat[6001]: abort on (NO CARRIER)
    Jan 22 11:16:59 debian chat[6001]: abort on (NO DIALTONE)
    Jan 22 11:16:59 debian chat[6001]: abort on (NO DIAL TONE)
    Jan 22 11:16:59 debian chat[6001]: send (ATZ^M)
    Jan 22 11:16:59 debian chat[6001]: expect (OK)
    Jan 22 11:16:59 debian chat[6001]: ^M^M
    Что еще может нужно настроить, подскажите пожалуйста.

    1. skeletor Автор записи

      Файл /etc/chatscripts/pap некорректный. Скорее всего вы правили файл под Windows, а потом просто скопировали на Debian и там закрались символы ^M. Либо удалите символы ^M, либо правьте файл прямо в Debian’e

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

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