DIR-320 — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Шаг 6. Осваиваем UART)
Строка 1: Строка 1:
 
На этой странице по шагам будет описано как сделать из обычного роутера D-Link DIR-320 необычный :)
 
На этой странице по шагам будет описано как сделать из обычного роутера D-Link DIR-320 необычный :)
  
=Шаг 1. Заливаем прошивку от Олега=
+
=Базовая операция - загрузка прошивки от Олега=
 +
 
 +
=Шаг 1.1. Заливаем прошивку от Олега=
  
 
1. Скачиваем и сохраняем прошивку:  
 
1. Скачиваем и сохраняем прошивку:  
Строка 72: Строка 74:
 
* 7. Видим оригинальную прошивку. Все
 
* 7. Видим оригинальную прошивку. Все
  
=Шаг 2. Подключаем флешку и монтируем в /opt=
+
=Направление 2. Программируем прямо на роутере=
 +
==Шаг 2.1. Подключаем флешку и монтируем в /opt==
  
 
1. Подключаемся к роутеру через telnet командой вида "telnet 192.168.1.1";
 
1. Подключаемся к роутеру через telnet командой вида "telnet 192.168.1.1";
Строка 86: Строка 89:
 
5. Монтируем флешку в /opt командой "mount /dev/sda /opt";
 
5. Монтируем флешку в /opt командой "mount /dev/sda /opt";
  
=Шаг 3. Обновляемся=
+
==Шаг 2.2. Обновляемся==
  
 
<pre>
 
<pre>
Строка 106: Строка 109:
 
</pre>
 
</pre>
  
=Шаг 4. Ставим софт для сборки прошивок=
+
==Шаг 2.3. Ставим софт для сборки прошивок==
 
<pre>
 
<pre>
 
ipkg install buildroot
 
ipkg install buildroot
 
</pre>
 
</pre>
  
=Шаг 5. Проверяем, что всё компилируется=
+
==Шаг 2.4. Проверяем, что всё компилируется==
 
Создадим файл hello.c с тестовой программкой:
 
Создадим файл hello.c с тестовой программкой:
 
<pre>
 
<pre>
Строка 139: Строка 142:
 
Программа должна вывести "Hello world!", если это произошло - поздравляю, вы собрали и запустили первую программу под роутер :)
 
Программа должна вывести "Hello world!", если это произошло - поздравляю, вы собрали и запустили первую программу под роутер :)
  
=Шаг 6. Осваиваем UART=
+
==Шаг 2.5. Осваиваем UART==
  
 
[[Изображение:Dir-320-UART-pinout.jpg|thumb|200px|Распиновка UART.|right]]
 
[[Изображение:Dir-320-UART-pinout.jpg|thumb|200px|Распиновка UART.|right]]

Версия 04:45, 3 марта 2011

На этой странице по шагам будет описано как сделать из обычного роутера D-Link DIR-320 необычный :)

Базовая операция - загрузка прошивки от Олега

Шаг 1.1. Заливаем прошивку от Олега

1. Скачиваем и сохраняем прошивку: Новейшая прошивка от энтузиастов на базе прошивки от Олега 1.9.2.7-rtn http://narod.ru/disk/549608001/WL500gpv2-1.9.2.7-rtn-r2393M.trx.html (на ядре 2.6.22 Обсуждение прошивки http://wl500g.info/showthread.php?t=17136). После прошивки роутер будет представляться WL-500gPV2. Вырезаны samba, ftp, и много чего еще ради поддержки UVC вебкамер.

2. Для Windows Vista, Windows 7 включаем клиент tftp: Пуск->Панель управления->Программы->Включение или отключение компонентов Windows-> Ставим галочку рядом с пунктом "Клиент TFTP"->ОК. Для Linux устанавливаем клиент tftp штатными средствами дистрибутива, например для семейства Ubuntu командой в терминале: sudo apt-get install tftp

3. Создаем файл flashing.cmd в любом текстовом редакторе и сохраняем этот файл в папку c:\bin, в эту же папку кладем прошивку, переименованную в firmware.bin. Содержимое файла flashing.cmd:

@Echo Off
:BEGIN
ping -n 1 -w 1 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 c:\bin\firmware.bin

:END

4. Устанавливаем адрес сетевой карты компьютера 192.168.0.2, маска 255.255.255.0, шлюз и DNS прописывать не надо. Подключаем к сетевой карте компьютера сетевой кабель, а второй конец сетевого кабеля вставляем в любой порт LAN роутера, питание роутера не включаем. 5. Запускаем командную строку ПУСК->Выполнить-> cmd, и выполнем команду перехода к папке C\:bin

C:\>cd c:\bin

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

C:\bin>flashing.cmd

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

Обмен пакетами с 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 ****

Успешная передача: 3592480 байт за 11 сs, 281134 байт/с C:\bin>

8. После того, как загорится индикатор статуса (~1-2 мин) производим сброс настроек роутера по умолчанию. Для этого нажимаем и удерживаем кнопку Reset нажатой, пока не замигает индикатор статуса. Отпускаем Reset. Роутер перезагрузится. Адрес роутера по умолчанию сменился теперь на 192.168.1.1. После этого необходимо изменить IP адрес сетевой карты компьютера(по кабелю или WiFi) на получение адреса автоматически по DHCP.


P.S. Если Вам потребовалось восстановить оригинальную прошивку роутера D-Link DIR-320, то делаем следующее:

  • 1. Включаем питание роутера с зажатой кнопкой "Reset". Через 15 секунд отпускаем "Reset".
  • 2. Выставляем на компьютере вручную IP адрес 192.168.0.2, маска 255.255.255.0
  • 3. Заходим браузером по адресу 192.168.0.1 и попадаем в консоль аварийного восстановления.
  • 4. Скачиваем официальную прошивку и прошиваем ее через данную консоль.
  • 5. По окончанию прошивки выключаем роутер, ждем 30 секунд и включаем роутер.
  • 6. На компе выставляем авто-получение IP адреса, чистим кеш браузера, и заходим браузером по адресу 192.168.0.1
  • 7. Видим оригинальную прошивку. Все

Направление 2. Программируем прямо на роутере

Шаг 2.1. Подключаем флешку и монтируем в /opt

1. Подключаемся к роутеру через telnet командой вида "telnet 192.168.1.1";

2. Вставляем флешку;

3. Смотрим, как её определил роутер, командой "fdisk -l", у меня определил как "/dev/sda";

3. Форматируем флешку в "ext3" командой "mke2fs -j /dev/sda";

4. Создаём раздел командой "fdisk /dev/sda", нажимаем "w" и <enter>, чтобы сохранить изменения;

5. Монтируем флешку в /opt командой "mount /dev/sda /opt";

Шаг 2.2. Обновляемся

 #меняем репозиторий

echo -e "src optware http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable\ndest root /" > /etc/ipkg.conf

ipkg.sh update

ipkg.sh install uclibc-opt

ipkg.sh install ipkg-opt

ipkg update

 #обновляем все ранее установленные пакеты из нового репозитория

/usr/bin/awk '/^Package:/{system("ipkg install -force-reinstall -force-defaults " $2)}' /opt/lib/ipkg/status

Шаг 2.3. Ставим софт для сборки прошивок

ipkg install buildroot

Шаг 2.4. Проверяем, что всё компилируется

Создадим файл hello.c с тестовой программкой:

#include <stdio.h>
int main()
{
printf("Hello world!\n");
}

Я это сделал так:

echo "#include <stdio.h>" > hello.c
echo "int main()" >> hello.c
echo "{" >> hello.c
echo "printf(\"Hello world!\\n\");" >> hello.c
echo "}" >> hello.c
cat hello.c

Теперь соберем её и запустим:

gcc hello.c -o hello
./hello

Программа должна вывести "Hello world!", если это произошло - поздравляю, вы собрали и запустили первую программу под роутер :)

Шаг 2.5. Осваиваем UART

Распиновка UART.

На печатной плате роутера выведен UART. Он изначально используется для отладки (туда выведена отладочная консоль).

Если необходимо использовать этот uart порт для других целей необходимо отключить отладочную консоль от /dev/ttyS0. Необходимо ввести команды:

nvram set kernel_args="root=/dev/mtdblock2 rootfstype=squashfs,ext3 noinitrd init=/linuxrc console=null"
nvram commit

И перезагрузиться. Вернуть все назад можно командой:

nvram set kernel_args="root=/dev/mtdblock2 rootfstype=squashfs,ext3 noinitrd init=/linuxrc console=/dev/ttyS0"
nvram commit

При освоении работы с портом можно поставить резистор между линиями RX и TX, тогда вы будете получать из UART'а ровно то, что туда отправили. При установке перемычки не забудьте выключить отладочный вывод в этот порт командой указанной выше, иначе роутер с перемычкой не будет загружаться.