6 июня 2017

Прошивка D-Link DIR-300 DD-WRT

Данная инструкция относится к маршрутизатору D-Link DIR-300, не путать с DIR-300NRU. Тем, кто собрался выбросить свой D-Link DIR-300. Не выбрасывайте!!! Из него можно сделать вполне сносный маршрутизатор, прошив его альтернативной прошивкой DD-WRT. Во многих инструкциях в Интернете есть неточности, поэтому мы решили предложить Вам инструкцию по прошивке, собственноручно успешно использованную.

На собственном опыте: проблемы в этой прошивке — не клонирует MAC-адреса (правда я сначала поставил не рекомендуемую версию прошивки, когда повторно прошил через web-интерфейс рекомендуемой, проблема исчезла), при отключении Wi-Fi на маршрутизаторе остальная сеть тоже перестаёт работать. Имейте ввиду, по умолчанию в DD-WRT включен фаервол. Так же может измениться MAC-адрес маршрутизатора.

Внимание! Все действия Вы производите только на свой страх и риск. Администрация сайта не несет ответственности за повреждения Ваших устройств. Полный откат к заводской прошивке будет невозможен. После установки прошивки DD-WRT вы лишаетесь гарантии производителя на свое оборудование.

Подготовка к прошивке:

1. Скачиваем с сайта dd-wrt.com последнюю прошивку для маршрутизатора: кликаем Router Database, в поисковой строчке вводим DIR-300, качаем файлы рекомендованной версии прошивки. При выборе прошивки не забываем глянуть на задней стороне роутера его ревизию (A1 или B1).

2. Скачиваем TFTP-Сервер. Например tftp32.

3. Так же для данной операции нам необходим telnet-клиент. Пользовался Putty 0.60(версия не принципиальна).

Последовательность действий:

шаг 1. Устанавливаем TFTP-сервер.

шаг 2. Файлы прошивки кидаем в папку установленного TFTP-сервера. Нам необходимы файлы ap61.rom, ap61.ram, linux.bin, файл dir300-firmware.bin используется для перепрошивки роутера через web-интерфейс в случае уже установленной DD-WRT.

шаг 3. Подключаем маршрутизатор DIR-300 к компьютеру, но не через LAN а через WAN-порт (он помечен как Internet). Отключаем питание маршрутизатора (если оно было подключено).

шаг 4. Установливаем ip-адрес компьютера: 192.168.20.82, маска: 255.255.255.0, шлюз: 192.168.20.81.

Примечание: в зависимости от версии устанавливаемой прошивки, в некоторых случаях ip-адрес компьютера необходимо установить 192.168.20.80 , маска: 255.255.255.0, шлюз: 192.168.20.81, уточнить можно кликнув файл dir-300_flashing.txt(находится там где качали прошивку).

шаг 5. Теперь нам надо войти в режим аварийного восстановления прошивки. Для этого нажимаем и удерживаем кнопку RESET (на задней панели маршрутизатора). Не отпуская ее, подключаем питание. Ждем 30 секунд с момента включения маршрутизатора и отпускаем RESET.

шаг 6. Запускаем TFTP-сервер. Запускаем телнет-клиент и подключаемся к 192.168.20.81 на порт 9000 по telnet(кнопочка ниже строчки с адресом). При измении протокола сбрасывается значение порта, перепроверьте после клика на telnet. Если всё сделали правильно, то в окне появится приветствие командной строки сервисного режима модема – надпись RedBoot> («возможно с первого раза и не получится — сервисный режим ждет подключения в течение всего 1 секунды примерно через 5 секунд после начала загрузки маршрутизатора, если ее нет – то в одном из шагов допушена ошибка» — подозреваю, что эта строчка лишняя в инструкции и относится она к другой модели, например к DIR-400, при его прошивке вход в RedBoot осуществляется немного иначе).

Далее просьба не торопиться, выполнение команд требует времени. <Enter> — это означает, что необходимо нажать клавишу Enter на клавиатуре.

шаг 7. Загружаем в маршрутизатор временный загрузчик следующей командой: RedBoot> load ap61.ram <Enter>

Ответ на эту команду должен быть таким:

Using default protocol (TFTP)

Entry point: 0x800410bc, address range: 0x80041000-0x800680d8

Следующая команда:

RedBoot> go <Enter>

Если телнет-соединение вдруг прервется – это нормально. Главное – не перезагружать маршрутизатор и не отключать его питание.

шаг 8. Переключаем сетевой кабель из разъёма WAN в разъём LAN1 маршрутизатора.

шаг 9. Теперь меняем ip-адрес компьютера на 192.168.1.2, маска: 255.255.255.0, шлюз: 192.168.1.1.

шаг 10. Подключаемся телнетом к 192.168.1.1 на порт 9000.

Если соединение установилось – вводим (именно вводим, а не копиуем) следующие команды:

DD-WRT> fconfig -i <Enter>

Initialize non-volatile configuration – continue (y/n)? y <Enter>

Run script at boot: false <Enter>

Use BOOTP for network configuration: true <Enter>

Default server IP address: <Enter>

Console baud rate: 9600 <Enter>

GDB connection port: 9000 <Enter>

Force console for special debug messages: false <Enter>

Network debug at boot time: false <Enter>

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fis init <Enter>

About to initialize [format] FLASH image system – continue (y/n)? y <Enter>

Initialize FLASH Image System

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x807f0000-0x80800000 at 0xbffe0000: .

DD-WRT> ip_address -h 192.168.1.2 <Enter>

IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0

Default server: 192.168.1.2

DD-WRT> load -r -b %{FREEMEMLO} ap61.rom <Enter>

Using default protocol (TFTP)

Raw file loaded 0x80080000-0x800a8717, assumed entry at 0x80080000

DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot <Enter>

(здесть ключ -l означает первую букву слова «linux»)

An image named ‘RedBoot’ exists – continue (y/n)? y <Enter>

… Erase from 0xbfc00000-0xbfc30000: …

… Program from 0x80080000-0x800a8718 at 0xbfc00000: …

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x807f0000-0x80800000 at 0xbffe0000: .

DD-WRT> reset <Enter>

После последней команды маршрутизатор уйдет в перезагрузку.

шаг 11. Снова подключаемся телнетом к адресу 192.168.1.1 и порту 9000 после перезапуска маршрутизатора. При этом главное – не отключать сетевой кабель и кабель питания.

шаг 12. Вводим следующие комманды:

DD-WRT> ip_address -h 192.168.1.2 <Enter>

IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0

Default server: 192.168.1.2

DD-WRT> fis init <Enter>

About to initialize [format] FLASH image system – continue (y/n)? y <Enter>

Initialize FLASH Image System

… Erase from 0xbfc30000-0xbffe0000: …………………………………………………..

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> load -r -b 0x80041000 linux.bin <Enter>

Using default protocol (TFTP)

Raw file loaded 0x80041000-0x803cffff, assumed entry at 0x80041000

DD-WRT> fis create linux <Enter>

… Erase from 0xbfc30000-0xbffbf000: …………………………………………………

… Program from 0x80041000-0x803d0000 at 0xbfc30000:…………………………………………………

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig boot_script true <Enter>

boot_script: Setting to true

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig boot_script_timeout 4 <Enter>

boot_script_timeout: Setting to 4 <Enter>

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp false <Enter>

bootp: Setting to false

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig <Enter>

Run script at boot: true

Boot script:

.. fis load -l vmlinux.bin.l7

.. exec

Enter script, terminate with empty line

fis load -l linux <Enter>

exec <Enter>

<Enter> !!! в этом месте нажимаем ENTER на пустой строке !!!

Boot script timeout (1000ms resolution): 4 <Enter>

Use BOOTP for network configuration: false <Enter>

Default server IP address: <Enter>

Console baud rate: 9600 <Enter>

GDB connection port: 9000 <Enter>

Force console for special debug messages: false <Enter>

Network debug at boot time: false <Enter>

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp_my_ip 192.168.1.1 <Enter>

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp_my_ip_mask 255.255.255.0 <Enter>

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> fconfig bootp_my_gateway_ip 0.0.0.0 <Enter>

Update RedBoot non-volatile configuration – continue (y/n)? y <Enter>

… Erase from 0xbffe0000-0xbfff0000: .

… Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT> reset <Enter>

Маршрутизатор снова уйдет на перезагрузку. Она можем длится от 1 до 5 минут и сопровождаться морганием индикаторов.

шаг 13. Подключайтесь к веб-интерфейсу на 192.168.1.1.

Login: root

Password: admin

Теперь остается только настроить маршрутизатор.

ДО

ПОСЛЕ

З.Ы. В настройках фаервола, если не хотите его отключать, необходимо убрать галочку на фильтрации мультикастовых потоков, чтобы работало IP-TV. В прошивке можно изменить язык, кому на английском неудобно. С тех пор как прошил этой прошивкой забыл про то, что маршрутизатор у меня вообще есть, проблемы вроде потерь пакетов, зависания, частого переподключения ICQ и прочие отсутствуют. Пробовал прошивать DIR-400, попытка была неудачной, работало некорректно(даже рассказывать не хочется), пришлось вернуть на заводскую, хотя даже заводская последняя недоделанная, не работает Port Forvarding, оставил последнюю стабильную(не бета-версию), DIR-400 прошивается через веб интерфейс только в IE и только с очищенным кэшем.

Перейти в раздел Wiki