Прошивка DIR-320

From DD-WRT Wiki

Jump to: navigation, search

Contents

[edit] Прошивка DD-WRT в DIR-320

[edit] Рекомендации по выбору прошивки

В DIR-320 установлено 4 мегабайта флэш-памяти, поэтому прошивка должна быть не более указанного размера. Можно использовать версию standard, однако в этом случае в файловой системе jffs не остается места для пользовательских файлов. Предпочтительнее пользоваться прошивками от Eko - их можно найти в папке others/eko/V24_TNG/svnNNNNN (выбираем папку с самым большим номером). Для поддержки USB можно выбрать версию NEWD_mini_usb_ftp или NEWD_mini_usb.

Если вам требуется большая функциональность, чем предусмотренная в версиях mini или standard, воспользуйтесь методом, описанным на странице Установка DD-WRT mega на маршрутизаторы с объемом флэш-памяти 4 МБ.

[edit] Подготовка к прошивке

Если на вашем маршрутизаторе уже прошита DD-WRT, то новую версию данной прошивки можно загрузить в него с помощью веб-интерфейса. Если же в маршрутизаторе фирменная прошивка D-Link, то из-за различия форматов файлов с прошивками DD-WRT можно загрузить только с помощью протокола TFTP. Процедура загрузки подробно описывается далее.

Создайте на вашем диске C: папку (например, C:\dd-wrt). Скачайте в эту папку файл прошивки и переименуйте его в firmware.bin.

Установите IP-адрес сетевого интерфейса вашего компьютера 192.168.0.10 и маску 255.255.255.0. Соедините сетевой разъем вашего компьютера с портом LAN1 DIR-320. Питание маршрутизатора пока не включайте.

[edit] Прошивка вручную

Прежде, чем использовать TFTP, стоит попробовать залить DD-WRT через crash mode (времени потрачено будет меньше). Если возникнут проблемы, тогда переходим к прошивке через TFTP.

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

Важно: Вероятно DIR-320 со свежими прошивками D-Link не запускают TFTP сервер совсем и поймать нужный момент времени невозможно. В этом случае, чтобы загрузить свою прошивку с первого раза придется сделать полный сброс DIR-320: выключаем питание, нажимаем и держим кнопку Reset, включаем питание, ждем 15 сек., отпускаем кнопку Reset. После этой процедуры роутер должен откликаться на ping c TTL=100:

Reply from 192.168.0.1: bytes=32 time<1ms TTL=100

В таком состоянии роутер нефункционален, он ожидает загрузки прошивки через веб-интерфейс (только D-Link) или по TFTP. Причем TFTP работает не все время, а только несколько секунд (около 4 сек.) после включения питания. Это немного, но достаточно чтобы залить прошивку с первого раза. Выключаем DIR-320.

Запустите на вашем компьютере командную строку, перейдите в папку dd-wrt на диске C:\ и наберите приведенную ниже команду, но не нажимайте пока клавишу <Enter>. На экране должно быть примерно следующее:

Microsoft Windows XP [Version 5.1.2600]
 
Copyright 1985-2001 Microsoft Corp. 
 
C:\Documents and Settings\someuser> cd c:\dd-wrt 
C:\dd-wrt> tftp -i 192.168.0.1 put firmware.bin

(Набранные вами команды выделены жирным шрифтом.)

Непосредственно перед началом прошивки желательно осуществить сброс на заводские настройки (Кнопка Reset, рядом с гнездом питания).

Вы должны нажать клавишу <Enter> для запуска показанной выше команды «tftp -i 192.168.0.1 put firmware.bin» примерно через две секунды после включения питания DIR-320 (т.е. когда загорится индикатор соединения по Ethernet). Если прошивка будет принята маршрутизатором, индикатор LED1 на нем будет быстро моргать и команда успешно завершится менее чем через полминуты. На экране появится сообщение об успешном завершении команды:

Успешная передача: 3092480 байт за 11 сs, 281134 байт/с

Если же вы поспешите или опоздаете нажать клавишу <Enter>, команда через некоторое время выдаст сообщение о неуспешном завершении. В этом случае просто повторите описанный выше процесс: выключите питание маршрутизатора и буквально через секунду снова включите его, перед этим снова подготовив команду tftp для передачи в него прошивки.

Имейте в виду, что процесс прошивки продолжается несколько минут после завершения команды пересылки файла, поэтому не выключайте питание маршрутизатора и не нажимайте Reset немедленно после завершения этой команды. Дайте маршрутизатору 10 минут времени для завершения процесса прошивки. За это время выпейте чашечку кофе и получите удовольствие – и только после этого переходите к следующему пункту. Если в списке беспроводных сетей появился новый SSID «dd-wrt» - значит, процесс прошивки успешно завершился.

Чтобы не ловить момент, в который нужно выдать команду загрузки, вручную, воспользуйтесь способом, описанным в следующем разделе.

Внимание: В последних версиях роутера, если tftp выдается сообщение <Error 3>: Operation cancelled, то попробуйте прошить прошивку меньшего объема. Опытным путем установлено, что dd-wrt VPN прошивка не шьется напрямую из-за своего объема, надо использовать меньшую по объему (mini/micro), а затем из mini или micro прошивки прошить нужную через веб-интерфейс dd-wrt.

[edit] Прошивка с использованием пакетного файла

Записываем файл flashing.cmd в папку C:\dd-wrt, куда мы ранее записали файл с прошивкой. Содержимое этого файла следующее:

@Echo Off 
:BEGIN 
ping -n 1 -w 10 192.168.0.1 
If errorlevel 1 Goto BEGIN 
If errorlevel 0 Goto FLASH 
      Goto END 
:FLASH 
Echo *** Start Flashing **** 
tftp -i 192.168.0.1 put firmware.bin 
:END

Более продвинутая версия пакетного файла с выдачей комментариев на консоль приведена в приложении (см. ниже).

Запускаем командную строку, переходим в папку c:\dd-wrt и запускаем командный файл flashing.cmd.

Включаем питание маршрутизатора.

Наблюдаем процесс прошивки:

C:\dd-wrt>flashing.cmd 
Обмен пакетами с 192.168.0.1 по 32 байт: 
 
Превышен интервал ожидания для запроса. 
 
Статистика Ping для 192.168.0.1: 
   Пакетов: отправлено = 1, получено = 0, потеряно = 1 (100% потерь), 
<<< SKIP >>> <<< SKIP >>> <<< SKIP >>> <<< SKIP >>> 
Обмен пакетами с 192.168.0.1 по 32 байт: 
 
Ответ от 192.168.0.1: число байт=32 время=4мс TTL=100 
 
Статистика Ping для 192.168.0.1: 
    Пакетов: отправлено = 1, получено = 1, потеряно = 0 (0% потерь), 
Приблизительное время приема-передачи в мс: 
    Минимальное = 4мсек, Максимальное = 4 мсек, Среднее = 4 мсек 
*** Start Flashing **** 
Успешная передача: 3092480 байт за 11 сs, 281134 байт/с 
C:\dd-wrt>

После того, как загорится индикатор статуса (~1-2 мин.), можно подключаться к маршрутизатору по адресу 192.168.1.1.

Другой вариант командного файла (первый в моем случае не помог) вызвать с момента включения маршрутизатора с интервалом например в 500мс подряд несколько процессов tftp. Соответственно какой-то из них попадет в момент, когда маршрутизатор "согласен" принять прошивку. Как организовать паузу http://wiki.oszone.net/index.php/Пауза_в_пакетном_файле, я использовал nircmdc.exe (http://www.nirsoft.net/utils/nircmd.zip)

for /l %%a in (1, 1, 10) do (nircmdc.exe wait 500
start cmd.exe /ktftp -i 192.168.0.1 put firmware.bin)

Запустить данный командный файл одновременно с включением маршрутизатора. Откроется 10 консольных окон, и в одном из них пройдет загрузка файла, все остальные отвалятся по таймауту. Если все равно не получается попасть в нужный интервал, то можно дополнительно отключить в windows сброс IP-адреса при отсутствии кабельного подключения (ускорит инициализацию интерфейса). Создать reg-файл следующего содержания:

REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DisableDHCPMediaSense"=dword:00000001

Добавить информацию в реестр, перегрузить компьютер и попробовать снова прошить маршрутизатор.

[edit] Подключение к веб-интерфейсу DD-WRT

После успешной прошивки настройте сетевой интерфейс вашего компьютера на получение IP-адреса от сервера DHCP и введите в адресной строке вашего браузера http://192.168.1.1. По умолчанию имя пользователя и пароль для доступа к веб-интерфейсу – соответственно «root» и «admin» (без кавычек).

Если вы по-прежнему видите веб-интерфейс D-Link, повторите процедуру прошивки.


P.S. Еще один простой и удобный способ поймать момент включения режима прошивки - использовать команду arping (В *nix системах она уже есть), для Windows можно нагуглить или попробовать эту ссылку http://www.ipacct.com/f/arping_for_windows-1.0.zip, как только будет первый ответ - нужно посылать файл на роутер и все прошьется :)

[edit] Восстановление фирменной прошивки

Восстановление фирменной прошивки после DD-WRT опять-таки делается с помощью TFTP.

Скачиваем с http://ftp.dlink.ru прошивку для DIR-320, сохраняем ее на диске C:\dd-wrt и переименовываем в firmware.bin .

Далее делаем следующее:

  1. Сбрасываем маршрутизатор, нажав кнопку Reset и удерживая ее не менее 30 секунд. (Или делаем «сброс 30/30/30».)
  2. Устанавливаем на сетевом интерфейсе компьютера адрес 192.168.0.10 и маску 255.255.255.0, соединяем сетевой разъем компьютера с портом маршрутизатора LAN1, питание маршрутизатора пока не включаем.
  3. Загружаем в маршрутизатор заводскую прошивку по протоколу TFTP на адрес 192.168.0.1. Действия для запуска пересылки по TFTP такие же, как и при загрузке DD-WRT (см. выше разделы "Прошивка вручную" и "Прошивка с помощью пакетного файла", рекомендуется последний способ как более простой).
  4. После десятиминутной паузы набираем в адресной строке браузера http://192.168.0.1 и попадаем в сервер аварийного восстановления. Выбираем опять-таки скачанный нами файл с прошивкой D-Link и нажимаем Update.
  5. Снова ждем 10 минут, после чего опять заходим браузером на адрес http://192.168.0.1 и проверяем, установилась ли фирменная прошивка (имя пользователя по умолчанию – admin, пароль пустой). Если зайти не удается – выполняем аппаратный сброс кнопкой Reset (держать 30 секунд) и устанавливаем в свойствах сетевого интерфейса компьютера автоматическое получение IP-адреса.

[edit] Форс-мажор

Если прошивка не удалась или по ошибке залили чужую прошивку и маршрутизатор стал свичем, то можно сделать следующее: При нажатой кнопке Reset включить питание и удерживать кнопку в течении 15 секунд. После этого зайти на 192.168.0.1 через web-интерфейс. Будет доступна консоль восстановления. Следуя инструкции прошить фирменную прошивку (http://ftp.dlink.ru/pub/Router/DIR-320/Firmware/).



[edit] Приложения

[edit] Приложение 1. Расширенная версия файла flashing.cmd

Расширенная версия пакетного файла flashing.cmd с выдачей комментариев на консоль:

@echo off 
echo ==================================================================
echo This batch file will upload dd-wrt firmware in the current directory to 
echo 192.168.0.1 during the router's bootup. 
echo. 
echo * Set your ethernet card's settings to: 
echo      IP:      192.168.0.2 
echo      Mask:    255.255.255.0 
echo      Gateway: 192.168.0.1 
echo * Unplug the router's power cable. 
echo. 
echo Press Ctrl+C to abort or any other key to continue... 
pause > nul 
echo. 
echo * Re-plug the router's power cable. 
echo. 
echo ==================================================================
echo Waiting for the router... Press Ctrl+C to abort. 
echo. 
set FIND=%WINDIR%\command\find.exe 
if exist %FIND% goto PING 
set FIND=%WINDIR%\system32\find.exe 
if exist %FIND% goto PING 
set FIND=find 
:PING 
ping -n 1 -w 50 192.168.0.1 | %FIND% "TTL=" 
if errorlevel 1 goto PING 
echo *** Start Flashing **** 
tftp -i 192.168.0.1 put firmware.bin 
if errorlevel 1 goto PING 
set FIND= 
echo. 
echo ==================================================================
echo * WAIT for about 2 minutes while the firmware is being flashed. 
echo * Reset your ethernet card's settings back to DHCP. 
echo * The default router address will be at 192.168.1.1 
echo. 
pause 



[edit] Приложение 2. Bash-скрипт, аналогичный пакетному файлу flashing.cmd

Bash-скрипт, аналогичный расширенной версии пакетного файла flashing.cmd.

#!/bin/bash
echo "=================================================================="
echo "This script will upload dd-wrt firmware (firmware.bin)"
echo "in the current directory to 192.168.0.1 "
echo "during the router's bootup. "
echo ""
echo "* Set your ethernet card's settings to: "
echo "     IP:      192.168.0.10 "
echo "     Mask:    255.255.255.0 "
echo "     Gateway: 192.168.0.1 "
echo "* Unplug the router's power cable. "
echo ""
echo "Press Ctrl+C to abort or any other key to continue... " 

read

echo ""
echo "* Re-plug the router's power cable. "
echo "" 
echo "=================================================================="
echo "Waiting for the router... Press Ctrl+C to abort. "
echo ""


try(){ 
ping -c 1 -w 1 192.168.0.1 
} 
try 
while [ "$?" != "0" ] ; 
do 
try 
done 
echo "*** Start Flashing **** " 
atftp --no-source-port-checking -p -l firmware.bin 192.168.0.1 
echo "Firmware successfully loaded!" 

[edit] Приложение 3. sh-скрипт для FreeBSD, аналогичный пакетному файлу flashing.cmd

sh-скрипт для FreeBSD.

#!/bin/sh
echo "Power on DIR-320.";
ping -Qqo 192.168.0.1 1>/dev/null 2>/dev/null;
echo "Start Flashing.";
cat <<EOF | tftp;
mode binary
rexmt 1
connect 192.168.0.1
put firmware.bin
EOF

Источники:

  1. http://www.shadowandy.net/2008/06/flashing-guide-for-dir-320.htm
  2. http://www.dd-wrt.com/phpBB2/viewtopic.php?t=43099
  3. http://www.dd-wrt.com/phpBB2/viewtopic.php?t=43229
  4. http://www.dd-wrt.com/phpBB2/viewtopic.php?p=216809#216809