Встановлення програм на dd wrt. Прошивка DD-WRT на домашньому роутері.



У цій статті йтиметься лише про роутер dir300 ревізії В1. Переверніть маршрутизатор і подивіться на нижню поверхню, де на стікері буде вказано його апаратну ревізію (шукаємо рядок H/W Ver: B1). Ця модель відрізняється від більш старої як зовнішнім виглядом, і версією прошивки (починається від 2.00), уважно подивіться на фото вгорі. Основна відмінність ревізій А1 і В1 це чіп, на якому роутер заснований, у нашому випадку роутер H/W Revision B1 і заснований на чіпі Ralink RT3050. До речі апаратне виконання WiFi роутера dir-300NRU точно таке ж, як у dir-600, який є повним аналогом 300NRU і виробляється для європейської зони.

Прошивка WiFi роутера D-Link DIR-300NRU Rev. B1

Установка прошивки DD-WRT на D-Link DIR-300 Revision B1 виконується через стандартний web-інтерфейс роутера. Далі за пунктами:

1. Завантажте прошивку з цього сайту або перевірте більше нову версіюна http://dd-wrt.com/site/support/router-database вбивши у пошук DIR-300 B1. Нам потрібен файл саме dlink-revb- factory-webflash.bin

2. Підключаємо dir-300 'прямим' мережним кабелемз комплекту (будь-який з 4-х LAN портів роутера) з комп'ютером.
Призначте у властивостях підключення по локальної мережіна комп'ютері IP адресу 192.168.0.15 та маску підмережі 255.255.0.0

3. Запускаємо браузер (найкраще використовувати IE) і заходимо у web-інтерфейс, набравши в адресному рядку http://192.168.0.1
Вводимо логін та пароль, для нового роутера логін за замовчуванням – admin, пароля немає (порожньо) та код підтвердження з малюнка. Якщо налаштовували, будь ласка, ввести свої паролі.
Переходимо на вкладку Maintenance і далі Firmware Update, натискаємо «browse» -> шукаємо у себе завантажений файл dlink-revb-factory-webflash.bin тиснемо «Upload»

4. Протягом декількох хвилин, поки DIR300 прошивається, не можна відключати живлення та всіляко переривати процес. Для надійності та збереження деякої кількості нервів, раджу робити цю операцію підключивши роутер та комп'ютер через UPS (безперебійник).

5. Після прошивки маршрутизатор піде в перезавантаження та стане доступним за адресою 192.168.1.1. Введемо його в адресний рядок браузера та побачимо web-інтерфейс DD-WRT. Якщо сторінка не завантажується, спробуйте очистити кеш браузера, закрити та знову відкрити. Логін та пароль прошивки DD-WRT – root/admin.

Оновлення версії DD-WRT

Для подальшого оновлення прошивки від DD-WRT слід використовувати файл dir300-revb- ddwrt-webflash.bin. Качаємо тут - або на http://dd-wrt.com/site/support/router-database вбивши у пошук DIR-300 B1.

1. Відкриваємо web-інтерфейс DD-WRT у браузері, за замовчуванням він знаходиться за адресою 192.168.1.1
2. Вибираємо вкладку Administration -> тиснемо "Firmware Upgrade"
3. Далі "browse" -> вибираємо завантажений файл "dir300-revb-ddwrt-webflash.bin" -> "Upgrade"

Через кілька хвилин роутер перезавантажиться та оновить web сторінку. Рекомендую після прошивки знеструмити роутер і знову увімкнути (якийсь reset по живленню).

Повернення на офіційну прошивку D-Link

Повернути офіційну прошивку також не складає труднощів і алгоритм виконання такий самий, як у пункті — «Оновлення версії DD-WRT». Звичайно нам треба мати заздалегідь підготовлений файл прошивки, качаємо -. Можна також завантажити з офіційного сервера FTP D-link ftp://ftp.dlink.ru/pub/Router/DIR-300_NRU/Firmware/ , вибравши останню версію.

Відкат на заводську прошивку за допомогою Emergency Room

Іноді трапляються ситуації, коли повернутися на заводську прошивку не виходить методом, описаним вище. У цьому випадку використовуємо Emergency Room.

1. Виконуємо скидання до factory resetабо через web-інтерфейс DD-WRT, або кнопкою reset.
2. Прибираємо всі ethernet кабелі, залишаємо тільки з'єднання LAN1 роутера -> ПК. Завжди використовуємо "прямий" провід (синій із комплекту).
3. У властивостях до мережному адаптерукомп'ютера прописуємо статичну адресу 192.168.0.15, маску підмережі 255.255.0.0
4. Виймаємо штекер блоку живлення з роутера, натискаємо кнопку reset, і не відпускаючи кнопки, вставляємо назад живлення, чекаємо на завантаження роутера близько 15 секунд і лише потім відпускаємо кнопку.
5. Тепер швидко відкриваємо браузер, вводимо http://192.168.0.1 та перед нами Emergency room. Вибираємо файл прошивки dir300b_v2.05_abnj.bin і тиснемо "Upload Now".

Ну а тепер коротко, для чого взагалі ця витівка з перепрошивкою DIR 300NRU.

Прошивка виконана на базі Linux і є мініатюрною операційну систему, з'являється багато розширених налаштувань, які набагато логічніше розташовані. Можливість порізати канал із пріоритетами по сервісам (QoS). Можна заборонити сайти за адресою сторінки або просто на ім'я домену.

У режимі WiFi може бути Точкою Доступу, Клієнтом, Містом та Репітером. Збільшити потужність WiFi сигналутепер не проблема. Тепер цей маршрутизатор можна використовувати для організації мосту на далекі лінки замість 2100АР – економія вдвічі.

До переваг віднесемо ще можливість підняти VPN сервер, російську мову, розширена статистика споживання трафіку WAN у вигляді графіка, з'явився необхідний мені telnet і можливість завантажувати скрипти.

Перше і найважливіше завдання - вибрати правильну модель роутера, тому що це - "квиток в один кінець". Оцінюючи свої фінанси та свої амбіції, важливо обрати золоту середину. Можливим фактором ризику міг би бути страх «запороти» дорогий роутер своїми неправильними діями. Я сам, купуючи дорогу річ, боюся щось з нею робити, особливо якщо немає досвіду. Однак можу вас запевнити: шанси вбити роутер новими прошивками практично дорівнюють нулю. Сучасні моделі мають режим відновлення, і треба дуже захотіти, щоб загробити роутер (і то не назавжди - просто знадобиться спеціальне обладнання для реанімації).

Назву 2 «правильні» моделі, які я вибрирав для себе.

  1. Linksys WRT-54GL, модель початкового рівня, Зате неперевершена за надійністю. Купувалася більше 3 років тому, досі в строю, «жоден розрив» ... Характеристики: WiFi (b/g) + 4 LAN 10/100, 4Mb flash, 16Mb RAM, no USB.
  2. Asus WL-520GU, сучасний і дуже дешевий роутер, 3 місяці в строю, також немає нарікань по роботі. Характеристики: WiFi(b/g) + 4 LAN 10/100, 4Mb flash, 16Mb RAM, 1 USB.
Основними критеріями вибору моделей є:
  • Сумісність даних моделей з прошивками DD-WRT. Можливості «рідних» прошивок не розглядалися взагалі: навіщо вибирати колір шпалер у новій квартирі, якщо попереду – всесокрушуючий ремонт?
  • Об'єм пам'яті RAM. Майже всі сучасні роутери мають 16Mb RAM. Цього якраз вистачає для нормальної роботиАле, як відомо, кожна програма прагне захопити весь доступний обсяг пам'яті. Якщо є бажання вичавити максимум зі свого роутера або зайва сума грошей, краще знайти модель з 32Mb пам'яті.
  • Наявність портів USB, бо весь розширений функціонал найзручніше ставити саме на зовнішньому носії, т.к. Flash-пам'ять роутера не зможе вмістити всіх нових програм. Мій перший роутер у відсутності USB, тому доводилося трохи вигалятися і «працювати напилком».
2) Прошивка роутера
Прошивка – це зовсім не боляче! Це насправді проста операція, ну така як перектальне видалення гландів… Ні, правда нічого складного.
При першій зміні прошивки потрібно трохи більше зусиль, зате кожна наступна піде все легше і легше.
Не слід побоюватися, що зміна прошивок відбуватиметься регулярно. Вибравши для себе набір програм, що входять в одну з готових прошивок, можна на цьому заспокоїтись і насолоджуватися життям. Якщо потрібно додатковий функціонал - завжди можна встановити нові програми окремо, для цього існує спеціальний механізм. Але на перших етапах може статися так, що вибір прошивки виявиться невдалим, наприклад, у прошивці не виявиться такої потрібної можливості. підтримка SAMBA. Не біда, завантажуємо іншу прошивку, 2 рухи мишкою - вуаля!

Деякі моделі роутерів (зокрема Asus) перед прошивкою на DD-WRT вимагають спеціальних дій (очищення пам'яті або щось таке). Уважно дотримуйтесь інструкцій на конкретну модельроутера! Особливо уважно потрібно віднести до вимог «зачекати 5 хвилин після закінчення прошивки». Я був трохи самовпевнений і, перепрошуючи своєму колегі роутер, трохи поквапився вимкнути живлення після закінчення прошивки. Результат – процедура відновлення та все по-новій.
Якщо сказано «чекайте 5 хвилин» - візьміть пісочний годинник на 5 хвилин і чекайте! Це серйозно.

Я не розглядатиму сам процес перепрошивки (tftp, зміна адреси на 192.168.0.1, інтерфейс і т.д.) - це все викладено на форумах DD-WRT.

Але, нарешті, ви закінчили з прошивкою, і перед вами – чудовий новий WEB-інтерфейс вашого роутера. Що далі?

3) Підготовка до встановлення OPTWARE
Базовий функціонал ви вже отримали, вибравши версію прошивки. Залишилося налаштувати параметри підключення до вашого провайдера (DHCP, PPTP etc), і вже можна починати борознити простори всесвіту. Багатьом домашнім користувачам цього буде достатньо.
Налаштування параметрів безпеки, управління маршрутеризацією та інші стандартні для роутерів «фішки» я також не описуватиму. Без цього все одно не обходиться жоден «нормальний» роутер.
Але ж можна зробити ще краще! Продовжимо процес.

Усе додаткові програмиоб'єднані загальним поняттям Optware. (Вони ставляться в каталог /opt, що автоматично створюється роутером і завжди доступний для запису). Однак сам каталог /opt порожній і фактично розташований у RAM - тобто там дуже мало місця і все, що туди потрапляє, буде втрачено при перезавантаженні. Що ж робити?

Вихід наступний: нам потрібне постійне місце на якомусь диску. І хоча описувані сховища не мають форми диска в геометричному сенсі (скоріше це кристали кремнію в пластикових корпусах з металевими висновками), все ж таки називатимемо їх дисками.

JFFS
Якщо flash-пам'ять роутера досить велика, а розмір прошивки менше загального розміру flash-пам'яті, місце, що залишилося можна використовувати для зберігання даних. Якщо вибрати прошивку з підтримкою JFFS, то залежно від версії можна отримати від 0.5 до 3Mb «диск» прямо всередині роутера. Такий диск буде автоматично примонтований як /jffsпри старті.

Головною неприємністю при роботі з flash-дисками є їхня швидка деградація при записі. Якщо кількість перезаписів сектора «диска» перевищить якийсь поріг (від 10 до 100 тисяч циклів), то диску прийде кінець. Все погано… :(

Якщо з внутрішнім диском станеться таке, справді буде погано. Але якщо це зовнішній USB диск, то легким рухом руки замінюємо USB-флешку на нову – і знову на бій. Адже USB-флешки давно вже витратний матеріал, чи не так? Тим більше, що достатня флешка об'ємом 1 або 2Gb. Головне, як завжди, вчасно робити бекапи.

USB
Як ви вже зрозуміли, основним місцем встановлення Optware є зовнішній диск USB. Важливо мати на увазі, що USB має бути певним чином відформатовано перед встановленням у роутер. Як мінімум, повинен бути первинний розділ, відформатований як ext2 або ext3 .

Більш «правильною» є така схема:

  1. розділ ext2, розмір ~400Mb - основний розділ Optware, монтується як /opt
  2. розділ swap, розмір ~24Mb - для свопінгу, дозволяє працювати таким «ваговитим» додаткам як RADIUS, MySQL, Apache...
  3. розділ ext2, розмір ~400Mb - резервний розділ Optware (офлайнове дзеркало)
  4. розділ ext2 або fat32, все інше місце - для даних користувача
Форматування USB кращевсього виконувати на Linux-машині будь-якими підручними утилітами, наприклад GParted.
CIFS
Якщо роутер не має апаратного USB, а встановити Optware таки хочеться, то можна скористатися чудовою можливістю Linuxпрацювати з диском через мережу. Для цього нам потрібні 2 речі:
  • сервер, що постійно працює десь у мережі (або NAS, або просто десктоп-машина, навіть ноутбук) з підтримкою SAMBA
  • прошивка з підтримкою CIFS/SAMBA
Якщо в будинку вже є комп'ютери (а вони є, адже роутер без комп'ютерів виглядає якось безглуздо), то один із домашніх комп'ютерів виступатиме у ролі «мережевого диска» для роутера.
Роутер при завантаженні монтуватиме розшаровану папку як /opt, а далі - жодних відмінностей у роботі Optware, крім швидкості початкового завантаження через мережу. Звичайно, для випадку CIFS краще використовувати не Wi-Fi, а Ethernet підключення.

Щоб все запрацювало, достатньо в налаштуваннях роутера в розділі CIFS вказати мережева адресата логін/пароль для доступу до розшарованої папки, і при наступному перезавантаженні роутер автоматично вмонтує мережевий диск у папку /tmp/smbshare.

SD/MMC
Припустимо, що у нас немає вільного місцяу flash-пам'яті роутера, ні USB, ні сервера. А нам потрібно встановити Optware. Що ж робити?

Як завжди, «у нас із собою було» (це мій улюблений девіз). Якщо нічого немає, то доведеться трохи попрацювати напилком.

Для деяких моделей (серед яких WRT-54GL) є так званий SD/MMC mod . Достатньо приклеїти кудись SD або MMC карту і припаяти 6 проводків, і можна отримати місце для установки Optware та зберігання даних.

Саме такий мод я зрештою і зробив, щоб зі старого роутера отримати автономну точку доступу під WiFi Hotspot Chilli. Це - тема окремого посту, можливо скоро зберусь і навіть зроблю міні-сайт. Якщо ще когось ця тема цікавить, напишіть у приват.

4) Визначення точки монтування, startup, shutdown
Залежно від вибраного диска точка монтування буде різною. Для внутрішньої flash-пам'яті це буде /jffs, для USB це буде /mnt(якщо дозволити автоматичне монтування), для CIFS це буде /tmp/smbshareдля SD/MMC це буде /mmc.

Якщо вибраний варіант USB, слід заборонити автоматичне монтування - ми самі будемо це робити «правильним» чином.
Як я вже сказав, Optware встановлюється в певне місце - каталог /opt. Цей каталог вже є, потрібно лише примонтувати до нього реальний диск.

Монтування можна (потрібно) робити у процесі початкового завантаження роутера. Для автоматизації в роутері призначено кілька визначених скриптів, які виконуються під час старту та завершення роботи.

Нам знадобляться як мінімум 2 скрипти:

  • .rc_startup
  • .rc_shutdown
Перший скрипт буде виконувати монтування зовнішнього «диска» та запуск Optware, другий відповідно – зупинка Optware та розмонтування.

Для початку треба дозволити доступ до роутера по telnetабо по SSHпротоколу.
Рекомендую налаштувати доступ по SSH, тому що це безпечніше і просто зручніше (можна налаштувати авторизацію по ключовому файлу і навіть не вводити пароль пароль при доступі). А доступ нам знадобиться неодноразово, щоб встановлювати програми та дивитися, WTF, чому вони не хочуть правильно працювати.

Сервер SSH вже є і працює у всіх версіях прошивок роутера. Потрібно тільки створити пару ключів, один з яких (публічний) завантажити в роутер, а інший (приватний) покласти на ноутбук поруч із програмою Putty і WinSCP. Про ключі теж не буду писати, скрізь це досить докладно розписується.

Створимо скрипт .rc_startup, який поки що робитиме тільки одне: монтувати зовнішній «диск» у папку /opt.
Варіанти:

USB mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
JFFS mkdir -p /jffs/opt
CIFS mount.cifs $(nvram get samba_share) /jffs -o user=$(nvram get
samba_user),pass=$(nvram get samba_password)
mount -o bind /jffs/opt /opt

Збережемо його в роутері кнопкою Save startup, перезавантажимо роутер (можливо, він перезавантажиться сам) - після цього у роутера має з'явитися каталог /opt, куди можна записувати файли. Перевіримо?

Telnet router
cd /opt
echo "OK" >opt.ok
cat opt.ok

Якщо вийшло «OK» - значить все ОК, якщо ні - значить щось не так… Гуглимо, шукаємо де помилка, повторюємо…

5) Встановлення Optware – перший крок
Ну ось, все позаду, у нас в мережі – роутер із можливістю установки Optware. Приступимо.

Т.к. у мене на ноутбуки Windows, я використовую Putty (telnet або SSH) для доступу до консолі роутера та WinSCP для копіювання та редагування файлів.

Підключаємося через WinSCP до роутера і створюємо в папці /tmp наступний скрипт:
opt-inst.sh

Підключаємося через Putty до роутера і виконуємо скрипт:

Cd /tmp
chmod 740 ./optw-inst.sh
./optw-inst.sh

В результаті роботи скрипта буде створена початкова конфігурація Optware та програма-установник opt-inst. Тепер можна приступати до встановлення решти пакетів програм.

6) Встановлення перших пакетів
Для початку встановимо якийсь дуже простий пакет, наприклад rsync. Він нам знадобиться надалі для налаштування резервного копіювання.

Cd /opt
ipkg-opt update
ipkg-opt install rsync

Якщо все пройшло успішно і немає ніякої лайки в консолі, можна продовжити установку.

Серед пакетів «першої необхідності» я назвав би такі:

  • mc - Midnight Commander
  • tcpdump - збір та аналіз мережного трафіку
  • busybox - розширені версії основних утиліт Linux
Деякі пакети вимагатимуть установки інших (через механізм залежностей) – так і треба, хай вони ставляться самі. Зазвичай все, що потрібно - натискати «y» і погоджуватися.
7) Остаточне настроювання
Залишилося налаштувати роутер так, щоб запуск, робота та зупинка потрібних сервісів відбувався повністю автоматично. Для цього потрібно виправити скрипти.rc_startup, .rc_shutdown, можливо, запустити процес cron і насолоджуватися.

Тут слід зробити деякі зауваження. В різних версіяхпрошивок процедура запуску і зупинки чомусь відрізняється, причому в суттєвій частині, а саме - запуск скриптів користувача з init.d.

У більш новому роутері (версія прошивки 13972) скрипти
/opt/etc/init.d/S* автоматично викликаються після завершення роботи системного .rc_startup, та аналогічно, /opt/etc/init.d/K* перед запуском .rc_shutdown. Тому для запуску та основи потрібних сервісів достатньо, щоб їх відповідні S* і K* скрипти знаходилися в папці запуску /opt/etc/init.d

Однак і тут (принаймні в моєму випадку) не обійшлося без підводних граблів (чиєсь влучне вираження). За законами жанру, запуск скрипта S* має бути з параметром start, а запуск K* - з параметром stop. Але DD-WRT чомусь не передає start при старті, хоч і передає stop при зупинці. Довелося робити якийсь work-around:

Системний скрипт .rc_statup(Створюється при запуску в /tmpі запускається силами процесу init) виглядає приблизно так (деякі подробиці опущені, повний коддоступний):

# /tmp/.rc_startup:

# 1: Монтувати "диск" optware в папку /opt
if [-n "$ DST"]; then
/bin/mount -t ext3 -o noatime,nodiratime $DST /opt
echo "mount USB part1 -> /opt"
fi

# 2: Дозволити swapfile з розділу swap
if [-n "$ DST"]; then
/opt/bin/busybox swapon $DST
echo "mount USB part2 -> swap"
fi
# 3: Створити оточення для запуску S* скриптів Optware
echo "start">/tmp/.rc_stage

Кожен S* та K* скрипт містить приблизно такий код:

If [-n "$1"]; then
OP=$1
else
OP=$(cat /tmp/.rc_stage)
fi

Case "$OP" in
start) # bla-bla
;;
stop) # bla-bla
;;
esac

Системний скрипт .rc_shutdown(Створюється при перезавантаженні в /tmpі запускається по команді reboot) виглядає приблизно так (деякі подробиці опущені, повний код доступний):

# /tmp/.rc_shutdown:

# 1: Скрипти /opt/etc/init.d/K* вже відпрацювали

# 2: Заборонити swapfile
DST=`ls /dev/scsi/host?/bus?/target?/lun?/part2`
if [-n "$ DST"]; then
/opt/bin/busybox swapoff $DST
echo "swap disabled"
fi

# 3: Відмонтувати optware
DST=`ls /dev/scsi/host?/bus?/target?/lun?/part1`
if [-n "$ DST"]; then
/bin/umount /opt
echo "/opt umounted"
fi

У старішому роутері (версія прошивки 13064) S* і K* скрипти взагалі не викликаються автоматично, тому довелося робити так:

Системний скрипт .rc_statup копіює та стартує (у фоновому режимі) скрипт запуску optware:

# /opt/.startup - скрипт запуску Optware
CFG=/mmc # або /mnt, або /jffs, або /tmp/smbshare
if [-x $ CFG/opt/.startup]; then
cp $CFG/opt/.* /tmp
echo "startup: switch to optware" >>/tmp/log
/tmp/.startup start $CFG &
else
echo "startup: optware not found" >>/tmp/log
fi

А вже optware-скрипт /opt/.startup робить все інше, а саме – запускає S* скрипти.

Аналогічно влаштований і системний скрипт .rc_shutdown: (тільки запускає /opt/.shutdown не у фоновому режимі, а безпосередньо)

# /opt/.shutdown - скрипт зупинки Optware
CFG=/мм
if [-x $CFG/opt/.shutdown]; then
cp $CFG/opt/.* /tmp
. /tmp/.shutdown stop $CFG
fi

На цьому поки що все.

Теги: Додати теги

Довелося скористатися прошивкою DD-WRT. Знайшов масу рекомендацій про те, як шити через RS-232, при цьому позбавляючи себе гарантії та орудуючи паяльником та викруткою. Опишу спосіб прошивки пристроїв D-Link прошивкою DD-WRT (природно – лише тих, що підтримуються цим прошивкою) без паяльника, викрутки та із збереженням гарантії на пристрій.

Спершу слід перевірити, чи підтримується Ваше обладнання DD-WRT. Але навіть якщо Ви не виявили свій пристрій у переліку обладнання, що підтримується – не слід зневірятися. Наприклад, DAP-1150/RU не підтримується, але підтримується DIR-300 h.w. rev. B1, а по залізі – вони практично ідентичні. Відповідно, можна прошити DAP-1150/RU прошивкою від DIR-300 rev. B1. Але стаття не про це. Виходжу з того, що Ви вже визначилися із прошивкою.

Читаємо опис нашою рідною російською мовою. Для початку нам рекомендують прошити наш пристрій через web-інтерфейс miniверсією DD-WRT. Після цього вже можна буде залити будь-яку іншу версію DD-WRT.

Прошиваємо DD-WRT

Пробуватимемо pre sp2. Завантажуємо. Ідемо сюди - http://www.dd-wrt.com/site/support/router-database. Набираємо D-Link. Отримуємо список пристроїв, що підтримуються. Вибираємо потрібне Вам. Наприклад - DIR-300 rev.B1. І бачимо дві доступні прошивки (малюнок праворуч). Качаємо обидві.

У 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:\ і наберіть наведену нижче команду, але не натискайте клавішу . На екрані має бути приблизно таке:

Microsoft Windows XP 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, поряд із гніздом живлення).

Ви повинні натиснути клавішу для запуску показаної вище команди "tftp -i 192.168.0.1 put firmware.bin" приблизно через дві секунди після включення живлення DIR-320 (тобто коли засвітиться індикатор з'єднання Ethernet). Якщо прошивка буде прийнята маршрутизатором, індикатор LED1 на ньому швидко моргатиме і команда успішно завершиться менш ніж через півхвилини. На екрані з'явиться повідомлення про успішне завершення команди:

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

Якщо ж ви поспішите або запізнитеся натиснути клавішу команда через деякий час видасть повідомлення про неуспішне завершення. В цьому випадку просто повторіть описаний вище процес: вимкніть живлення маршрутизатора і буквально через секунду знову увімкніть його, перед цим знову підготувавши команду tftp для передачі в нього прошивки.

Майте на увазі, що процес прошивки триває кілька хвилин після завершення команди пересилання файлу, тому не вимикайте живлення маршрутизатора та не натискайте Reset негайно після завершення цієї команди. Дайте маршрутизатору 10 хвилин для завершення процесу прошивки. За цей час випийте філіжанку кави та отримайте задоволення – і тільки після цього переходьте до наступного пункту. Якщо у списку бездротових мережз'явився новий SSID "dd-wrt" - отже, процес прошивки успішно завершився.

Щоб не ловити момент, у який потрібно видати команду завантаження, вручну, скористайтеся способом, описаним у наступному розділі.

Увага: В останніх версіяхроутера, якщо tftp видається повідомлення : 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. 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, втрата % втрат), Приблизний час прийому-передачі в мс: Мінімальний = 4мсек, Максимальний = 4 мсек, Середнє = 4 мсек *** Start Flashing **** Успішна передача: 3092480 байт за 11 сs, 281134 байт/с C:\ dd-wrt>

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

Інший варіант командного файлу (перший у моєму випадку не допоміг) викликати з моменту включення маршрутизатора з інтервалом наприклад 500мс поспіль кілька процесів tftp. Відповідно якийсь із них потрапить у момент, коли маршрутизатор "згоден" прийняти прошивку. Як організувати паузу, я використав 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 "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.

[edit]Програми

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

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

@echo off echo ============================================== ==================== echo Цей batch file буде upload dd-wrt firmware в поточній directory до echo 192.168.0.1 під час 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 * Натисніть Ctrl+E . to continue... pause > nul echo. 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 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 "Цей script буде 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 "* Un cable. " echo "" echo "Press Ctrl+C на abort or any other key to continue... " read echo "" echo "* Re-plug the router's power cable. " echo "" echo "===== ================================================== ===========" echo "Waiting for the router... Ctrl+C до 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!"

Роутери