Возникла у меня нужда подружить вместе
роутер Asus WL-500g с модемом ZTE AC8700 и чтобы все это работало через people.net.ua (3G EV-DO оператор) ...
Решил описать процесс....
Для начала следует подключить ZTE AC8700 к виндовс машине, настроить и убедиться что все работает.
(и не забудьте оставить гибридный режим, отключить PIN)
Потом следует взять прошивочку от http://koppel.cz/cdmawifi/download/165
Вот соответствие моделей роутеров и индексов названий прошивок:
WL500g Premium -> wl500gp,
WL500g Deluxe -> wl500gx,
WL500g -> wl500g,
WL500b -> 500b или 500bv2, подробнее в тамошнем FAQ.
Утилиту для прошивки - с асуса
http://dlsvr02.asus.com/pub/ASUS/wir...ssian_1382.zip
(http://support.asus.com/download/dow...?model=WL-500g)
Как прошивать - ищите сами, кто не умеет. Не забудьте про сброс в заводские установки...
После прошивки следует зайти в веб-интерфейс модема (admin/admin),
выполнить как минимум Quick Setup
( Internet Connection Type следует выставить как "Cable Modem or other connection type that gets IP automatically." , остальное - как обычно)
И важно настроить диалап режим для нашего уже подключенного модема.
Для этого зайдите в меню "USB Connection (Dial-Up)" - "Connection Mode"
Отметьте "Enable automatic dial on boot"
и выберите "Dial-Up" - "Dial-Up connection via USB modem or
Dial-Up connection via USB-serial converter and modem. "
Потом в следующее подменю "Dial-Up Config" и задайте там параметры коннекта
Username: 8092ххххххх@people.net.ua - ваш логин
Password: Ваш пароль
Dial Number: $777
Кто не имеет пароля - получить его нужно было в виндовс режиме, отправив текстовое сообщение (не важно что в нем) на номер 920.
В ответ вы получите SMS с паролем.
Важно задать "Custom USB device parameters", это аппаратные идентификаторы вашего модема.
USB device Vendor ID (0xabcd): 0x19d2
USB device Product ID (0xefgh): 0xFFFE
И сохраняйте все это дело...
Если у кого другой модем, не ZTE AC8700, получить Vendor ID / Product ID можно с помощью команды lsusb в линукс шеле (или другой программой считывающей аппаратную информацию из USB)
Теперь нужно кое что исправить в настройках прошивки ...
Для этого следует зайти телнетом на модем (admin/admin )
И Выполнить в телнет шеле следующее :
Отключение компрессии РРР
Code:
echo /tmp/ppp/dialup/dialup >>/usr/local/.files
echo nomppc >/tmp/dialup.tmp
echo nomppe >>/tmp/dialup.tmp
cat /tmp/ppp/dialup/dialup >>/tmp/dialup.tmp
cat /tmp/dialup.tmp > /tmp/ppp/dialup/dialup
Модификация скрипта дозвона
Code:
echo /tmp/ppp/dialup/dialup.chat >> /usr/local/.files
echo "'' ''" > /tmp/ppp/dialup/dialup.chat
echo "'' 'ATZ'" >> /tmp/ppp/dialup/dialup.chat
echo "'OK' 'ATS7=60'" >> /tmp/ppp/dialup/dialup.chat
echo "'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'" >> /tmp/ppp/dialup/dialup.chat
echo "'OK' 'ATD \$dialno\$'" >> /tmp/ppp/dialup/dialup.chat
echo "'CONNECT' ''" >> /tmp/ppp/dialup/dialup.chat
После этого можно записать изменения в флеш модема
Code:
flashfs save && flashfs commit && flashfs enable
В принципе после перезагрузки роутер и модем должны заработать, обеспечить вас интернетом.
Если этого не происходит, проверьте лог файл
(в телнете tail -f /tmp/syslog.log или cat /tmp/syslog.log ).
Или через веб, меню "Status & Log" -> "System Log"
Однко у ZTE AC8700 есть одна неприятная особенность, он при обрыве соединенения может не переконектится.
Нормальные hungup команды вроде +++ модем не понимает,
кроме того, насколько мне известно, драйвер usbserial порта в линуксе нормально не обрабатывает дроп DTR-а...
Все это приводит в следующему эффекту, если роутер посчитает что линк оборвался, он попытается рестартануть pppd (произвести реконект).
Однако модем будет продолжать слать в порт данные ррр сессии.
я долго думал как решить эту проблему и не придумал ничего проще и лучше чем просто перегружать роутер (при этом USB порт сбрасывается и модем соответвенно)
Вы можете не делать то что описано ниже - просто прийдется перегружать роутер вручную при отсутсвии связи.
Ниже приведены действия по включению крона и скипт...
все выполняется в телнет шеле.
Code:
mkdir -p /var/spool/cron/crontabs
echo "*/3 * * * * /tmp/pinger.sh > /dev/null 2>&1" > /var/spool/cron/crontabs/admin
echo "/var/spool/cron/crontabs/admin" >> /usr/local/.files
echo "/usr/sbin/crond" >> /usr/local/sbin/post-boot
echo "/tmp/pinger.sh" >> /usr/local/.files
Этот код обеспечит проверку линка раз в 3 минуты.
вы можете подредактировать кронтаб и вручную с помощью
crontab -e
(управлением редактором как в vi)
Крме того, в файл /tmp/pinger.sh необходимо поместить следующий код
(внимание, переводы строк должны быть в unix формате !)
Code:
#!/bin/sh
FILE="/tmp/ping-errors" # сюда пишем промежуточное знаение счетчика ошибок
MAXERRORS=2 # Если больше чем столько раз ошибка пингов - ребутим
code=1
/bin/ping -q -c 2 193.0.0.193
code=$?
if [ $code -gt 0 ]; then
if [ -f $FILE ]; then # Проверяем наличие файла с переменной
. $FILE # и инклудим его (и переменную)
else
errors=0 # а если нет - присваиваем начальное значение
fi
errors=`expr $errors + 1` # Приращиваем...
echo "errors=$errors" > $FILE # Пишем в файл новое значение
if [ $errors -gt $MAXERRORS ]; then
rm -f $FILE
reboot
fi
else
if [ -f $FILE ]; then # А если получили код заверщения 0
rm -f $FILE # то просто стираем наш файл...
fi
fi
я для этого воспользовался интернетом - выложил pinger.sh на некий промежутчный сервер и выполнил
Code:
cd /tmp
wget http://my_internet_server.com/pinger.sh
cat /tmp/pinger.sh - должен выдать код нашего скрипта, проверьте все ли скачалось...
А теперь можно и записать измеенения:
Code:
flashfs save && flashfs commit && flashfs enable
После перезагрузки все должно заработать.