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 – внешний адрес модема.
7 коментарів “Настройка CDMA модема Novatel U720 от ИнтерТелекома”
“#kldload /boot/kernel/u3g.ko”
Не нужно вводить полный путь к модулю можно ввести просто “kldload u3g”.
Можно и так, но для уверенности лучше ввести полный путь.
Может, кому пригодиться. Для 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
Как тоже самое сделать на altlinux p7? Неделю копаюсь и не могу решить проблему!
А что не получается?
Здравствуйте !
У меня 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
Что еще может нужно настроить, подскажите пожалуйста.
Файл /etc/chatscripts/pap некорректный. Скорее всего вы правили файл под Windows, а потом просто скопировали на Debian и там закрались символы ^M. Либо удалите символы ^M, либо правьте файл прямо в Debian’e