|
Отправлено: 5 октября 2012 — 00:24
|
технарь
Профессионал
Сообщений: 1825
Регистрация: 12.2011
|
В данной статье будем рассматривать, как перепрошить роутер 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, с помощью которого прошивка точки доступа значительно упрощается, но об этом позже... |
|
|
|
Отправлено: 25 октября 2012 — 21:31
|
технарь
Профессионал
Сообщений: 1825
Регистрация: 12.2011
|
Интерфейс программы 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.
В следующий раз будем применять полученные знания и прошиваться... |
|
|
|
Отправлено: 26 октября 2012 — 11:18
|
технарь
Профессионал
Сообщений: 1825
Регистрация: 12.2011
|
Подготавливаем компьютер для прошивки.
То, что я ниже буду советовать не является строго обязательным к исполнению и если вы хорошо понимаете о чем пойдет речь, можете эти рекомендации не выполнять или выполнять частично. Однако выполнение этих рекомендаций поможет избежать некоторых подводных камней.
Первый этап подготовки сводится к отключению на компьютере всех сетевых интерфейсов кроме "Подключения по локальной сети". Сделать это рекомендуется для того, что бы избежать возможных конфликтов по IP адресам. Для примера у меня беспроводная сеть мешала бы дальнейшей работе, т.к. там выставлен фиксированный IP адрес в первой подсети. Что бы сделать отключения нужно попасть в "Сетевые подключения" и щёлкнув правой кнопкой на требующем отключения интерфейсе выбрать команду "Отключить".
Следующее, что желательно сделать это отключить файрвол и антивирус. Последний можно вероятно и не отключать (это уж я так на всякий случай), а вот файрвол отключить желательно, дабы исключить ситуацию блокирования трафика между компом и прошиваемой железкой.
Ну и последнее, что желательно сделать - присвоить сетевой карте сразу два статических IP адреса. Можно и этого не делать, а просто менять адреса по мере необходимости, но то что я предлагаю просто удобнее. Нам нужно присвоить сетевушке не просто любые адреса в нужных подсетях а строго конкретные адреса:
192.168.1.2 и 192.168.20.80
|
|
|
|
Отправлено: 26 октября 2012 — 14:42
|
технарь
Профессионал
Сообщений: 1825
Регистрация: 12.2011
|
Прошиваем 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 и если успешно, то я вас поздравляю. При входе вас попросят создать новый пароль. Вот вроде и всё. Успешной прошивки!!! |
|
|
|