Идея использования Wi-Fi роутера совместно с 3G-USB модемами давно меня интересовала. Это действительно удобно, и расширяет сферу применения мобильного интернета и беспроводных компьютерных сетей.
Ещё прошлой весной попала мне информация о замене стандартной прошивки в роутере D-Link DI-524UP, а в скором времени после обновления модельного ряда такое стало возможно с моделью DIR-320. Вот о ней и пойдёт речь. Перечитав некоторое количество форумов понял, что все дороги ведут на украинское зеркало D-Link. Ссылку на него знает наверное уже каждый, кто интересовался этим вопросом. Как и многим, мне так же не удалось добиться стабильности в работе связки DIR-320 с некоторыми моделями CDMA модемов. ZTE, C-Motech … год назад ничего другого не предлагалось. Сколько проблем я получил с приобретением подобных устройств. Но время их ушло и сейчас на рынке присутствует широкий ассортимент модемов, которые не стесняются использовать именитые американские операторы как Verizon, Sprint и другие. Ну да ладно. С модемами вроде как налаживается. Что ж роутеры? А с роутерами ситуация такова,что как и раньше на рынке в эконом сегменте не так уж густо, да и переделать что либо в 3G роутер не так уж много моделей удаётся. Честно говоря промучившишь с перешитым Д-Линк, мне так всё это надоело, что я решил таки попробовать что то посерьёзнее. Снова Гугл. Дошёл я до фаворита сегодняшних дней — проникся я этим девайсом — Asus WL-500GP
Купил, залил адаптированную 3G-прошивку "от чехов"(кто ищет тот всегда найдёт!). Ну сходу она у меня работать не хотела, но почитав форум, посвящённый этой модели — за полдня нашёл решение проблемы и всё заработало, как говориться, на сто долларов (он так и стоит
Сразу оговорюсь — весь материал я практически черпал от сюда
https://wl500g.info/showthread.php?t=17641 — тема "Прошивка Олега на роутере Dlink DIR-320"
Скачиваем прошивку (описание, авторство, а так же методы прошивки — в теме по ссылке)
Заходим в консоль на ПК
telnet 192.168.1.1
Логин, пароль (admin|admin)
Создаём недостающий каталог (далее удобно копипастом)
mkdir /tmp/ppp/peers
Запускаем редактор и используем "копипаст"
vi
Веделяем весь фрагмент (желательно заблаговременно перенести в блокнот и сделать необходимые изменения, касательно логина и пароля (ААА,ВВВ))
В редакторе vi переходим в режим редактирования, нажав "i" и всталяем скрипт, начиная с верхнего левого угла
debug
/dev/usb/tts/0
921600
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 30
lcp-echo-failure 5
usepeerdns
noauth
nodetach
user ‘AAA’
password ‘BBB’
connect "/usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2>/tmp/chat.log"
Жмём "Esc" и сохраняем в файл командой
:w /tmp/ppp/peers/dialup
Выходим из редактора
:q
Просматриваем результат
cat /tmp/ppp/peers/dialup
Аналогично со вторым скриптом
vi (копипастом)
A) для CDMA
» »
» ‘ATZ’
‘OK’ ‘ATD #777’
‘CONNECT’ »
B) для GSM (правим точку доступа APNAPN под себя)
» »
» ‘ATZ’
» ‘AT+CGDCONT=1,"IP","APNAPN"’
‘OK’ ‘ATD *99#’
‘CONNECT’ »
:w /tmp/ppp/dialup.chat
:q
cat /tmp/ppp/dialup.chat
Добавляем ссылки на созданные файлы
echo /tmp/ppp/peers/dialup > /tmp/local/.files
echo /tmp/ppp/dialup.chat >> /tmp/local/.files
Сохраняемся
flashfs save && flashfs commit && flashfs enable
Перезагружаемся
reboot
Нам нужно определить параметры vendor=????? product=????? для нашего модема. Для каждого устройства они уникальны.
Делаем следующее. В открытой сессии telnet даём команду:
tail -f /usr/tmp/syslog.log — получаем логи ядра системы.
Теперь вставляем модем в роутер и наблюдаем за происходящим. На экран выдаст нечто подобное:
Jan 1 02:02:09 kernel: hub.c: new USB device 00:03.0-1, assigned address 2
Jan 1 02:02:09 kernel: usb.c: USB device 2 (vend/prod 0x106с/0x3711) is not claimed by any active driver.
Переписываем нужные нам параметры. Выход по Ctrl-C.
Пробуем запустить порт (используем свои параметры естественно, для примера использованы параметры модема UTStarcom UM150)
insmod usbserial vendor=0x106c product=0x3711 maxSize=4096
Проверяем
ls -l /dev/usb/*
Пробуем соединиться
pppd call dialup
Если всё прошло успешно — выходим по Ctrl-C
Теперь можно создать автоподключение при запуске роутера (аналогично с первым скриптом)
mkdir /tmp/local/sbin
vi (копипастом, не забываем указывать свои конкретные параметры)
#!/bin/sh
insmod usbserial vendor=0x106c product=0x3711 maxSize=4096
sleep 10
pppd call dialup
:w /tmp/local/sbin/post-boot
:q
cat /tmp/local/sbin/post-boot
Делаем скрипт post-boot исполняемым
chmod +x /tmp/local/sbin/post-boot
сохраняем последние изменения
flashfs save && flashfs commit && flashfs enable
reboot
Теперь при включении роутера автоматом всё должно подключаться и работать
The End
P.S. Успешно опробированные мною модели
модемов:
UTStarcom UM150
Sierra 595U
Novatel U720
ZTE AC8700 / 8710
C-Motech CCU-650U
Huawei E1550, E156G
Huawei EC226
телефонов:
Nokia E51
Nokia 6151
Motorola KRZR K1m
В принципе особых ограничений на используемые модели модемов нет.
Исключение пока состаляют новые модели модемов, содержащие в себе автоинсталятор (ZeroCD).
Замечены были
UTStarcom UM175 (AllTel) — проблема решена с помощью модуля usb_modeswitch.
Sierra 597U — пока решения не нашёл.
ZTE 626 (касательно этого модема — существет способ отлючения этой функции)
P.S. Дополнение. С выходом обновлённой версии прошивки решена проблема переключения режима модема ZeroCD->Modem. Так что теперь практически нет проблем с использованием современных моделей.