Главная > DD-WRT > Создание мода прошивки DD-WRT под Yota

Создание мода прошивки DD-WRT под Yota

Цель

Статья написана для тех кто желает добавить дополнительный функционал в прошивку подготовленную в статье «Прошивка DD-WRT под Yota для маршрутизаторов ASUS» или добавить функционал поддержки модема Samsung SWC-U200 в какой-либо иной мод DD-WRT.

Требования

В процессе подготовки мода нам потребуются:

  1. машина под управлением Linux;
  2. права пользователя 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

Модификация прошивки

Теперь Вы можете изменить содержимое поршивки одним из указанных ниже способов:

  1. в соответствии инструкцией что приводится на странице описания инструментария для создания модов;
  2. путем модифицирования содержимого файловой системы в папке work_dir/rootfs/;
  3. путем копирования набора файлов необходимых для работы модема 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 из исходного кода

Categories: DD-WRT Tags: ,
  1. alex
    8 Май 2010 в 07:48 | #1

    а можно можно попросить вас сделать билд прошивки вашей но тока под Asus WL-500W конкретно

  2. 11 Май 2010 в 10:13 | #2

    В статье «Прошивка DD-WRT под Yota для маршрутизаторов ASUS» как раз имеется прошивка которая работает на WL-500W.

  3. Proh
    10 Июль 2010 в 16:46 | #3

    Я не сильный специалист, но зато идея есть :)
    А идея такая, хочется мне прикрутить к роутеру на 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]#

    два вопроса, если можно. что за ерунда? правильное направление с вебкамерой держу? :)

  4. 11 Июль 2010 в 18:57 | #4

    @Proh , да вы все делаете верно.
    Ошибка при распаковке указанной Вами прошивки заключается в том, что прошика не может коректно быть распакованна утилитой src/untrx. Одной из причин я вижу в том что используется новая версия файловой системы или используется другой механизм создания файловой системы прошивки.
    К сожалению более точно сказать что происходит для меня не возможно. Для этого необходимо разобраться с тем что делат утилита src/untrx.

  5. Proh
    13 Июль 2010 в 12:56 | #5

    Да, вы правы, операционка мандрива и файловая система ext4. Попробую переставить ос, посмотрю что будет.
    Еще вопрос, если можно. Есть ли возможность интегрировать в прошивку сразу и вебсервер под веб-камеру? Интуитивно понимаю что можно, но как я уже говорил, я не сильный специалист :)
    Просто не хочется заморачиваться с юсб концентраторами и устанавливать все это дело на флешку или хдд… Порт юсб у моего роутера один.

  6. 13 Июль 2010 в 13:10 | #6

    @Proh, я говорил о файловой системе прошивки. До последнего времени в прошивке использовалась файловая система SquashFS.
    Перестановка мандривы на вашем компьтере в распаковке прошивки не поможет.

  7. 13 Июль 2010 в 13:18 | #7

    @Proh, касательно вебкамеры посмотрите следующие статьи:

    1. USB and WebCAM support for DD-WRT;
    2. Webcam on Asus WL500G.
  8. Proh
    13 Июль 2010 в 15:51 | #8

    спасибо за ссылки и направление. буду рыть.
    а не затруднит Вас распаковать мою прошивку у себя? просто не думается мне, что именно для моего роутера файловую систему сменили. хотя… статус прошивки wip…

  9. 13 Июль 2010 в 16:06 | #9

    @Proh , я уже пытался распаковать файловую систему указаной Вами прошивки. Утилита src/untrx не понимает ее. Прошивка состоит из нескольких сегментов первый она извлекает, а последующие не может.
    Попробуйте это сделать другими прошивками. Так Вы сможите сравнить как должно быть и как есть.

  10. Proh
    13 Июль 2010 в 17:28 | #10

    Такой вопрос: вот здесь 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

    и вроде бы все понятно, но как же с дровами быть? под какую он вебкамеру все необходимое добавил?..
    ни слова про сам веб интерфейс..

    опенврт вообще не поддерживает мой роутер

    Если я надоел, то только намекните ;)

    просто не распаковав прошивку нет ведь способа дрова поставить, правильно?

  11. Proh
    13 Июль 2010 в 18:33 | #11

    вот здесь упоминается я так понимаю другой firmwaremodkit. попробую отпишусь тогда.

  12. 13 Июль 2010 в 19:38 | #12

    @Proh Касательно риска. Если разберетесь с процедурой оживления маршрутизатора «через девятую ногу», то можете шить без риска. Максимум что может случится это либо прошивка «не заведется», либо WiFi адаптер не заработает. После это можно откатится на любую прошивку.

    Проверку вопроса будет ли работать ваша камера на dd-wrt лучше начать с настройки работы камеры на мандриве. После можно будет это повторить на dd-wrt.

    Для того чтобы внести изменения в веб интерфейс dd-wrt скорей всего потребуется компиляции исходного кода. Поэтой причине и нет описания в тех статьях.

    Все пакеты расширений, dd-wrt берет с сайтов open-wrt. Вам нужно только каким-либо образом интегрировать (установить в jffs) необходимый вам пакет open-wrt в прошивку dd-wrt.

    Альтернативным способом сделать свою прошивку вляется ее сборка из исходников. Но это процедура на порядок сложнее и более трудоемкая.

    Решение приведенное по приведенной Вами ссылке может быть полезным при малом объеме флешь памяти на борту маршрутизатора. Маршрутизатор Asus RT-N13 как раз к тами и относится.

  13. Proh
    14 Июль 2010 в 20:13 | #13

    И снова здравствуйте.
    А Вы пробовали распаковать прошивки вот отсюда http://www.dd-wrt.com/phpBB2/viewtopic.php?p=99564#99564 ?
    таже самая петрушка. а ведь каскад я думаю не менял файловую систему прошивки.
    пробовал распаковать эти прошивки чтоб вытащить оттуда дрова для вебкамеры и посмотреть как оно становится на мандриву вообще… ан нет.

  14. 14 Июль 2010 в 21:56 | #14

    @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 думаю можно взять из другой прошивки.

  15. Аноним
    23 Май 2011 в 14:48 | #15

    Здравствуйте! Подскажите, а как поменять значения по умолчанию в прошивке dd-wrt? Слишком часто у меня RT-N16 сбрасывается в эти factory defaults -( Я установил firmware modification kit на свою систему Debian и распаковал содержимое одной из прошивок. Вот только не пойму, куда дальше копать. А вообще было бо хорошо сделать следующее:
    1) На настроенной системе сохранить все настройки через веб-интерфейс dd-wrt в файл (nvrambak.bin)
    2) Каким-то образом добавить импорт настроек из этого файла в default settings. при этом файл настроек можно хранить в /jffs
    Т.е. рутер сбрасывается на default settings, тут же импортируются рабочие настройки, перезагрузка и всё ок -)

  16. 23 Май 2011 в 15:34 | #16

    @Аноним путь который вы предлагаете не работает, проверено мной.
    То что вам необходимо на 97% процентов реализуется через создание файла с настройками по-умолчанию «с нуля».
    Необходимо:
    а) скачать исходные коды прошивки;
    б) отредактировать файл «src/router/services/sysinit/defaults.c»;
    в) перейти в папку «src/router»;
    г) дать команды «make clean» и «make services».
    После чего в файле «src/router/services/bin/defaults.bin» будет лежать файл с настройками по умолчанию.

  17. Аноним
    23 Май 2011 в 15:41 | #17

    А что если я возьму сохраненный файл nvrambak.bin, переименую его в defaults.bin, положу в /etc/defaults.bin (в директорию с распакованной прошивкой) и соберу прошивку?
    Т.е. если задача defaults.c – это сгенерить defaults.bin, то простая подмена файлов может решить проблему или я ошибаюсь?

  18. 24 Май 2011 в 15:04 | #18

    @Аноним попробуйте, это займет у вас 5 минут и Вы все увидите.

  19. Аноним
    27 Май 2011 в 13:27 | #19

    Добрый день! Попробовал, не получилось.
    Поставил виртуалку с 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
    и процесс прекращается… Не подскажите, в чем может быть проблема?

  20. 27 Май 2011 в 13:46 | #20

    @Аноним для начала выполните процедуру сборки прошивки по инстркции на этой странице. После вернитесь к сборке файла с настройками по-умолчанию с помощью команд
    make clean
    make -f Makefile.brcm26 services

  21. Аноним
    27 Май 2011 в 14:21 | #21

    Выполнил все инструкции по этой ссылке. Дошел до раздела «Компиляция и сборка». Делаю make -f Makefile.brcm26 configure – все нормально, make -f Makefile.brcm26 all – вылезают все те же ошибки

  22. Аноним
    27 Май 2011 в 14:42 | #22

    Ошибся в написании аргумента команды ср (Создание конфигурационных файлов). Исправил. Старые ошибки исчезли. Буду пробовать дальше

  23. 27 Май 2011 в 14:46 | #23

    @Аноним трабла связана с тем что компилятор почему-то не может найти требуемый файл в папке «src/include.v23″. Необходимо найти почему он от туда пропал и востановить его, или сделать ссылку на аналогичный в другом месте.

  24. Аноним
    27 Май 2011 в 15:09 | #24

    Тут два мои сообщения, которые я написал, к сожалению, не отображаются. С предыдущими ошибками разобрался (ошибся в написании аргумента команды ср). Теперь новая появилась (после выполнения make services) – вываливается с ошибкой «Полный путь к тулчайну/bin/…/ld: cannot find -lnet. services.so error 1″. Я поставил уже практически все пакеты libnet, но ошибка не уходит

  25. 27 Май 2011 в 15:17 | #25

    Попробуйте указать путь на другой тулчейн. Переменная PATH должна быть установлена и содержать папку с тулчейном.
    Я использую тулчейн компилируемый для OpenWRT. К сожалению с другим тулченом не работал и не смогу точно подсказать.

  26. Аноним
    7 Июнь 2011 в 14:32 | #26

    И все-таки мне удалось выполнить команду make -f Makefile.brcm26 services
    без ошибок -). Тулчайн брал из большого набора тулчейнов (~1Gb), но фактически, это то же самое, что и по вашей ссылке. Теперь могу ли я взять свой defaults.bin, положить его в готовую прошивку, например от eкo, запаковать, используя firmware_modkit и прошиваться? Может быть, необходимо заменить еще какие-то файлы? Заранее спасибо

  27. Аноним
    7 Июнь 2011 в 23:27 | #27

    Всё сделал именно так, и всё получилось. Правда, несмотря на все правки адреса по умолчанию 192.168.1.1 в defaults.c на мой собственный, этот внутренний адрес, к сожалению, не меняется

  28. 8 Июнь 2011 в 15:21 | #28

    @Аноним все верно, я рад что Вы это сделали.
    По поводу адреса по умолчанию, рекомендую выполнить поиск в исходном коде где встречается комбинация 192.168.1.1. Этот адрес устанавливается в коде инициализации маршрутизатора. Не через файл defaults.c.

  29. Аноним
    9 Июнь 2011 в 21:31 | #29

    Приветствую! Проблему с ip-адресом удалось решить, используя команды nvram, которые в свою очередь запускаются из заданий cron. Но теперь новая проблема -) У многих служб в веб-интерфейсе, когда я сбрасываю настройки на свой файл по умолчанию, в том числе USB, Proftpd, OpenVPN вообще не стоит точки – ни у Disable, ни у Enable. Больше всего не радует это в отношении usb и openvpn, т.к. эти вещи реально используются. В моем файле defaults.c поддержка usb, например, по умолчанию включена. Никак не пойму, в какую сторону смотреть для устранения этой проблемы.

  30. 10 Июнь 2011 в 08:59 | #30

    @Аноним какие параметры по умолчанию хранятся в конфиг файле определяется файлом из папки «src/router/configs». Например «broadcom_K26/.config_mini.v24-K26″

  31. Денис
    27 Июль 2011 в 01:28 | #31

    Как насчёт более новых верси прошивок?
    В частности интересует поддержка openvpn недавно появившаяся в dd-wrt

  32. 27 Июль 2011 в 09:23 | #32

    @Денис Вы можете взять прошивку DD-WRT с необходимым функционалом и повторить процедуру описаную тут. Таким образом у Вас будет прошивка с openvpn и работающей Yota.

  33. rizer
    21 Декабрь 2011 в 10:16 | #33

    Поставил прошивку.
    Мульти 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 не запускается…..

  34. 21 Декабрь 2011 в 22:01 | #34

    Принцип работы скриптов заключается в том проверяется что маршрутизатор по умолчанию от проводного провайдера. Проверка делается пингом. Если маршрутизатор не ответил, то поднимается маршрут на 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. Рекомедую вопспользоваться вторым.

  35. dennz
    17 Январь 2012 в 07:50 | #35

    присоединяюсь к вопросу @Дениса о сборке вашей прошивки с WIMAX на базе DD-WRT+OVPN, это было бы просто воплощением мечты… на скорую руку собрал в одном месте монстра из 2 320х – первый под томатом от DAN_TES для WIMAX, в его DMZ – DD-WRT+OVPN жутковато… и очень нестабильно работает…
    в основно по вине вимакс роутера – соединение падает, и он по идее должен его перезапускать – нет, помогает только перетык модема…
    на первый заливал так же прошивку от MAX_MAD, но на ней ваймакс просто не заводится у меня, вообще (((

    Сам нужную прошивку даже с маном не соберу, не силен ((
    Готов потратить денег на прошивку, в разумных пределах…
    Или придется собирать франкенштейна – draytek(эти вроде хорошо с йотой работают, но дороги и не кастомизируются как угодно), а за ним dd-wrt+ovpn…
    заказная прошивка выглядит куда оптимальней )
    Насколько ваш вариант успешно перезапускает соединения в случае пропадания-появления ваймакса?

  1. 17 Сентябрь 2010 в 14:36 | #1