June 20, 2009

ZTE AC8700 + Debian GNU/Linux

Как подключиться к интернету, если Вы в парке на лавочке, у Вас есть ноутбук c Debian 5.0 и модем zte ac8700? У меня провайдер PeopleNet, потому некоторые моменты будут с ним связанны.
Для начала заставляем Debian понимать то, что в usb мы воткнули модем.
выполняем команду:
#>modprobe usbserial vendor=0x19d2 product=0xfffe

Далее вставляем модем в usb и ждем, пока его индикатор не начнет мигать зеленым цветом.
Замигал зеленым.
выполняем команду
#>dmesg | tail


увидим примерно такой текст:
[ 1076.996261] usbserial_generic 1-1:1.0: generic converter detected
[ 1076.996261] usb 1-1: generic converter now attached to ttyUSB0
[ 1076.996376] usbserial_generic 1-1:1.1: generic converter detected
[ 1076.996376] usb 1-1: generic converter now attached to ttyUSB1
[ 1076.996965] usbserial_generic 1-1:1.2: generic converter detected
[ 1076.997035] usb 1-1: generic converter now attached to ttyUSB2
[ 1077.005092] usb 1-1: New USB device found, idVendor=19d2, idProduct=fffe
[ 1077.005092] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1077.005092] usb 1-1: Product: ZTE CDMA Tech
[ 1077.005092] usb 1-1: Manufacturer: ZTE, Incorporated

читаем конец второй строки. Мой модем садится на порт /dev/ttyUSB0
у Вас может быть что-то типа /dev/ttyACM0
И так. Наш Debian понимает, что в него мы воткнули модем и мы знаем, на какой порт он законектился.
Далее посмотрим детали подключения к интернет:
Необходимо три скрипта.
первый /etc/ppp/peers/pplnet

user 8092xxxxxxx@people.net.ua #Ваш логин у провайдера интернет
password xxxxxx #Пароль к Вашему логину провайдера

/dev/ttyUSB0 #изменяем, если модем садится не на /dev/ttyUSB0

921600 # быстркее чем эта скорость смысла нет, и в принципе может быть навердить
defaultroute # Использовать шлюз по умолчанию мобильной сети
usepeerdns # Использовать DNS внешней сети
#debug # Если проблемы - можно включить дебаг
nodetach
crtscts # hardware flow control
lock # залочить последовательный порт
noauth # не ожидать идентификации от самого себя
local # не использовать Carrier Detect или Data Terminal Ready
persist # перезвонить если соединение утеряно
holdoff 1 # перезвонить через 5 секунд после обрыва
lcp-echo-failure 4 # таймауты для того чтоб уменьшить потери
lcp-echo-interval 65535 # уменьшаем потери
modem
mru 1500
nopcomp
novj
novjccomp
nobsdcomp
nodeflate
noaccomp
ipcp-accept-local
ipcp-accept-remote
noipdefault
connect "/usr/sbin/chat -v -f /etc/ppp/chatscripts/pplnet-connect" # скрипт АТ комманд для коннекта
disconnect "/usr/sbin/chat -v -f /etc/ppp/chatscripts/pplnet-disconnect" # Скрипт АТ команд для дисконнекта

второй скрипт АТ команд для подключения к сети:
/etc/ppp/chatscripts/pplnet-connect
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT '\nRINGING\r\n\r\nRINGING\r'
SAY "ZTE AC8700 modem init: press -C to disconnect"
TIMEOUT 10
'' 'AT'
OK 'ATZ'
OK 'at+crm=1'
OK 'ATD#777'
CONNECT ''
SAY "\n + connected"

третий для дисконнекта:
/etc/ppp/chatscripts/pplnet-disconnect
ABORT BUSY
ABORT ERROR
ABORT 'NO DIALTONE'
TIMEOUT 30
'' '+++\c'
SAY " + sending break"
'' 'ATH'
SAY "\n + dropping data connection"

После того, как создали эти три скрипта необходимо в файле /etc/ppp/chap-secrets указать свой логин и пароль. Выглядит это следующим образом:
# Secrets for authentication using CHAP
# client server secret IP addresses
8092xxxxxxx@people.net.ua * xxxxxx

то есть
логин * пароль
Затем нужно прописать DNS в файле /etc/resolv.conf. У меня вот так:
nameserver 77.109.1.8
nameserver 77.109.1.9

Всего 2 строки.
После того, как проделали все это выполняем следующую команду с правами супер пользователя:
#>pppd call pplnet

Если все внимательно сделали, то работать будет.
Если Вы используете KDE и хотите подключиться без всяких скриптов, а только с помощью нескольких кликов мышкой, то воспользуйтесь kppp. Но есть 2 нюанса.
1. modprobe все равно нужно выполнять
2. добавить в опции pppd пункт noauth(скриншот):

PS. Debian 5.0 / kernel 2.6.26
modprobe я добавил в /etc/rc.local , чтобы при перезагрузке компа модем определялся и не нужно было писать в консоли всю команду.

No comments: