I live ExBB and CMS Limbo! » Разное » Сделай сам » Зашиваем в D-Link DIR-300 прошивку DD-WRT

Страниц (3): [1] 2 3 »
 

1. технарь - 5 октября 2012 — 00:24 - перейти к сообщению
В данной статье будем рассматривать, как перепрошить роутер D-Link DIR-300 прошивкой от DD-WRT...

Что такое DD-WRT можно почитать здесь.
Тема эта не оригинальная, разрозненной информации в интернете найти можно довольно много. Однако я столкнулся с тем, что попытка применить найденную информацию далеко не сразу привела к успеху. В ходе прошивки постоянно вылазили ошибки, природу которых я, будучи мало знакомым с работой в консоли, с ходу определить был не в состоянии. Покопавшись в интернете ещё какое-то время я выяснил, что всему виной банальные опечатки в найденных мною мануалах, но времени и нервов уже было потрачено изрядно. Вот потому я и решил свести все найденное в один стопроцентно рабочий мануал, дабы и себе проще было и глядишь ещё кому сгодится.

Где брать прошивку?
Где, где - конечно в интернете. Улыбка
Но для этого нужно знать номер ревизии нашего устройства. Переворачиваем роутер и ищем на этикетке что-то типа H/W Ver.



В данном случае ревизия A1.

Затем переходим на сайт http://www.dd-wrt.com
Там активируем вкладку DOWNLOADS и в строке поиска вводим DIR-300



Из предложенного списка выбираем нужную нам ревизию. В итоге имеем вот такое окно...



Создадим на диске папку, и в созданную папку скачиваем три файла - ap61.ram, ap61.rom и linux.bin В эту же папку нужно добавить комплект инструментов, представляющих из себя telnet-клиент (PuTTY) и tftp-сервер (TFTP) и ещё два вспомогательных файла (redboot.bat и redboot.txt).

Однако можно поступить проще - скачать заранее заготовленный мной комплект.
В этом комплекте лежит оригинальная прошивка (на случай отката), прошивка DD-WRT версии v24-sp2_r13064. А ещё там находится созданный мной файлик DIR300.exe, с помощью которого прошивка точки доступа значительно упрощается, но об этом позже...
2. технарь - 25 октября 2012 — 21:31 - перейти к сообщению
Интерфейс программы DIR300

Итак, скачиваем архив и запускаем DIR300.exe



В самом верху окна программы расположен инструмент для пингования.



Дело в том, что для прошивки точки доступа необходимо будет подключаться телнетом через порт 9000 по адресу 192.168.1.1 (гнездо LAN) или по адресу 192.168.20.81 (гнездо WAN). Причем делать это в большинстве случаев нужно в строго определённое время - сразу после установки соединения после включения питания. Можно пробовать этот момент ловить вручную, можно использовать командный файл примерно такого содержания:
code:
:start
ping 192.168.20.81 -n 2 -w 1
IF ERRORLEVEL 1 goto start
break
putty.exe telnet://192.168.20.81:9000
exit

Однако мы будем пользоваться встроенной в программу пинговалкой. Почему? Да потому, что так удобнее. После обнаружения ответа от роутера автоматически будет запущен телнет клиент и установлено соединение, а так же будет запущен tftp сервер, который необходим для дальнейшей прошивки.

Если дальше рассматривать интерфейс программы, то можно увидеть две вкладки.



Как можно было догадаться из названий первая вкладка нужна, когда шьемся в DD-WRD а вторая - если необходимо сделать откат. Вкладка для отката отличается наличием дополнительного функционала, но об этом чуть позже.

На самой вкладке первое поле содержит список команд и процедур, которые будет необходимо выполнить. Ведь что такое прошивка? Это установка соединения через телнет клиента и набор в этом клиенте определенных команд. Если пользоваться выложенными в интернете мануалами, то обычно процедура набора этих команд сводится к банальному "копипасту" - т.е. команда копируется из мануала через буфер обмена в область ввода телнет клиента и там выполняется. Но проблема данного метода заключается в том, что мануал - это всё-таки текст, в котором могут быть опечатки (очень часто вкрапливаются лишние пробелы или символ в русской кодировке). Для человека знающего линукс, или просто часто сталкивающегося с терминальными программами, это не станет проблемой. А вот для всех остальных символ, набранный в русской кодировке может стать непреодолимой проблемой - команду вроде копируют правильно, а клиент ругается и не хочет её исполнять. Именно с этой целью и было создано поле со списком команд.

Функция этого поля состоит в следующем. Когда пользователь мышкой тыкает в нужный пункт и этот пункт содержит команду для телнет клиента (обычно в начале таких команд стоит либо DD-WRT>, либо RedBoot>, либо просто >> ) - программа автоматом подсовывает в буфер нужную для вставки информацию. Остается только эту информацию в клиент вставить и выполнить. Кстати, в качестве клиента я использую putty.exe и там несколько необычный способ копирования в буфер и вставки текста. Для вставки нужно просто щёлкнуть правой кнопкой мыши, а для копирования просто выделить нужный участок текста (никаких Ctrl+C и Ctrl+V нажимать не нужно).

Есть на вкладке ещё одно поле - информационное.



Его назначение - показывать вероятный ответ на выполнение команды или же в этом поле можно просто увидеть какие-либо подсказки.

На вкладке, предназначенной для отката к оригинальной прошивке есть ещё специальный функционал. Там два поля для ввода данных и неактивная кнопка "Создать".



Всё это нужно для генерации файла shadowandy_board_config.bin без которого корректный откат к оригинальной прошивке невозможен. Данные для заполнения этих полей ищите на обороте устройства. Кнопка станет активной после корретного заполнения всех полей.

К слову говоря, когда я разбирался, как включить этот функционал в программу и анализировал содержимое shadowandy_board_config.bin то обнаружил, что в нем прописаны помимо MAC ID и PIN так же и несколько других параметров (flashspeed=1289 hwrev=A1 countrycode=826). Эти параметры неизменны, хотя параметр hwrev=A1 вероятно можно было бы сделать изменяемым, ведь как я понимаю это и есть номер ревизии устройства. Короче, если кому понадобится его менять - можно будет доделать функционал.

Вот собственно и всё, что хотел пояснить по способу применения программы DIR300.
В следующий раз будем применять полученные знания и прошиваться...
3. технарь - 26 октября 2012 — 11:18 - перейти к сообщению
Подготавливаем компьютер для прошивки.

То, что я ниже буду советовать не является строго обязательным к исполнению и если вы хорошо понимаете о чем пойдет речь, можете эти рекомендации не выполнять или выполнять частично. Однако выполнение этих рекомендаций поможет избежать некоторых подводных камней.

Первый этап подготовки сводится к отключению на компьютере всех сетевых интерфейсов кроме "Подключения по локальной сети". Сделать это рекомендуется для того, что бы избежать возможных конфликтов по IP адресам. Для примера у меня беспроводная сеть мешала бы дальнейшей работе, т.к. там выставлен фиксированный IP адрес в первой подсети. Что бы сделать отключения нужно попасть в "Сетевые подключения" и щёлкнув правой кнопкой на требующем отключения интерфейсе выбрать команду "Отключить".

Спойлер (Показать)

Следующее, что желательно сделать это отключить файрвол и антивирус. Последний можно вероятно и не отключать (это уж я так на всякий случай), а вот файрвол отключить желательно, дабы исключить ситуацию блокирования трафика между компом и прошиваемой железкой.

Ну и последнее, что желательно сделать - присвоить сетевой карте сразу два статических IP адреса. Можно и этого не делать, а просто менять адреса по мере необходимости, но то что я предлагаю просто удобнее. Нам нужно присвоить сетевушке не просто любые адреса в нужных подсетях а строго конкретные адреса:
192.168.1.2 и 192.168.20.80

Спойлер (Показать)
4. технарь - 26 октября 2012 — 14:42 - перейти к сообщению
Прошиваем DD-WRT

Советую прочитать хоть один раз до конца не выполняя никаких действий!!!

1. Отключаем лишние сетевые интерфейсы
2. Отключаем файрвол и по желанию антивирус
3. Присваиваем сетевушке два IP - 192.168.1.2 и 192.168.20.80
4. Подключаем правильно обжатый сетевой кабель одним концом в сетевую карту компьютера, а другим концом в WAN порт роутера (там написано Internet).
5. Запускаем файл DIR300.exe и подготавливаем "пинговалку" для коннекта по 192.168.20.81

Дальше пойдет работа с командами телнет клиенту. Можно конечно эти команды дергать из этой статьи (синтаксис команд проверен - они сто процентов рабочие), но всё же лучше эти команды получать из программки DIR300 а то иначе зачем я её писал. Улыбка

6. Устанавливаем соединение в гнезде WAN по адресу 192.168.20.81

Тут нужно кое что пояснить. От нас требуется суметь приконектиться телнетом к загрузчику. В качестве загрузчика во встраиваимых системах применяют так называемый RedBoot. Вся хитрость заключается в том, что RedBoot открывает порт 9000 для подключения по телнету только после перезапуска и буквально на пару секунд, а иногда и вообще не открывает. Другими словами процедура подключения может потребовать повторять передергивание питания и попытки подключения по несколько раз. Я делаю так. Подаю питание на DIR-300 и жду, когда роутер моргнет всеми лампочками и сразу после этого запускаю пинговалку (нажимаю кнопку "Ping" ). Если устройство откликнется на пинг, то тут же запустится телнет клиент и попробует установить соединение. Признаком, что соединение установлено является наличие в поле телнета так называемого приглашения - строки "RedBoot>". Если этой строки нет, значить установить соединение не удалось и нужно процедуру повторить (предварительно закрыв телнет клиент и tftp сервер).

7. Устанавливаем временный загрузчик:
code:
RedBoot> load ap61.ram
RedBoot> go


Для перехода к следующему этапу снова требуется пояснение. После выполнения последней команды телнет соединение прервется и скорее всего закроется телнет клиент. Это нормально. Следующим этапом нам нужно будет переткнуть кабель в гнездо LAN и там конектится по IP 192.168.1.1 Я делаю это через пинговалку, но главное что нужно иметь ввиду это то, что питание при этом прерывать нельзя. В принципе, если на этом этапе питание прервется железку мы не убьем, но всю процедуру придется начинать с самого начала. Но продолжим...

8. Переключаемся в гнездо LAN и конектимся на адрес 192.168.1.1

В результате мы должны получить в телнет клиенте приглашение DD-WRT>
Хочу сразу предупредить, что при дальнейшей прошивке нам будут встречаться команды (fis create например) которые выполняются довольно долго и может возникнуть ощущение, что роутер завис. Самое главное не паникуйте - просто ждите...


9. Установка нового постоянного загрузчика:
code:
DD-WRT> fconfig -i
DD-WRT> fis init
DD-WRT> ip_address -h 192.168.1.2
DD-WRT> load -r -b %{FREEMEMLO} ap61.rom
DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
DD-WRT> reset


После ввода последней команды точка доступа уйдет на перезагрузку и сессия снова прервется. Не страшно - мы уже знаем как подключаться. Главное не забываем, что питание отключать нельзя! Если по каким-то причинам пинговалка не срабатывает - не нервничайте. Попробуйте попинговать роутер через Пуск/Выполнить командой ping 192.168.1.1

10. Остаемся в гнезде LAN и снова конектимся на адрес 192.168.1.1
11. Загружаем новую прошивку
code:
DD-WRT> ip_address -h 192.168.1.2
DD-WRT> fis init
DD-WRT> load -r -b 0x80041000 linux.bin
DD-WRT> fis create linux
DD-WRT> fconfig boot_script true
DD-WRT> fconfig boot_script_timeout 3
DD-WRT> fconfig bootp false
DD-WRT> fconfig
>> fis load -l linux
>> exec
>>
DD-WRT> ip_address -h 192.168.1.1
DD-WRT> reset

Финальная перезагрузка занимает много времени (иногда до 5 минут). Самое главное не дергаемся и терпеливо ждем... Сигналом, что прошивка завершена можно считать загоревшийся индикатор беспроводной сети. Просто пробуем зайти браузером на http://192.168.1.1 и если успешно, то я вас поздравляю. При входе вас попросят создать новый пароль. Вот вроде и всё. Успешной прошивки!!! Радость
5. технарь - 29 октября 2012 — 00:44 - перейти к сообщению
Записал видео, поясняющее всю процедуру прошивки...

Спойлер (Показать)


Завтра запишу процедуру отката и на этом можно считать тему закрытой.
6. технарь - 29 октября 2012 — 15:37 - перейти к сообщению
Возвращаем на DIR-300 оригинальную прошивку.

Снова советую сначала прочитать не выполняя никаких действий!!!

1. Отключаем лишние сетевые интерфейсы
2. Отключаем файрвол и по желанию антивирус
3. Присваиваем сетевушке три IP - 192.168.0.2 и 192.168.1.2 и наконец 192.168.20.80
4. Соединяем сетевую карту компьютера с LAN портом роутера.
5. Запускаем файл DIR300.exe и подготавливаем "пинговалку" для коннекта по 192.168.1.1
6. Прописываем MAC ID и PIN и жмем кнопку "Создать"
7. Устанавливаем соединение по адресу 192.168.1.1

Другими словами нам снова нужно поймать загрузчик. Как это делать я писал в статье чуть выше. Результатом наших усилий должен стать запуск телнет клиента с приглашением DD-WRT>

8. Восстанавливаем оригинальный RedBoot.
code:
DD-WRT> ip_address -h 192.168.1.2
DD-WRT> fis init
DD-WRT> load -r -b %{FREEMEMLO} dir300redboot.rom
DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
DD-WRT> reset


Роутер перезагрузится... Дальнейшие действия будут заключаться в том, что нам нужно будет переключить кабель в порт WAN и подготовиться ловить загрузчик по IP 192.168.20.81 (ввести этот адрес в "пинговалку" ).
Не забываем, что загрузчик можно перехватить только после включения питания, а потому передергиваем питание и пытаемся зацепиться за RedBoot.


9. Устанавливаем соединение в гнезде WAN по адресу 192.168.20.81

Мы должны добиться в окне телнет клиента приглашения RedBoot>

10. Восстанавливаем board config
code:
RedBoot> load -r -b %{FREEMEMLO} shadowandy_board_config.bin
RedBoot> fwrite -f 0xbfff0000 -b 0x80036400 -l 0x10000 -e 0x80036400
RedBoot> reset


Роутер уйдет на перезагрузку. После того, как перезагрузка завершится заходим браузером по адресу http://192.168.20.81 и через веб-интерфейс загружаем оригинальную прошивку (в моей сборке это файл DIR-300A1_FW105b09.bin) Для захода желательно использовать IExplorer. Если зайти не удаётся - пробуем передернуть питание или жмем ресет.

11. Устанавливаем соединение в гнезде WAN по адресу 192.168.20.81
12. Выполняем следующие команды
code:
RedBoot> fconfig img_entry_addr 0x80040000
RedBoot> fconfig img_flash_addr 0xbfc20000
RedBoot> fconfig img_length 0x003c0000
RedBoot> reset


Вот собственно и всё. Подключаемся в гнездо LAN и пробуем зайти на дефолтный адрес http://192.168.0.1
Может так случиться, что роутер молчит как партизан. Тогда пробуем дополнительно сбросить железку при помощи ресета - мне помогло.

И конечно не забываем после всего вернуть настройки компьютера как были до перепрошивки, а то забудете антивирь включить, а я виноват. Не понял Радость
7. технарь - 30 октября 2012 — 16:10 - перейти к сообщению
Записал видео отката к заводским настройкам.

Спойлер (Показать)


Вот и всё, что я хотел сказать по этому вопросу...
8. технарь - 30 октября 2012 — 23:55 - перейти к сообщению
Сегодня впервые воспользовался плодами прошивки DD-WRT
Впечатления только положительные.
Во первых субъективно интернет по WiFi стал ощутимо быстрее.
Ну и порадовала возможность переключить гнездо WAN в режим обычного маршрутизатора.
9. Гость - 19 января 2013 — 17:42 - перейти к сообщению
Добрый день!
У меня после выполнения
DD-WRT> fconfig -i
DD-WRT> fis init
DD-WRT> ip_address -h 192.168.1.2
DD-WRT> load -r -b %{FREEMEMLO} ap61.rom
DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
DD-WRT> reset

роутер перестал отвечать на любые запросы.
ни по адресу 192.168.1.1, 192.168.20.80.
пинг не проходит, TelNet не открывается. Проблемы Проблемы Проблемы Меланхолия Меланхолия Меланхолия
Что делать, не знаю.
Help, пожалуйста.
10. Гость - 20 января 2013 — 17:39 - перейти к сообщению
Восстановил родную прошивку.
Теперь никак не пингуется 192.168.20.81
и не запускается telnet и RedBoot.
Из командной строки тоже не пингуется.

Powered by ExBB v1.1.180311