1 October 2011

ZRouter — пихаем FreeBSD в роутер DLINK

*nix
Пару недель назад
Я бегал по хабру как угорелый в поисках рецепта (как оживить умерший роутер DIR-620).
Основная проблема была в том что родная прошивка 620-ки не принимала модем Verizon U175. И после нескольких прошивок DDWRT я наконец-то нашел ту самую которая и угробила его превратив в овощтупой свич.
А вот что произошло дальше читайте под катом

Походы к местным специалистам не увенчались успехом, одни пробовали подключиться к консольке но не получилось, они же рекомендовали перешить на программаторе сам чип, другие говорили, что бобик умер окончательно. Но всё таки жалко было расставаться со своими кровными 50дол. И я заказал в одном из интернет магазинов (это опять же целая история) кабель DCA-510 и перепаял его под свои нужды.
Дальше, воспользовавшись наглядным пособием и схемой:
и сделал себе доступ к U-boot-у.
После этого мне удалось установить на него DD-WRT от ASUS rt-n13u который я и установил в первый раз. Но в этот раз у меня уже была консолька и желание поэкспериментировать с FreeBSD.

FreeBSD — начало.
Сначала я надыбал на просторах интернета Вики в котором делалась компиляция ядра БЗДи какраз под этот чип. Скомпилил попробовал, ну какбы запускается и чето ищет по bootp.
Но дальнейшие поиски привели меня на сайт zrouter.org На котором мне и посчастливилось скачать ту самую прошивку о которой и пойдет речь.
Для начала следуя советам сайта делаем по пунктам:


Далее, я создал файлик start.sh:
#!/bin/sh
export FREEBSD_SRC_TREE=/usr/home/zrouter/head/head
export OBJ_DIR=/home/zrouter/obj
exec ./menu.sh

просто для удобства запуска через screen
Далее в лучших традициях FreeBSD появляется текстовый интерфейс

С выбором параметров платформы, и сборки

для DIR-620 выбрал соответственно Device -> DIR-620, Target -> zImage
Пока что не рекомендую пользоватся пунктами Save\Load так как из-за них у меня сборка не доходила до конца вываливаясь с ошибкой:
==> building zrouter !!!
"Makefile.inc1", line 139: Unknown target mipsel:mips.
"Makefile", line 280: warning: "(MAKEOBJDIRPREFIX=/usr/obj//usr/home/andriyj/zrouter/zrouter/tmp/ make TARGET=mips TARGET_ARCH=mipsel TARGET_CPUARCH=mips ZROUTER_ROOT=/usr/home/andriyj/zrouter/zrouter WITHOUT_ASSERT_DEBUG=yes WITHOUT_ATM=yes WITHOUT_CLANG=yes WITHOUT_INFO=yes WITHOUT_INSTALLLIB=yes WITHOUT_IPX=yes WITHOUT_LOCALES=yes WITHOUT_MAN=yes WITHOUT_NLS=yes WITHOUT_PROFILE=yes WITHOUT_RESCUE=yes WITHOUT_SSP=yes -DNO_CLEAN WITHOUT_JAIL=yes WITHOUT_INET6=yes WITHOUT_INET6_SUPPORT=yes WITHOUT_MAN=yes WITHOUT_INFO=yes WITHOUT_NLS=yes WITHOUT_CDDL=yes WITHOUT_NIS=yes WITHOUT_BLUETOOTH=yes NOENABLE_WIDEC=yes -DNOENABLE_WIDEC WITHOUT_KERBEROS=yes WITHOUT_KERBEROS_SUPPORT=yes -C /usr/src buildenvvars)" returned non-zero status
"Makefile", line 288: Need an operator
"Makefile", line 288: Need an operator
"Makefile", line 288: Need an operator
"Makefile", line 288: Need an operator
"Makefile", line 288: Need an operator
"Makefile", line 288: Need an operator
"Makefile", line 288: Need an operator
make: fatal errors encountered -- cannot continue

Жмем на Build и ждем создания образа.
Далее поднимаем tftp и пробуем загрузится.

Прошивка


Так как у меня на роутере уже стоял DDWRT и не очень то хотелось его сносить то для начала воспользовался пунктом 4 U-boot с последующим tftp test.bin и bootm но таким образом не хотело грузится запакованное ядро ( выдавало ошибку при проверке lzma ). Тогда, следуя советам найденным на просторах www.dd-wrt.com попробовал грузится по пункту 1. И загрузка пакованного ядра пошла. Но упорно не виделся rootfs.
Набравшись наглости я написал прямо разработчику: Олександру Рыбалко. В разговоре и пробах с которым мы провели следующие несколько часов (точнее где-то 3 дня но работали по вечерам максимум по 1-2 часа).
В итоге выяснилось что ядро ZRouter ищет rootfs по адресу во флэш-памяти а не RAM. Прошив роутер по пункту 2 U-boot я наконец-то получил вожделенный FreeBSD.

Настройка


Веб-Интерфейс получился очень даже несложным, я бы даже сказал — спартанским
В настройках обнаружились как и подобает: DHCP, PPTP, PPPoE, 3G, Wifi(временно неработающий).
Собственно их настройка одинакова для любых подобных вещей независимо от прошивки и производителя.
Стоит заметить однако что кнопка Update не сохраняет данные. Это делает кнопка Save settings в главном меню.
Дальше настройка 3G modem-a (пришлось изменить только ссылку на девайс /dev/cuaU0.0), сохранение параметров (обязательно), перезагрузка (обязательно).
Модем поднялся на УРА.

Итоги, грабли на которые не обязательно наступать


Итоги
1. Прошивка работает (собственно через нее сейчас и интернет по которому пишу сюда)
2. Есть проблемы с Wifi ( по заявлениям разработчика она рабочая где-то на 60%, но в браузере пока не настраивается)
3. 3G модемы определяются на ура (по крайней мере из испробованных прошивок Dlink original, DDWRT, ZRouter только последний нормально определил мой Verizon U175

Грабли:
1. Обязательно используйте свежее ядро из репозиториев ZRouter
2. Обязательно прошивайте а не пробуйте запускать из RAM
3. Update не записывает данные поэтому надо принудительно записывать все через меню.

P.S.
Приношу благодарность за работающий роутер:
www.facebook.com/arybalko
— Колективу zrouter.org
— Собеседникам из канала #zrouter на IRC EFNet
UPD: Для желающих поддержать проэкт
Кошельки:
— Z105679867090
— U364832937482
— R959084523149
— E366383023429
Tags:dir-620freebsdfirmwaremodemusb
Hubs: *nix
+53
20.9k 54
Comments 18
Popular right now
Профессия iOS-разработчик
November 30, 202075,000 ₽SkillFactory
Основы HTML и CSS
November 30, 2020FreeНетология
SMM-менеджер
November 30, 202059,998 ₽GeekBrains
Курс по аналитике данных
November 30, 202053,500 ₽SkillFactory
Frontend-разработчик с нуля
November 30, 202077,940 ₽Нетология
Top of the last 24 hours