Создание мода прошивки DD-WRT под Yota
Цель
Статья написана для тех кто желает добавить дополнительный функционал в прошивку подготовленную в статье «Прошивка DD-WRT под Yota для маршрутизаторов ASUS» или добавить функционал поддержки модема Samsung SWC-U200 в какой-либо иной мод DD-WRT.
Требования
В процессе подготовки мода нам потребуются:
- машина под управлением Linux;
- права пользователя root (файлы прошивки DD-WRT принадлежат пользователю root).
Распаковка содержимого прошивки
Для начала нам необходимо получить дистрибутив инструментария для создания модов прошивки.
mkdir -p /tmp/firmware_modkit cd /tmp/firmware_modkit wget http://www.bitsum.com/files/firmware_mod_tools.tar.gz tar xvzf firmware_mod_tools.tar.gz rm -f firmware_mod_tools.tar.gz
После нам необходимо в папку /tmp/firmware_modkit положить дистрибутив dd-wrt который будем модифицировать. Например svn14205_big
wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/V24_TNG/svn14205/dd-wrt.v24-14205_NEWD-2_big.bin
Распаковываем содержимое прошивки в рабочую директорию
./extract_firmware.sh dd-wrt.v24-14205_NEWD-2_big.bin work_dir Firmware Mod Kit (extract) v0.62 beta, (c)2008 Jeremy Collake http://www.bitsum.com Checking for updates ... You have the latest version of this kit. LINUX system detected. Compatibility ok. Testing file system of work_dir ... Building tools ... Build seems successful. Preparing working directory ... Removing any previous files ... Creating directories ... Extracting firmware Attempting squashfs 3.0 lzma ... Trying 'damn small' variant - used by DD-WRT v24 ... Firmware appears extracted correctly! Now make changes and run build_firmware.sh.
Теперь в папке work_dir находится содержимое прошивки DD-WRT
ls -l work_dir/ total 12K drwxr-xr-x 2 root root 4.0K May 6 09:23 image_parts drwxr-xr-x 2 root root 4.0K May 6 09:23 installed_packages drwxr-xr-x 16 root root 4.0K Apr 7 16:58 rootfs
Модификация прошивки
Теперь Вы можете изменить содержимое поршивки одним из указанных ниже способов:
- в соответствии инструкцией что приводится на странице описания инструментария для создания модов;
- путем модифицирования содержимого файловой системы в папке work_dir/rootfs/;
- путем копирования набора файлов необходимых для работы модема Samsung SWC-U200 в папку work_dir/rootfs/.
Для копирования набора файлов необходимых для работы модема Samsung SWC-U200 необходимо выполнить следующие команды
wget http://www.network-engineer.ru/files/post_256/dd-wrt_yota_files.tar.gz tar xvzf dd-wrt_yota_files.tar.gz -C work_dir/rootfs/
Сборка мода прошивки
Для того чтобы собрать измененный мод необходимо дать команду
./build_firmware.sh mod_dir work_dir
Теперь в папке mod_dir находится подготовленный Вами мод прошивки. Для прошивки маршрутизатора Вы можете испоьзовать файл mod_dir/custom_image.trx.
Прочая информация
К сожалению из под Windows собрать прошивку с помощью firmware modkit невозможно. По крайней мере, мне неизвестно о портировании инструментария firmware modkit на платформу Windows.
Мною регулярно вносятся улучшения в прошивку DD-WRT с целью обеспечения хорошей работы в сети Yota. На 02 ноября 2010 г. улучшения требуют внесения изменений в исходный код. По этой причине дальнейшие улучшения файлов имеющихся в файле dd-wrt_yota_files.tar.gz производиться не будет.
Ссылки
Прошивка DD-WRT под Yota для маршрутизаторов ASUS
Инструментарий для создания модов прошивки DD-WRT
Текущие сборки DD-WRT
Сборки версии svn14205
Компиляция DD-WRT из исходного кода
а можно можно попросить вас сделать билд прошивки вашей но тока под Asus WL-500W конкретно
В статье «Прошивка DD-WRT под Yota для маршрутизаторов ASUS» как раз имеется прошивка которая работает на WL-500W.
Я не сильный специалист, но зато идея есть
А идея такая, хочется мне прикрутить к роутеру на dd-wrt юсб веб-камеру.
Первым делом надо интегрировать в прошивку дрова. Правильно я мыслю?
начинаю распаковывать прошивку ftp://dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/06-30-10-r14684/Asus-RTN13U/Asus-RTN13U-webflash.bin
в конце ошибка.
[root@localhost firmware_modkit]# ./extract_firmware.sh Asus-RTN13U-webflash.bin work_dir
Firmware Mod Kit (extract) v0.62 beta, (c)2008 Jeremy Collake
http://www.bitsum.com
Checking for updates …
You have the latest version of this kit.
LINUX system detected. Compatibility ok.
Testing file system of work_dir …
Building tools …
Build seems successful.
Preparing working directory …
Removing any previous files …
Creating directories …
Extracting firmware
Attempting raw linux style firmware package (i.e. TEW-632BRP) …
Extracting Asus-RTN13U-webflash.bin to work_dir …
Error: filesystem not extracted properly.
firmware image format not compatible?
[root@localhost firmware_modkit]#
два вопроса, если можно. что за ерунда? правильное направление с вебкамерой держу?
@Proh , да вы все делаете верно.
Ошибка при распаковке указанной Вами прошивки заключается в том, что прошика не может коректно быть распакованна утилитой src/untrx. Одной из причин я вижу в том что используется новая версия файловой системы или используется другой механизм создания файловой системы прошивки.
К сожалению более точно сказать что происходит для меня не возможно. Для этого необходимо разобраться с тем что делат утилита src/untrx.
Да, вы правы, операционка мандрива и файловая система ext4. Попробую переставить ос, посмотрю что будет.
Еще вопрос, если можно. Есть ли возможность интегрировать в прошивку сразу и вебсервер под веб-камеру? Интуитивно понимаю что можно, но как я уже говорил, я не сильный специалист
Просто не хочется заморачиваться с юсб концентраторами и устанавливать все это дело на флешку или хдд… Порт юсб у моего роутера один.
@Proh, я говорил о файловой системе прошивки. До последнего времени в прошивке использовалась файловая система SquashFS.
Перестановка мандривы на вашем компьтере в распаковке прошивки не поможет.
@Proh, касательно вебкамеры посмотрите следующие статьи:
спасибо за ссылки и направление. буду рыть.
а не затруднит Вас распаковать мою прошивку у себя? просто не думается мне, что именно для моего роутера файловую систему сменили. хотя… статус прошивки wip…
@Proh , я уже пытался распаковать файловую систему указаной Вами прошивки. Утилита src/untrx не понимает ее. Прошивка состоит из нескольких сегментов первый она извлекает, а последующие не может.
Попробуйте это сделать другими прошивками. Так Вы сможите сравнить как должно быть и как есть.
Такой вопрос: вот здесь http://www.dd-wrt.com/phpBB2/viewtopic.php?p=99564#99564
предлагается уже готовая прошивка.
А мой роутер Asus RT-N13U начал поддерживаться dd-wrt только вот недавно.
я все таки думаю не стоит рисковать?
что он сделал с прошивкой написано вот
legend for the images:
usb-onlywebcam-mod: All files needed for webcam support
350n-usbmodules: Additional modules to have usb1 support on a wrt350n
allusbmodules: Additional all the file-system and usb-storage modules like rekoil offered
no-chillisputnik: chillispot and sputnik manually removed to save additional space
и вроде бы все понятно, но как же с дровами быть? под какую он вебкамеру все необходимое добавил?..
ни слова про сам веб интерфейс..
опенврт вообще не поддерживает мой роутер
Если я надоел, то только намекните
просто не распаковав прошивку нет ведь способа дрова поставить, правильно?
вот здесь упоминается я так понимаю другой firmwaremodkit. попробую отпишусь тогда.
@Proh Касательно риска. Если разберетесь с процедурой оживления маршрутизатора «через девятую ногу», то можете шить без риска. Максимум что может случится это либо прошивка «не заведется», либо WiFi адаптер не заработает. После это можно откатится на любую прошивку.
Проверку вопроса будет ли работать ваша камера на dd-wrt лучше начать с настройки работы камеры на мандриве. После можно будет это повторить на dd-wrt.
Для того чтобы внести изменения в веб интерфейс dd-wrt скорей всего потребуется компиляции исходного кода. Поэтой причине и нет описания в тех статьях.
Все пакеты расширений, dd-wrt берет с сайтов open-wrt. Вам нужно только каким-либо образом интегрировать (установить в jffs) необходимый вам пакет open-wrt в прошивку dd-wrt.
Альтернативным способом сделать свою прошивку вляется ее сборка из исходников. Но это процедура на порядок сложнее и более трудоемкая.
Решение приведенное по приведенной Вами ссылке может быть полезным при малом объеме флешь памяти на борту маршрутизатора. Маршрутизатор Asus RT-N13 как раз к тами и относится.
И снова здравствуйте.
А Вы пробовали распаковать прошивки вот отсюда http://www.dd-wrt.com/phpBB2/viewtopic.php?p=99564#99564 ?
таже самая петрушка. а ведь каскад я думаю не менял файловую систему прошивки.
пробовал распаковать эти прошивки чтоб вытащить оттуда дрова для вебкамеры и посмотреть как оно становится на мандриву вообще… ан нет.
@Proh, значит получается что утилита src/untrx не все прошивки может распаковать.
Остается два варианта. Первый либо разобраться с форматом прошивки, либо компилировать прошивку из исходного кода.
https://forum.openwrt.org/viewtopic.php?id=11304
https://forum.openwrt.org/viewtopic.php?id=12248
http://www.openmss.org/Hardware/MssExtractFirmware
http://www.openmss.org/Firmware/MSS
Внимательно посмотрите формат структуры struct _trx_header в файле src/untrx.h.
Компресированая файловая система из нужной Вам прошивки может быть извлечана следующими командами
dd if=Asus-RTN13U-webflash.bin of=squashfs bs=1 skip=925724
src/squashfs-3.0-lzma-damn-small-variant/unsquashfs-lzma squashfs
Файлы будут находится в директории squashfs
А вот как извлеч kernel точно пока не знаю, но попробуйте эту команду
dd if=Asus-RTN13U-webflash.bin of=segment2 bs=1 skip=28 count=925696
Сегмент №1 думаю можно взять из другой прошивки.
Здравствуйте! Подскажите, а как поменять значения по умолчанию в прошивке dd-wrt? Слишком часто у меня RT-N16 сбрасывается в эти factory defaults -( Я установил firmware modification kit на свою систему Debian и распаковал содержимое одной из прошивок. Вот только не пойму, куда дальше копать. А вообще было бо хорошо сделать следующее:
1) На настроенной системе сохранить все настройки через веб-интерфейс dd-wrt в файл (nvrambak.bin)
2) Каким-то образом добавить импорт настроек из этого файла в default settings. при этом файл настроек можно хранить в /jffs
Т.е. рутер сбрасывается на default settings, тут же импортируются рабочие настройки, перезагрузка и всё ок -)
@Аноним путь который вы предлагаете не работает, проверено мной.
То что вам необходимо на 97% процентов реализуется через создание файла с настройками по-умолчанию «с нуля».
Необходимо:
а) скачать исходные коды прошивки;
б) отредактировать файл «src/router/services/sysinit/defaults.c»;
в) перейти в папку «src/router»;
г) дать команды «make clean» и «make services».
После чего в файле «src/router/services/bin/defaults.bin» будет лежать файл с настройками по умолчанию.
А что если я возьму сохраненный файл nvrambak.bin, переименую его в defaults.bin, положу в /etc/defaults.bin (в директорию с распакованной прошивкой) и соберу прошивку?
Т.е. если задача defaults.c – это сгенерить defaults.bin, то простая подмена файлов может решить проблему или я ошибаюсь?
@Аноним попробуйте, это займет у вас 5 минут и Вы все увидите.
Добрый день! Попробовал, не получилось.
Поставил виртуалку с Debian 64bit, установил все необходимые пакеты через apt-get, скачал исходники через svn, инструментарий кросскомпиляции (4.1.2), разархивировал его и прописал путь к bin в переменную PATH. Отредактировал deafults.c под свои нужды, перехожу в src/router, делаю make clean – всё нормально без ошибок. make services – вылезают ошибки вида:
In file included from /root/trunk-rn16/src/shared/shared/wlutils.h:19,from utils.c:48: /root/trunk-rn16/src/include.v23/wlioctl.h:24:28: error: proto/bcmevent.h: No such file or directory
in file included from /root/trunk-rn16/src/router/shared/wlutils.h:19, from utils.c:48: /root/trunk-rn16/src/include.v23/wlioctl.h:402: warning: ‘packed’ attribute ignored
In function ‘getSTA’: utils.c:2727: warning: implicit declaration of function ‘nvram_nmatch’
и .т.п.
make[1]: [utils.o] Error 1
make: [libutils] Error 2
и процесс прекращается… Не подскажите, в чем может быть проблема?
@Аноним для начала выполните процедуру сборки прошивки по инстркции на этой странице. После вернитесь к сборке файла с настройками по-умолчанию с помощью команд
make cleanmake -f Makefile.brcm26 services
Выполнил все инструкции по этой ссылке. Дошел до раздела «Компиляция и сборка». Делаю make -f Makefile.brcm26 configure – все нормально, make -f Makefile.brcm26 all – вылезают все те же ошибки
Ошибся в написании аргумента команды ср (Создание конфигурационных файлов). Исправил. Старые ошибки исчезли. Буду пробовать дальше
@Аноним трабла связана с тем что компилятор почему-то не может найти требуемый файл в папке «src/include.v23″. Необходимо найти почему он от туда пропал и востановить его, или сделать ссылку на аналогичный в другом месте.
Тут два мои сообщения, которые я написал, к сожалению, не отображаются. С предыдущими ошибками разобрался (ошибся в написании аргумента команды ср). Теперь новая появилась (после выполнения make services) – вываливается с ошибкой «Полный путь к тулчайну/bin/…/ld: cannot find -lnet. services.so error 1″. Я поставил уже практически все пакеты libnet, но ошибка не уходит
Попробуйте указать путь на другой тулчейн. Переменная PATH должна быть установлена и содержать папку с тулчейном.
Я использую тулчейн компилируемый для OpenWRT. К сожалению с другим тулченом не работал и не смогу точно подсказать.
И все-таки мне удалось выполнить команду make -f Makefile.brcm26 services
без ошибок -). Тулчайн брал из большого набора тулчейнов (~1Gb), но фактически, это то же самое, что и по вашей ссылке. Теперь могу ли я взять свой defaults.bin, положить его в готовую прошивку, например от eкo, запаковать, используя firmware_modkit и прошиваться? Может быть, необходимо заменить еще какие-то файлы? Заранее спасибо
Всё сделал именно так, и всё получилось. Правда, несмотря на все правки адреса по умолчанию 192.168.1.1 в defaults.c на мой собственный, этот внутренний адрес, к сожалению, не меняется
@Аноним все верно, я рад что Вы это сделали.
По поводу адреса по умолчанию, рекомендую выполнить поиск в исходном коде где встречается комбинация 192.168.1.1. Этот адрес устанавливается в коде инициализации маршрутизатора. Не через файл defaults.c.
Приветствую! Проблему с ip-адресом удалось решить, используя команды nvram, которые в свою очередь запускаются из заданий cron. Но теперь новая проблема -) У многих служб в веб-интерфейсе, когда я сбрасываю настройки на свой файл по умолчанию, в том числе USB, Proftpd, OpenVPN вообще не стоит точки – ни у Disable, ни у Enable. Больше всего не радует это в отношении usb и openvpn, т.к. эти вещи реально используются. В моем файле defaults.c поддержка usb, например, по умолчанию включена. Никак не пойму, в какую сторону смотреть для устранения этой проблемы.
@Аноним какие параметры по умолчанию хранятся в конфиг файле определяется файлом из папки «src/router/configs». Например «broadcom_K26/.config_mini.v24-K26″
Как насчёт более новых верси прошивок?
В частности интересует поддержка openvpn недавно появившаяся в dd-wrt
@Денис Вы можете взять прошивку DD-WRT с необходимым функционалом и повторить процедуру описаную тут. Таким образом у Вас будет прошивка с openvpn и работающей Yota.
Поставил прошивку.
Мульти WAN работает, переключается.
Проблема в такая. Через некоторое время, от 10 минут до нескольких часов «умирает инет». В route появляется запись
default 10.164.96.1 0.0.0.0 UG 0 0 0 wimax0
default 213.108.xxx.xxx 0.0.0.0 UG 0 0 0 vlan1
чинится route del default.Основной инет по статике.
Т.е. остаётся одна запись для vlan1.(Вроде так правильно?)
в логах никаких записей о запуске скриптов относящихся к вимаксу.
Выяснил, что всё нормально работает, если убить процесс
udhcpc -p /var/run/udhcpc.wimax0.pid -i wimax0 -s /etc/udhcp/default.script
Но, это помогает, пока не отвалится/перестанет пинговаться модем, потом происходит рестарт, и процесс запускается снова.
можно конечно какой-то «костыль» придумать, но хочется понять где собака зарыта.
что-то связанное с renew как я понимаю, но в логах ничего нет, значит default.renew не запускается…..
Принцип работы скриптов заключается в том проверяется что маршрутизатор по умолчанию от проводного провайдера. Проверка делается пингом. Если маршрутизатор не ответил, то поднимается маршрут на WiMax провайдера. Таким образом если в таблице марштизатора имеются две строки default, то значит маршрутизатор провайдера не ответил на пинг.
посмотрите пинги в консоли маршрутизатора командой
tcpdump -ni vlan1 icmp
или
tcpdump -ni vlan1 icmp and host < адрес маршрутизатора провайдера>
Таже посмотрите содержимое файла http://www.network-engineer.ru/files/post_256/dd-wrt_yota_files-3case.tar.gz
В нем три набора скриптов для пордержи yota. Рекомедую вопспользоваться вторым.
присоединяюсь к вопросу @Дениса о сборке вашей прошивки с WIMAX на базе DD-WRT+OVPN, это было бы просто воплощением мечты… на скорую руку собрал в одном месте монстра из 2 320х – первый под томатом от DAN_TES для WIMAX, в его DMZ – DD-WRT+OVPN жутковато… и очень нестабильно работает…
в основно по вине вимакс роутера – соединение падает, и он по идее должен его перезапускать – нет, помогает только перетык модема…
на первый заливал так же прошивку от MAX_MAD, но на ней ваймакс просто не заводится у меня, вообще (((
Сам нужную прошивку даже с маном не соберу, не силен ((
Готов потратить денег на прошивку, в разумных пределах…
Или придется собирать франкенштейна – draytek(эти вроде хорошо с йотой работают, но дороги и не кастомизируются как угодно), а за ним dd-wrt+ovpn…
заказная прошивка выглядит куда оптимальней )
Насколько ваш вариант успешно перезапускает соединения в случае пропадания-появления ваймакса?