Учимся правильно прошивать D-Link

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

Не смотря на то, что в этой статья мы будем рассматривать прошивку, любимого мною, d-Link DIR-32, информация изложенная тут применима ко многим d-Link устройствам. Единственное чем вам следует озаботиться в начале пути, поддерживает ли ваше устройство ту прошивку которую вы собираетесь в него залить. Если речь идет об альтернативной прошивке dd-wrt, то проверить совместимость можно тут: http://www.dd-wrt.com/site/support/router-database

Кратко о причинах, которые могут побудить вас поменять прошивку:

  • Желание улучшить стабильность работы;
  • Желание улучшить безопасность работы вашего D-Link;
  • Желание расширить функциональность вашего роутера, добавив возможности:
    • файлового сервера;
    • моста между 3G операторами и вашей сетью;
    • etc.

Чаще всего прошивку меняют у бюджетного роутера оснащенного USB-портом, а именно DIR-320, на примере которого мы и рассмотрим смену прошивки.

Прежде чем вы приступите к прошивке, необходимо подготовиться. Вам понадобиться:

  • работающий D-Link, например DIR-320;
  • PC, желательно с удобной для вас версией Linux (в моем случае это будет ubuntu, на базе которой будут выполнены все примеры);
  • установленная утилита tftp;
  • файл новой прошивки, который вы переименуете (обязательно!!!) в firmware.bin;
  • патчкорд;
  • зубочистка или шпажка с обломанным острием 😉 ;

Теперь немного теории. Важной теории:

  • Большенство роутеров D-Link идут со встроенным tftp сервером, который включается сразу после подачи питания к устройсту. И работает всего одну секунду после. По некоторым источникам – 2 сек, но мой опыт говорит о том, что это все-таки всего одна секунда. В этот момент вашему tftp клиенту необходимо приконнектиться к роутеру и начать передачу новой прошивки (firmware.bin), если вы опаздаете – все надо будет начинать сначала.
  • Независимо от того, какой ip-адрес был прописан у роутера к моменту его прошивки в первую секунду, именно тогда когда работает его tftp сервер, его ip всегда будет равен: 192.168.0.1 !!!

Внимательно прочитайте эти два правила, особенно если вы попали на эту страницу не случайно? а уже после прочтения множества мануалов, форумов и бессоных попыток прошить свой D-Link. Особенно внимательно отнеситесь ко второму правилу, если вы не поняли его смысла читайте еще и еще раз, до тех пор, пока вы не осознаете все важности этой простой фразы 😉 .

Итак, у нас все готово и мы вооружины знаниями. Приступаем к прошивке:

  1. В перую очередь мы должны соеденить наш роутер с рабочей станцией или ноутбуком с помощью пачкорда. Ни каких WiFi!!! Только Ethernet!
  2. Если вы используете ubuntu, то после установления соединения с роутером вам необходимо зайти в [System] -> [Preferences] -> [Network Connection] и прописать руками статический ip для вашего PC:
    1. Address: 192.168.0.100 – вместо 100 можете использовать любое число от 2 до 255 по вашему усмотрению 😉
    2. Netmask: 255.255.255.0 (или /24 , что по сути одно и тоже)
    3. Gateway: 192.168.0.1
  3. Рис.1

    Тщательно проверьте указанные данные (см. Рис. 1) и перегрузите оборудование в сл. последовательности:

    1. дайте загрузиться роутеру;
    2. дайте загрузиться PC.
  4. Убедитесь в том, что роутер пингуется: ping 192.168.0.1
  5. Зайдите в ту директорию в которой у вас находится firmware.bin, например: cd /home/user/tmp
  6. Запустите консоль и войдите в tftp . Далее набираем в консоли следующие tftp комманды:
    1. binary
    2. trace
    3. rexmt 1
    4. connect 192.168.0.1
    5. put firmware.bin – после ввода этой команды не нажимайте Enter, прочитайте дальше.
  7. Теперь вам нужно приготовиться для того, чтобы попасть в ту единственную секунду, когда в D-Link-е работает tftp сервер! Для этого вы:
    1. возьмете роутер в руки;
    2. на клавиатуре PC нажмете Enter
    3. После того, как в консоли побегут строки ожидания коннектов, нужно вытащить разьем питания в роутере и быстро вставить его назад;

Если передача данных не началась, но tftp клиент все еще пытается подключиться (по умолчанию он делает это в течении 20…30 сек), вы можете повторить попытку см. п.С , в противном случае повтор надо буде выполнить начиная с п.6 . Выглядит это так:

user@host:~/tmp$ tftp
tftp> binary
tftp> trace
Packet tracing on.
tftp> rexmt 1
tftp> connect 192.168.0.1
tftp> put firmware.bin
sent WRQ <file=firmware.bin, mode=octet>
sent WRQ <file=firmware.bin, mode=octet>
sent WRQ <file=firmware.bin, mode=octet>
sent WRQ <file=firmware.bin, mode=octet>
sent WRQ <file=firmware.bin, mode=octet>
sent WRQ <file=firmware.bin, mode=octet>

Если же передача данных началась, вы можете поздравить себя, но дождитесь пока она закончиться и после ее завершения подождите еще 2 (две!) минуты, после чего можно перезагрузить роутер.

Успешно начавшаяся передача выглядит так:

...
sent DATA <block=7156, 512 bytes>
received ACK <block=7156>
sent DATA <block=7157, 512 bytes>
received ACK <block=7157>
sent DATA <block=7158, 512 bytes>
received ACK <block=7158>
sent DATA <block=7159, 512 bytes>
received ACK <block=7159>
sent DATA <block=7160, 512 bytes>
received ACK <block=7160>
sent DATA <block=7161, 512 bytes>
received ACK <block=7161>
sent DATA <block=7409, 0 bytes>
received ACK <block=7409>
Sent 3792896 bytes in 20.6 seconds

Поздравляю! Вы успешно перепрошили выш роутер. Теперь вам необходимо в [Network Connection] сбросить ручные настройки, поключив DHCP.

Важное дополнение: большинство альтернативных прошивок меняют подсеть с 192.168.0.* на 192.168.1.* , но если вы просто обновляли или восстанавливали родную прошивку D-Link, то адрес роутера останенся 192.168.1.1 .

Но, что еще более важно так это то, что если после успешной заливки альтернативной прошивки вы захотите воспользоваться tftp еще раз, помните, что ip-роутера в первую секунду всегда будет х.х.0.1 не смотря на то, что после его загрузки оно поменяется на х.х.1.1

P.S. Зубочистка!? Никто не спросил зачем она нужна 😉 . После перепрошивки и первой удачной перезагрузки роутера необходимо взять зубочистку, устроиться по-удобнее, зажать зубочисткой кнопку Reset браузера и продержать ее 30 сек., затем не отпуская Reset выдернуть шнур питания и продержать еще 30 сек., и наконец, вставив шнур питания продержаться еще 30 сек. После этого сброса , которой называется 30/30/30 , можно в последний раз перезагрузить роутер и он будет полностью готов к работе.

Удачи!

This entry was posted in Hardware and tagged , , , , . Bookmark the permalink.
  • Весьма поосновательно. Сейчас вот боюсь с DWL-G700AP.  Пытаюсь шить из под windows. TFTP все время выдает таймаут (на 192.168.1.6) видимо никак не поймаю ту секунду…

    • yakovenko

      Под виндой давно уже не прошивал. Надо покапаться в параметрах их
      tftp-клиента, по идее должна быть возможность сконфигурировать интервал
      между запросами. В этом отношении*nix-овый вариант очень удобен – он
      “лупит” запросы каждую секунду до тех пор пока не поймает этот момент.
      Обычно со 2..3 попытки все получается.

      Но я полностью согласен поначалу было тяжело попасть в этот “фрейм”.