Ключевые слова:asus, openwrt, firmware, linux, boot, wifi, (найти похожие документы)
From: Михаил Григорьев <sleuthhound@gmail.com.>
Newsgroups: email
Date: Mon, 16 Apr 2009 14:31:37 +0000 (UTC)
Subject: Настройка доступа в Интернет на ASUS WL-600G с прошивкой OpenWRT через модем ZTE MF627
Исходные данные:
1. Роутер ASUS WL-600G
2. USB модем ZTE MF627 (MF626).
На WL-600G установлена последняя версия прошивки OpenWRT под кодовым
именем Backfire.
Прошивку можно скачать здесь:
http://downloads.openwrt.org/backfire/10.03/brcm63xx/openwrt-96348GW-10-squashfs-bc300-cfe.bin
Модем ZTE MF627 (MF626) разлочен и на него установлена прошивка от Globe Telecom.
Инструкция по перепрошивке модема здесь: http://habrahabr.ru/blogs/hardware/81971/
IP адрес роутера: 192.168.1.1
IP адрес моего компьютера: 192.168.1.10
Компьютер подключен к первому Ethernet порту роутера.
Задача:
Настроить доступ в Интернет c роутера через модем ZTE MF627 (MF626).
В качестве провайдера используется МТС с безлимитный тарифом МТС Коннект-2.
Дополнительная задача:
Обеспечить возможность выхода в Интернет с компьютеров подключенных к
роутеру через порты Ethernet и Wi-Fi.
Решение:
Существует несколько подходов к решению данной задачи, я попробую пойти
самым простым.
Следует отметить, что в модеме MF627 (MF626) применяете технология
ZeroCD, поэтому при подключении модема вначале он представляется как
съёмный диск, на котором находятся драйвера для Windows.
Для того, чтобы начать работу непосредственно с модемом, нужно "извлечь
диск", то есть переключить устройство в режим модема.
Т.к. у нас используется Linux, то есть 2 способа переключения устройства
в режим модема.
1. Вариант с отключением ZeroCD.
2. И вариант без отключения ZeroCD.
У каждого варианта есть свои плюсы и минусы. Если Вы не хотите ждать,
пока модем переподключится, и не хотите ковыряться в Linux ядре, то
можно поковыряться в модеме.
Я предпочел первый вариант как наиболее быстрый.
Для отключения ZeroCD в Windows нам потребуется программа QPST от
Qualcomm. Сама Qualcomm не распространяет открыто эту программу, но,
поискав в Интернете её можно найти.
Далее следует установить её, запустить "QPST Configuration", выбрать
нужный COM-порт, подключиться к модему, и открыть программу EFSExplorer,
которая позволяет работать с файловой системой устройства. В корне
файловой системе устройства нужно найти файл CD_STARTUP_FLAG размером в
один байт. Сохраните этот файл на компьютере, а так же запишите какие
права были у него выставлены. После этого данный файл нужно удалить. В
результате устройство будет подключаться сразу в режиме модема.
В варианте без отключения ZeroCD необходимо пересобрать Linux ядро в
нашей прошивке OpenWRT, а так же скомпилировать программу usb_modeswitch
для переключения MF627 (MF626) в режим модема.
После того как MF627 (MF626) стал сразу же переключатся в режим модема
можно приступить к настройке OpenWRT.
1. Необходимо включить поддержку USB и USB-Serial в OpenWRT, т.к. в
базовой прошивке она отключена.
Т.к. наш модем еще не может выходить в интернет, а для установки
необходимых пакетов он нам нужен, то возможны 2 варианта:
1. Можно запустить у себя в сети web-сервер и скачать туда определеннй набор файлов
и произвести обновление с него.
2. Настроить временный выход в интернет для нашего роутера через локальную сеть.
Я выбрал первый вариант, для этого я скачал с сайта
http://downloads.openwrt.org/backfire/10.03/brcm63xx/packages/
следующие файлы и разместил их в корне своего веб-сервера:
chat_2.4.4-5_brcm63xx.ipk
kmod-hid_2.6.32.10-1_brcm63xx.ipk
kmod-input-core_2.6.32.10-1_brcm63xx.ipk
kmod-input-evdev_2.6.32.10-1_brcm63xx.ipk
kmod-nls-base_2.6.32.10-1_brcm63xx.ipk
kmod-scsi-core_2.6.32.10-1_brcm63xx.ipk
kmod-usb-core_2.6.32.10-1_brcm63xx.ipk
kmod-usb-hid_2.6.32.10-1_brcm63xx.ipk
kmod-usb-serial-option_2.6.32.10-1_brcm63xx.ipk
kmod-usb-serial_2.6.32.10-1_brcm63xx.ipk
kmod-usb-storage_2.6.32.10-1_brcm63xx.ipk
kmod-usb-uhci_2.6.32.10-1_brcm63xx.ipk
kmod-usb2_2.6.32.10-1_brcm63xx.ipk
Packages
Packages.gz
Потом необходимо на нашем роутере в файле /etc/opkg.conf исправить адрес
сервера обновления.
Вариант моего файла opkg.conf:
src/gz snapshots http://192.168.1.10
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
Теперь можно приступить к установке необходимых пакетов на наш роутер,
для этого в консоли последовательно выполняем команды:
# opkg update
# opkg install kmod-scsi-core
# opkg install kmod-nls-base
# opkg install kmod-usb-core
# opkg install kmod-usb-storage
# opkg install kmod-usb2
# opkg install kmod-usb-serial
# opkg install kmod-usb-serial-option
# opkg install kmod-input-core
# opkg install kmod-input-evdev
# opkg install kmod-hid
# opkg install kmod-usb-hid
# opkg install chat
Почему именно такая последовательность? В принципе можно было начать
установку с самого последнего пакета, а он бы по своим зависимостям
притянул все остальное. Иногда такое срабатывает, но на моей практике
это было раза два, во всех остальных случаях USB модем просто не
определялся и более того, всё что связано с USB просто не работало.
Поэтому я ставил пакеты по порядку.
После успешной установки всех пакетом перезагружаем роутер и подключаем
наш USB модем.
Если на предыдущих шагах все прошло гладко, то при подключении USB
модема роутер выдаст нам следующее:
usb 1-2: new high speed USB device using ehci_hcd and address 5
usb 1-2: configuration #1 chosen from 1 choice
option 1-2:1.0: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
option 1-2:1.1: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
scsi3 : SCSI emulation for USB Mass Storage devices
option 1-2:1.3: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
scsi 3:0:0:0: Direct-Access ZTE MMC Storage 2.31 PQ: 0 ANSI: 2
sd 3:0:0:0: [sda] Attached SCSI removable disk
Это значит, что модем найден, а также найдено устройство чтения microSD
карт памяти.
По команде:
# ls /dev/ |grep ttyU
ttyUSB0
ttyUSB1
ttyUSB2
Будет выведен список интерфейсов модема.
Аппаратный интерфейс устройства можно посмотреть по команде:
# cat /proc/bus/usb/devices
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 4
B: Alloc= 1/800 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 2.06
S: Manufacturer=Linux 2.6.32.10 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=0000:00:07.2
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=01 Cnt=01 Dev#= 5 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=19d2 ProdID=0031 Rev= 0.00
S: Manufacturer=ZTE, Incorporated
S: Product=ZTE CDMA Technologies MSM
S: SerialNumber=1234567890ABCDEF
C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
Как можно увидеть, каждый интерфейс предназначен для определённой цели.
Так, третий интерфейс является стандартным преобразователем USB-Serial,
к нему подключён драйвер usb-serial-option, и через этот интерфейс
осуществляется основной обмен данными.
Второй интерфейс предоставляет доступ к карте microSD, и к данному интерфейсу подключён драйвер usb-storage.
Первый интерфейс предназначен для отправки специфических команд, речь о которых пойдёт ниже.
Нулевой интерфейс предназначен для настройки устройства, именно через него работает программа QPST.
Далее необходимо настроить службу PPP для установки соединения.
В интернете на этот счет есть множество статей и огромный список проблем
с которыми сталкиваются люди.
Конкретно для OpenWRT я не нашел готового решения, поэтому разработал
свое, довольно просто и работоспособное.
Итак, на роутере выполняем следующее:
Переходим в каталог /etc/ppp/
# cd /etc/ppp/
Открываем для редактирования файл chap-secrets и записываем в него строчку:
mts * mts *
Создаем файл mts-chat и записываем в него следующие строки:
ABORT BUSY
ABORT ERROR
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid Login'
ABORT 'Login incorrect'
TIMEOUT 5
'' '\\d'
'' '\\d'
'' '\\d'
'' '\\d'
'' '\\d'
'' AT
OK 'ATV1'
OK 'ATE0'
OK 'AT&F&D2&C1S0=0'
OK 'ATS7=60S30=0'
OK 'ATS0=0'
TIMEOUT 10
'' ATZ
OK 'AT+CGDCONT=1,\"IP\",\"internet.mts.ru\"'
TIMEOUT 20
OK 'ATDT*99#'
CONNECT ''
TIMEOUT 5
'~--' ''
Создаем каталок peers
# mkdir peers
В каталоге peers создаем файл mts-serial и записываем в него следующие строки:
ipcp-accept-local
ipcp-accept-remote
noipdefault
defaultroute
usepeerdns
user mts
noauth
novj
nobsdcomp
crtscts
modem
lock
mtu 1500
mru 1500
persist
logfile /dev/null
Кому интересно, почитать значение параметров можно здесь:
http://www.opennet.ru/docs/HOWTO-RU/PPP-HOWTO.html#s12
Следует отдельно упомянуть про параметр persist, благодаря которому в случае
обрыва связи или даже если модем будет отключен, pppd не завершится автоматом.
Проверено на практике, если модем выдернуть из разъема USB, а потом снова
подключить, соединение устанавливается.
Если понадобится вывод отладочной информации в файл, то в mts-serial меняем
logfile /dev/null
на
logfile /var/log/mts-gprs.log
При этом не забываем создать mts-gprs.log командой
# touch /var/log/mts-gprs.log
Примечание: Можно не создавать каталог peers и файл mts-serial, а записать эти
строчки в файл /etc/ppp/options, но это лишит нас некоторой универсальности.
Ведь в каталоге peers можно создать несколько файлов под разных операторов и
несколько файлов XXX-chat и указывать их в параметрах запуска pppd.
На этом настройка завершена, можно запустить pppd командой:
# pppd connect 'chat -f /etc/ppp/mts-chat' call mts-serial /dev/ttyUSB2 115200
Думаю здесь все аргументы pppd понятны и в разъяснениях не нуждаются.
Проверяем с помощью команды ifconfig поднялся ли интерфейс ppp0:
ppp0 Link encap:Point-to-Point Protocol
inet addr:172.29.69.168 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:6 errors:2 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:108 (108.0 B) TX bytes:102 (102.0 B)
Проверяем ping:
root@OpenWrt:/etc/ppp# ping www.ru
PING www.ru (194.87.0.50): 56 data bytes
64 bytes from 194.87.0.50: seq=0 ttl=55 time=2162.011 ms
64 bytes from 194.87.0.50: seq=1 ttl=55 time=1161.568 ms
64 bytes from 194.87.0.50: seq=2 ttl=55 time=180.317 ms
64 bytes from 194.87.0.50: seq=3 ttl=55 time=199.691 ms
64 bytes from 194.87.0.50: seq=4 ttl=55 time=199.090 ms
^C
--- www.ru ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 180.317/780.535/2162.011 ms
Все работает! :)
Для автоматизации запуска pppd создаем файл /etc/init.d/pppd:
#!/bin/sh /etc/rc.common
START=99
start() {
/usr/sbin/pppd connect 'chat -f /etc/ppp/mts-chat' call mts-serial /dev/ttyUSB2 115200
}
stop() {
killall pppd
}
Устанавливаем права:
# chmod 755 /etc/init.d/pppd
Создаем симлинк для автостарта:
# ln -s /etc/init.d/pppd /etc/rc.d/S99pppd
Перезагружаемся, pppd должен запуститься автоматически.
Для визуальной сигнализации включения-отключение интерфейса напишем пару
простых скриптов для управления светодиодом на передней панели роутера:
1. Создадим файл /etc/ppp/ip-up.d/led-on.sh который будет выполнятся при включении интерфейса ppp0:
#!/bin/sh
/usr/bin/gpioctl clear 3
2. Создадим файл /etc/ppp/ip-down.d/led-off.sh который будет выполнятся при отключении интерфейса ppp0:
#!/bin/sh
/usr/bin/gpioctl set 3
3. Установим права на наши файлы:
# chmod 755 /etc/ppp/ip-up.d/led-on.sh
# chmod 755 /etc/ppp/ip-down.d/led-off.sh
Теперь при включении и отключении интерфейса ppp0 на передней панели
будет загораться и гаснуть светодиод с обозначением IP.
Теперь приступим к настройке раздачи Интернета через Ethernet-порты и Wi-Fi.
1. Настроим раздачу Интернета через Ethernet-порты.
Здесь все довольно просто, нужно лишь настроить NAT.
Для этого открываем файл /etc/firewall.user и добавляем туда несколько строк:
#/bin/sh
# Clear all rule
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -F
# NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Вначале мы очищаем все правила iptables, потом добавляем самое простое
правило для NAT.
Запускаем скрипт:
# sh /etc/firewall.user
Проверяем выход в Интернет с компьютера. Все работает, сайты
открываются, icq подключилась. :)
2. Настраиваем Wi-Fi карту в нашем роутере.
По-умолчанию Wi-Fi в OpenWRT отключен. Нам его необходимо включить и настроить.
Для этого открываем файл /etc/config/wireless и приводим его к виду:
config wifi-device radio0
option type mac80211
option channel 5
option macaddr 00:22:15:a3:42:e9
option hwmode 11g
option disabled 0
config wifi-iface
option device radio0
option network lan
option mode ap
option ssid MYROUTER
option encryption psk-mixed/tkip+aes
option key PASSWORD
Значения параметров macaddr, ssid и key у вас будут другие.
На этом настройка Wi-Fi завершена, можно рестартануть роутер и проверить Wi-Fi.
Я проверял подключение к роутеру с помощью игровой приставки Sony PSP,
никаких проблем выявлено не было, подключение в точке доступа прошло
успешно, тест на доступ в Интернет так же прошел успешно.
В данной статье я не затронул настройки сервиса DHCP, т.к. в прошивке
OpenWRT он уже настроен и для подсети 192.168.1.0/24 ничего
дополнительно не нужно. Но если Вам все-таки потребуется что-то
настроить дополнительно, то вся конфигурация находится в файле
/etc/config/dhcp
На этом все, если есть вопросы, пишите, буду рад ответить.
(с) Михаил Григорьев (sleuthhound@gmail.com)
Где бы найти мануал как задействовать MMC карточку в Linksys WRT54GL v1.1 как корневую папку
нашел пакет kmod sdhc установил, карточка видится и работает
а вот дальше поковырался, нашел пакет block-extroot
вот что там дальше делать не пойму
У меня из встроенной памяти свободно только 700 кб
после установки драйверов для SD карточки и поддержки ext3 остается совсем ничего
а хочется еще доставить еще много программ
а качать торренты я лучше на другой кусок железа по сети буду, там HDD куда более емкий чем SD карточка на 1 gb
Ну чтобы ставить софт в OpenWRT на карту придется править сами *.ipk пакеты, потому что многие из них пишут конфиги в /etc и т.п.
А так достаточно в opkg.conf закомментировать
option overlay_root
и изменить
dest root
и все.
Кореневую ФС на карте было бы неплохо разместить, можно попробовать реализовать.
На форуме у них описано как это сделать, но на моем девайсе пришлось пересобрать прошивку что бы вшить некоторые пакеты (в том числе и для поддержки SD карт) что бы на момент загрузки и модификации (remount) корневого раздела карточка уже обнаруживалась ядром
если не пересобирать прошивку то подключить и перемонтировать корень на карточку не получится
>Хм... корневая ФС на флешка, гугл нашел сразу
>https://forum.openwrt.org/viewtopic.php?pid=105996
а еще там есть соседняя тема и там подробно обсуждается мной почему штатно это сделать пока не удается (по крайне мере описания как это сделать для нового ядра и новых пакетов попросту нет) приходится делать самому
На МТС Коннект-2 Бюджетный анлим скорость ограничена 128Кбит, поэтому 115200 думается мне само то, ну если у кого-то 3g и тариф 512 кбит, то можно поставить и 921600
Я на D-Link DIR-320 с прошивкой на основе асусовской всегда ставлю 460800 и реальных
3 мегабита прёт без всяких проблем. Так что видно не с тем чем-то оно связано :)
настраивал asus wl-600g и huawei e156g из windows xp. ВСЁ ПОЛУЧИЛОСЬ :) xbox 360 теперь тоже в сети :) несколько ремарок:
1. Модемы можно настраивать без ZeroCD командами AT в HyperTerminale
AT^U2DIAG=0 (девайс в режиме только модем)
2. Для разлочки Huawei есть генераторы кодов разблокировки (правда я покупал сразу модем нужного оператора), т.е. без прошивки
3. Huawei подключился не на ttyUSB2, a на ttyUSB0
4. Как человек который в первый раз Линкус в жизни увидел хочу отметить моменты которые затруднение вызвали - текстовые файлы в OpenWrt можно отредактировать набрав vim в консоли (как пользоваться найдите в гугле викиучебник).
5. для вебсервера можно использовать tinyweb настраивается в 2 секунды в винде
Большое спасибо за статью.
Вопрос - какие настройки сети должны быть на ПК?
пинг непосредственно на ip - проходит.
а на имя (например www.ru) - неразыменовывается, т.е. DNS еще необходимо на ПК прописать?