| « Mamma Mia! | Y2K38 » |
OpenWrt & Asus WL-500gP
Я немного убил один из своих линксисов (wrt54gl) и решил попробовать асус WL-500g Premium. Все-таки в нем памяти побольше, процессор немного мощнее и есть usb порты. У меня задача как всегда была сделать из всего в чем есть процессор "сервер" ;) . От маршрутизатора требовалось стабильно держать wi-fi соединение (у меня сетевой принтер и другой маршрутизатор подключены по wi-fi 27/7 ну и самому в интернете через него сидеть), качать файлы (torrentы и просто) и выступать в роли файлового сервера. Раньше у меня была прошивка dd-wrt (очень радовала стабильностью и приятным веб интерфейсом для настройки, но вот JFFS2 довольно большой минус). Но сейчас хотелось поставить много программ и грузить операционную систему с флешки (ну и забыть про nvram и не думать про циклы перезаписи).
Описание установки:
Продолжение:
Решил собирать OpenWrt Kamikaze из исходников (версия 7.09 была выпущена относительно давно, а я привык к bleeding edge) ровно с тем что мне надо. Из основных минусов 2.4 для меня были нестабильность usb2 (приходилось использовать драйвер 1.1 и терять скорость) и нестабильная работа wi-fi (драйвера проприетарные, и собрать ядро с ними у меня не получилось). И еще мой wl-hdd с 2.4 ядром постоянно перезагружается (раз в день, но на нем мне стабильность особо не важна).
Вначале я пробовал запустить родной wi-fi (Broadcom) в качестве точки доступа. Собрал ядро с драйвером b43 и hostapd (для работы в качестве точки доступа). В принципе все работать получилось заставить, вот только шифрование не смог настроить.
Примерное содержание файла настроек hostapd (точные настройки я просто уже потер) :
driver=devicescape
interface=wlan0ssid=test
hw_mode=g
ieee80211d=1
ieee80211h=1
beacon_int=100
channel=11
В авто запуск надо добавить (убедившись что ссылка на custom-user-startup есть в папке /etc/rc.d):
ifconfig wlan0 down
И сам запуск hostapd с указанием пути до файла конфигурации и ключа перевода в фоновой режим (смотрится запуском с --help). Если у кого будут проблемы, пишите постараюсь описать подробно настройки.
Но я все-таки решил заменить беспроводную карту в маршрутизаторе на что-нибудь поддерживаемое MadWifi. Поставил miniPCI адаптер TP-LINK TL-WN560G. Собрал 2.6 ядро с MadWifi и все прекрасно заработало (даже мощность сигнала очень хорошая получилась). Антенну подключал в разъем main. Из настроек для получения хорошей связи стоит поставить:
Diversity off
TX Antenna 2
RX Antenna 2
ESSID Broadcast по желанию
Bursting on
XR on
Tx Power 18dbm
А все остальное из Wireless Virtual Adaptor Configuration в off.
Мой /etc/config/wireless :
config wifi-device wifi0
option type atheros
option channel '11'
option agmode '11bg'
option distance '600'
option diversity '0'
option txantenna '2'
option rxantenna '2'
option disabled '0'
# REMOVE THIS LINE TO ENABLE WIFI:
config wifi-iface
option device wifi0
option network lan
option mode ap
option ssid 'OpenWrt'
option encryption 'wep'
option hidden '0'
option isolate '0'
option txpower '18'
option bgscan '0'
option wds '0'
option key '1'
option key1 '00000000000000000000000000'
option bursting '1'
option turbo '0'
option macpolicy 'none'
option wmm '0'
option 80211h '0'
option xr '1'
option ar '0'
option frag ''
option rts ''
Естественно параметры шифрования стоит заменить на свои.
Я пробовал подключать две антенны (адаптер это позволяет), но если ее каким-то образом не вывести из корпуса связь становится только хуже. Если оставить одну и установить RX и TX в авто или Antenna 1 то связь тоже будет плохой. С одной антенной связь меня устроила (не хуже чем с родным адаптером).
Далее я настроил загрузку с флешки. У меня монтирование jffs2 были проблемы и настройки не сохранялись после перезагрузки так что я собрал себе прошивку которая сразу начинает загрузку с флешки. Вот моя прошивка (OpenWrt Kamikaze - With X-Wrt Extensions bleeding edge, r10359):
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/custom_image-asus.trx
http://sr.dyndns.ws/ftp/repository/openwrt/custom_image-asus.trx
Загрузка идет с /dev/sda2 (нижний юсб порт, второй раздел флешки, файловая система ext3). /dev/sda1 подключается как свап (первый раздел флешки).
На флешке должно быть содержимое архива:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/rootfs.tgz
http://sr.dyndns.ws/ftp/repository/openwrt/rootfs.tgz
Ну а дальше screen + wget + ctorrent и закачка пошла полным ходом на внешний жесткий :)
Об настройке жесткого и качании торрентов напишу в следующий раз. А пока вот еще ссылка на мои собранные пакеты:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/packages/
http://sr.dyndns.ws/ftp/repository/openwrt/packages/
(официальные лучше не ставить, иначе будет проблема с библиотеками)
По мере надобности буду собирать пакеты. Если вдруг полностью пересоберу систему то я об этом напишу и выложу новую версию прошивки. Если кому-то нужен какой-то пакет, то пишите постараюсь собрать.
зы. А тем временем аптайм одного из моих wrt54gl с прошивкой dd-wrt (v24 RC-4 в моей пересборке) перевалил за 100 дней (хотя нагрузка на нем не маленькая).
46 комментариев
Хотя может просто стоило мне поставить побольше таймауты на запуск и монтирование.
спасибо.
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r10518/custom_image-asus.trx
http://sr.dyndns.ws/ftp/repository/openwrt/r10518/custom_image-asus.trx
rootfs:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r10518/rootfs.tgz
http://sr.dyndns.ws/ftp/repository/openwrt/r10518/rootfs.tgz
Пакеты:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r10518/packages/
http://sr.dyndns.ws/ftp/repository/openwrt/r10518/packages/
У меня есть пару вопросов по твоей прошивке.
Подойдёт ли она к моему АСУСу WL-500gP с родной беспроводной картой?
И ещё хочу попросить тебя помочь мне настроить подключение по VPN. А не силён в Linux'е, поэтому сам, боюсь, не справлюсь.
Заранее благодарю!
С настройкой могу помочь. Обращайся.
Я тут еще новую версию собрал. Скоро выложу.
С wrt54gl такого не было. А для wl-500gP я так понял это нормально.
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r11851/openwrt-brcm47xx-squashfs.trx
http://sr.dyndns.ws/ftp/repository/openwrt/r11851/openwrt-brcm47xx-squashfs.trx
rootfs:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r11851/openwrt-brcm47xx-rootfs.tgz
http://sr.dyndns.ws/ftp/repository/openwrt/r11851/openwrt-brcm47xx-rootfs.tgz
Пакеты:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r11851/packages/
http://sr.dyndns.ws/ftp/repository/openwrt/r11851/packages/
Да могу помочь. Лучше такое сразу мне на почту писать.
В последней версии насколько я помню даже нет этого скрипта загрузки, все идет из внутренней памяти. Если нужен этот скрипт то он есть на официальном сайте openwrt в wiki.
Основная цель была сделать сборку которая работает на wl-500gP с карточкой от Atheros.
С 2.6 будет родная карточка работать скорее всего только через hostapd. Но зато нет проблем с usb. Драйвера для родной карточки появились позже выхода последней стабильной версии openwrt так что советую либо самому сделать свежую сборку из исходников либо например использовать сборки из http://downloads.x-wrt.org/xwrt/kamikaze/snapshots/brcm47xx-2.6/ . А можно и с моей сборкой попробовать.
По сути, ничем. Только первоначальным набором компонентов. Исходники программ я не менял, только настройки. Но в отличии от http://downloads.x-wrt.org/ у меня снапшоты хранятся по версиям. А там постоянна просто обновляется набор пакетов и если в новой сборке новые библиотеки или ядро, то иногда приходится обновлять не только сами пакеты но и всю прошивку чтобы доставить новые компоненты. Мне лень обновлять прошивку,вот и валяется у меня собранная ветка.
2ziam
Точно описать не могу, так как нет возможности проверить. Подобная авторизация возможна с помощью wpa supplicant (есть в пакетах для openwrt) как по беспроводной сети. Только в настройках следует указать wpa-driver wired. Примеры конфигов можно попробовать найти.
зы. Сейчас что-то провайдер у меня крепко упал и долгое время нет интернета (а когда у меня нет интернета и пакеты скачать не получится).
1. Из какой сабверсии в репозитарии openwrt компилился образ для прошивки WL-500gP с поддержкой азеровской миниписиай?
2. И можно увидеть .config, с которым вы компилировали
(repository/openwrt/custom_image-asus.trx ), а то смущает большой размер образа, может там отладочная инфа включена?
3. Чисто из любопытсва, в каком вузе учитесь?
Всех благ,
AndyRus
2. Можно. Уже в английском варианте статьи просили выложить. Вот ссылка:
openwrt.config
Образ большой потому что в нем много пакетов еще дополнительно стоит.
3. В ГУ-ВШЭ. В институте все равно ничему полезному не учат поэтому сам изучал то что мне интересно.
ЗЫ. У меня появилась карточка TP-LINK TL-WN961N 802.11n mini pci (специально для маршрутизатора искал с поддержкой draft n). Она на чипсете от Atheros AR5416+AR2133 и ath9k должен с ней работать. Только вот пока не разобрался как для устройства с процессором от Broadcom в openwrt собрать образ с этим драйвером. Был бы рад если кто хоть советом помог. Если получится собрать то ждите инструкцию по переводу маршрутизатора на draft n
А по поводу места учебы - зело круто
Я тоже не забываю простую истину, что научить нельзя - можно только научиться
По поводу 802.11n можно почитать рассылку https://lists.ath9k.org/mailman/listinfo/ath9k-devel
и поспрашивать там же.
Удачи,
AndyRuss
А с 802.11n проблема в том что уж очень трудно запустить ath9k на чем-то отличном от x86. В openwrt при сборке в целях он вроде только для x86 и есть. Буду пробовать для начало просто отключить проверку для чего сборка идет и дальше уже ошибки смотреть.
uci set wireless.wifi0.disabled=0
uci commit wireless && wifi
"включил" вайфай, а просто вручную отредактировал /etc/config/wireless и дал команду "reboot" на перезагрузку, больше роутер с этим мини-писиай стартовать не смог, при включении загораются справа 5 светодиодов и гаснут все через 3-8 секунд. Перешивка на другие прошивки возможна только при снятой азеровской платке, иначе никак. Вот теперь сижу думаю, можно ли прибить азеровскую миниписиай некорректной загрузкой firmware при старте роутера и повторять ли "следственный эксперимент" с новой азеровской вайфайкой (как в том анекдоте про перевернувшуюся лодку с милиционерами).
regards,
AndyRus
А почему карточка умерла это непонятно. Эта версия прошивки стоит и нормально работает как минимум у меня и у моего друга и работает нормально (правда у нас у обоих карточки TL-WN560G). Решил поискать не было ли чего с wifi карточками подобного тому что недавно было с интеловским сетевым адаптером (ядро 2.6.27-r3 убивало карточку e1000) и нашел только единственное упоминание что с ядром 2.6.22 и WLM54G были проблемы, но решались новой версией madwifi или новым ядром. Сейчас с madwifi карточки работают без бинарных прошивок как раньше, так что маловероятно что карточка умерла так что не восстановить. Если есть желание потестировать то могу сделать новую маленькую сборку с более свежим ядром и madwifi (или вообще например ath5k попробовать). Еще могу посоветовать посмотреть что говорит dmesg если маршрутизатор или ноутбук все-таки с ней загрузится. Ну и попробовать руками поднять сетевой интерфейс (ifconfig ath0 up && iwconfig ath0 essid .... ну и так далее) при этом смотря dmesg.
Сам я уже с железом так натестировался что уже валяется один убитый прошивкой маршрутизатор который без программатора не восстановить. Так что все что выкладываю стараюсь тестировать чтобы все работало правильно и ничего не умирало.
Всех благ,
AndyRus
Умер у меня как раз один из WL-500gP. Это я неудачно с загрузчиком по экспериментировал. jtag для восстановления будет достаточно, но его у меня нет. (сейчас вот взял телефон на основе GNU/Linux, так сразу предусмотрительно заказал с платой отладки).
От трупа роутера всеравно уже wi-fi карту и антену пустил в дело, да и при желании его оживить можно, просто времени не хватает. Так что пускай он лучше лежит до лучших времен.
Удачи,
AndyRus
Еще я сегодня смог все таки собрать ath9k под бродкомовский процессор. Буду экспериментировать. Если удастся запустить маршрутизатор с n протоколом то ждите очередную инструкцию и новую версию прошивки.
А про Neo FreeRunner пойдут более интересные новости когда у меня получится собрать нормальный дистрибутив к нему (стандартные показались не особо интересными). Сейчас вот сам пробую пересобрать инструменты для сборки под ARM процессор.
http://sr.uz/index.php?p=254&more=1&c=1&tb=1&pb=1
Там еще фото того как выглядит маршрутизатор с 3 антеннами.
И там же новая сборка прошивки.
OpenWrt bleeding edge, r13011:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r13011/openwrt-brcm47xx-squashfs.trx
http://sr.dyndns.ws/ftp/repository/openwrt/r13011/openwrt-brcm47xx-squashfs.trx
rootfs:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r13011/openwrt-brcm47xx-rootfs.tgz
http://sr.dyndns.ws/ftp/repository/openwrt/r13011/openwrt-brcm47xx-rootfs.tgz
Пакеты:
ftp://user:pas@sr.dyndns.ws/pub/repository/openwrt/r13011/packages/
http://sr.dyndns.ws/ftp/repository/openwrt/r13011/packages/
Я хотел спросить если можно про USB boot. На OpenWrt wiki написано про проблемы с kamikaze 2.6 &usb boot(NOTE: IMPORTANT: There are reports that this procedure bricks routers running Kamikaze with 2.6 kernel - proceed at your own risk! (It works for some, not for others)).
Не сталкивались ли Вы с подобным?
И ещё один вопрос. Если Asus настроен на USB boot можно ли поменять rootfs на usb без замены прошивки на router чтобы протестировать новую версию без риска неприятностей.
Спасибо!
Sem
С версией ядра 2.6 никаких проблем с USB сколько я снапшоты собирал проблем не замечал. Ни с загрузкой, ни с работой. Использую модуль ядра kmod-usb2. И убить маршрутизатор загрузкой с USB нельзя. (кстати в последней сборке моих снапшотов загрузку с диска необходимо отдельно настраивать). Первоначально ядро в маршрутизаторе грузится из памяти само маршрутизатора. Потом сразу после init запускается скрипт который проверяет, подключено ли что по USB, и если подключено то тогда идет попытка смонтировать раздел. При удаче корень (память самого маршрутизатора) и смонтированный раздел на флешке меняются местами и загрузка продолжается. А если что-то при этом пошло не так или флешка не подключена то загрузка продолжается из внутренней памяти маршрутизатора. Так что все зависит от того на сколько правильно был написан скрипт который производить загрузку с флешки. Свой вариант с которым у меня работает маршрутизатор я скоро постараюсь выложить.
Как следствие из описания загрузки если ядро не поменялось в снапшоте, то можно заменять только содержимое карточки. А вот если поменялось то маршрутизатор лучше прошить и восстановить скрипты загрузки. Вообще по хорошему еще и когда busybox обновляется тоже неплохо бы прошивку на маршрутизаторе обновлять (busybox отвечает за init все-таки).
Я раздобыл себе TP-LINK TL-WN560G rev.2 теперь борюсь с настройками чтобы получить приемлемый сигнал в r13042. Как Вам удалось поставить txpower 18? у меня на все больше 17 дает
Error for wireless request "Set Tx Power" (8B26) :
SET failed on device ath0 ; Invalid argument.
И нечто похожее на core dump в dmesg
br-lan: port 2(ath0) entering disabled state
Reserved instruction in kernel code[#1]:
Cpu 0
$ 0 : 00000000 1000d801 00000204 00000204
$ 4 : 00020000 00000000 00000000 81e153fc
$ 8 : 00401c1c 81e15410 81e16d9c 81e16d80
$12 : 81c3d918 00000001 003d09fa 00000000
$16 : 81d7bf30 81c3dc94 00000012 00000000
$20 : 00000001 00448008 00448c08 00000000
$24 : 00000000 80172d18
$28 : 81d7a000 81d7be70 00448c08 80005fc0
Hi : 00000000
Lo : 00000000
epc : 80005ffc Tainted: P
ra : 80005fc0 Status: 1000d803 KERNEL EXL IE
Cause : 80800028
PrId : 00029006 (Broadcom BCM3302)
Modules linked in: ath_pci wlan_xauth wlan_wep wlan_tkip wlan_ccmp wlan_acl ath_rate_minstrel ath_hal(P) wlan_scan_sta wlan_scan_ap wlan nf_nat_tftp nf_conntrack_tftp nf_nat_irc nf_conntrack_irc nf_nat_ftp nf_conntrack_ftp ipt_MASQUERADE iptable_nat nf_nat xt_state nf_conntrack_ipv4 nf_conntrack ipt_REJECT xt_TCPMSS ipt_LOG xt_multiport xt_mac xt_limit iptable_mangle iptable_filter ip_tables xt_tcpudp x_tables ppp_async ppp_generic slhc crc_ccitt b43 mac80211 cfg80211 arc4 aes_generic deflate ecb cbc crypto_blkcipher crypto_hash cryptomgr crypto_algapi switch_robo switch_core diag
Process hotplug2 (pid: 303, threadinfo=81d7a000, task=81c3d918)
Stack : 00000000 00000001 00000000 80002cc4 80289558 80d0a730 10000000 00401c1c
00020000 00000000 00000000 00000000 00000012 00040001 00000000 00000623
00000000 00000000 00000001 00000000 8001d32c 7f81d3c0 00000000 00000000
8001d52c 81c3d918 8002f440 8001f2e0 00000001 7f81d400 000000d7 00000000
00000001 00448008 00448c08 00000000 00448c08 8008d438 00448ec0 2abe07bc
...
Call Trace:[<80002cc4>][<8001d32c>][<8001d52c>][<8002f440>][<8001f2e0>][<8008d438>][<80002e70>]
Code: 3c031000 10620008 24020204 <1462000e> 0000003d 0800180e ae020021 00431024 14400004
При сборке что было выбрано в качестве драйвера для wi-fi по умолчанию? У меня хорошо работала только стабильная версия madwifi.
Стоит kmod-madwifi - 2.6.25.17+r3314-brcm47xx-1.
Сейчас попробую вашу сборку
у меня только и пишет
-==Device Information==-
MAC Revision: 5311B+ (0x38)
Unable to read EEPROM Magic value!
Turbo 2W maximum dBm: 38
http://sr.uz/index.php?p=255&more=1&c=1&tb=1&pb=1
Надеюсь пригодится
В официальной документации openwrt предлагают немного другой скрипт от того что я использую, но смысл такой же.
Для WhiteRussian примерно тоже самое необходимо делать, только вместо /etc/init.d/rcS нужно редактировать файл /sbin/init (удалить его как ссылку и сделать на его месте скрипт). Первым разделом флешки будет /dev/scsi/host0/bus0/target0/lun0/part1 . А в самом конце скрипта нужно будет еще init запустить командой exec /bin/busybox init . В остальном отличий нет (ну разве что модули по другому еще загружать надо будет, это я уже не помню как там сделано).
Поскольку у самого нет возможности протестировать, могу только приблизительно описать в теории как должно происходить подключение.
Для работы понадобится пакет wpa-supplicant (в openwrt он точно есть).
Для работы нужно отредактировать файл конфигурации /etc/wpa_supplicant.conf чтобы он имел следующий вид:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=TTLS MD5
identity="myloginname"
anonymous_identity="myloginname"
password="mypassword"
phase1="auth=MD5"
phase2="auth=PAP password=mypassword"
eapol_flags=0
}
Как вариант еще можно попробовать такой:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
network={
key_mgmt=WPA-EAP
eap=PEAP
identity="myloginname"
anonymous_identity="myloginname"
password="mypassword"
phase1="peaplabel=1"
phase2="auth=MSCHAPV2"
eapol_flags=0
}
Тут еще можно в последнем варианте попробовать key_mgmt=IEEE8021X и убрать phase1.
Естественно myloginname и mypassword необходимо заменить на логин и пароль соответсвенно.
А запускать соединение нужно командой:
wpa_supplicant -c/etc/wpa_supplicant.conf -Dwired -ieth0.1
Я наверняка тут где-то мог и ошибиться так как это чисто теория и на практике не проверял. Так что очень советую еще при тестировании почитать инструкцию к wpa-supplicant.
Роуер все равно пускает всех в инет не через страничку авторизации. Все кто может помочь или просто поделиться идея буду много благодарен. Спасибо!