Идея создания недорогого 3G маршрутизатора (роутера)

Идея использования 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-прошивку "от чехов"(кто ищет тот всегда найдёт!). Ну сходу она у меня работать не хотела, но почитав форум, посвящённый этой модели — за полдня нашёл решение проблемы и всё заработало, как говориться, на сто долларов (он так и стоит ) . Получив свою дозу адреналина, я подумал — это конечно хорошо… Но совсем не каждый решиться на такую покупку — действительно у этой модели есть "свой покупатель". Её можно смело рекомендовать небольшим организациям, но вот просто для дома всё же дороговато… И вот с такими мыслями, я случайно, на том же ресурсе наткнулся на обсуждение нашего горячёлюбимого D-Link DIR-320!!! Оказывается нашёлся энтузиаст, адаптировавший прошивку от Asus WL-500Gp V.2, для 320-ки! Я просто сначала не поверил… Но прочитав первые несколько десятков постов проникся этой идеей — дать второй шанс "народному" роутеру. А тем более ещё один хороший человек отписал, что ему после некоторых манипуляций удалось завести на этой прошивке 3G UMTS модем! Вот тут меня зацепило… Мне во что бы то не стало захотелось повторить "подвиг". А тем более перечитав массу форумов уверен — тысячам обладателей 320-го Длинк это будет очень интересно. И так, от теории к практике (сорри за лонг, хотел обрисовать сложившуюся ситуацию вокруг данной модели и идеи 3G роутера, как такового).

Сразу оговорюсь — весь материал я практически черпал от сюда
http://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. Так что теперь практически нет проблем с использованием современных моделей.