Прошивка OpenWRT на TP-Link WR703N

Для начала воспользуемся готовыми образом прошивки:

Подключите роутер через ethernet к компьютеру и настройте IP адрес из подсети 192.168.1.0/24 (например 192.168.1.100).

Адрес роутера по умолчанию 192.168.1.1

Через оригинальную прошивку

Оригинальная прошивка позволяет быстро перешить роутер в OpenWRT, но к сожалению имеет интерфейс на китайском языке.

Войдите через броузер на роутер по адресу http://192.168.1.1. Логин: admin, пароль: admin.

Найдите в левом меню раздел http://192.168.1.1/userRpm/SoftwareUpgradeRpm.htm (прямая ссылка не работает).

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

Появится диалог прогресса. Дождитесь окончания загрузки и программирования. Светодиод на устройстве должен погаснуть на несколько секунда а потом начать моргать.

После загрузки произойдёт неудачная попытка вернуться на страницу http://192.168.1.1, поскольку в нашей OpenWRT прошивке нет веб сервера.

Роутер перезагрузится и можно войти на него через телнет: telnet 192.168.1.1

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
 === IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------


BusyBox v1.19.3 (2012-02-13 20:16:45 EET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 ATTITUDE ADJUSTMENT (bleeding edge, r30504) ----------
  * 1/4 oz Vodka      Pour all ingredients into mixing
  * 1/4 oz Gin        tin with ice, strain into glass.
  * 1/4 oz Amaretto
  * 1/4 oz Triple sec
  * 1/4 oz Peach schnapps
  * 1/4 oz Sour mix
  * 1 splash Cranberry juice
 -----------------------------------------------------
root@wr703n-AP:/# 

Можно посмотреть состояние памяти:

$ free
             total         used         free       shared      buffers
Mem:         29844        16424        13420            0         1752
-/+ buffers:              14672        15172
Swap:            0            0            0
root@wr703n-AP:/# 

У нас установлено 32 Мб SDRAM. Есть возможность поднять объём памяти до 64 Мб, а возможно даже и до 128 Мб (если найдёте нужные чипы памяти).

Для этого придется воспользоватся программатором. Т.к. в SDRAM есть загрузочный сектор расположенный по адресу 0-1ffff, а с 20000 начинается сама прошивка. Где-то читал что в флеш есть конфигурация процессора. предположительно расположенная по адресу 3E00F - 3F2070, но при полной установки прошивки с веб интерфейсом эта область памяти изменилась.

Не придётся. Не следует путать SDRAM и SPI Flash. Примерная разблюдовка постоянной flash памяти описана здесь http://wiki.openwrt.org/toh/tp-link/tl-wr703n#mtd . При обновлении фирмвари действительно не переписывается первые два блока flash, где расположен u-boot, который выполняет все необходимые настройки процессора и оперативной памяти. В WR703 u-boot, я так понимаю, автоматически определяет доступный объём SDRAM, так что расширение сводится к механической замене чипа. А вот замена постоянной памяти Flash на больший объём (8 Mb в замен 4 Mb) действительно потребует прошивки новой микросхемы памяти через внешний программатор и более того, компиляции отдельной версии ядра.

Состояние дисковой памяти можно посмотреть с помощью команды df:

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                    1216       204      1012  17% /
/dev/root                 2048      2048         0 100% /rom
tmpfs                    14924        64     14860   0% /tmp
tmpfs                      512         0       512   0% /dev
root                     14920        32     14888   0% /tmp/root
overlayfs:/tmp/root      14920        32     14888   0% /tmp/root
/dev/mtdblock3            1216       204      1012  17% /overlay
overlayfs:/overlay        1216       204      1012  17% /
root@wr703n-AP:/#

Здесь нас в первую очередь интересует раздел rootfs смонтированный в корень файловой системы: мы видим, что на встроенной flash-памяти осталось свободно 1012 блоков по 1Кб, т.е. примерно 1 Мб. Это место, которое мы сможешь задействовать под дополнительные пакеты ПО и пользовательских данных. Если нужно дополнительное место под ПО и пользовательские данные, можно воспользоваться внешним USB-Flash диском.

В каталог /tmp смонтирован раздел хранящийся в оперативной памяти. Все данные в нём не сохраняются при перезагрузке.

Прошивка из OpenWRT

После того, как мы уже установили OpenWRT перешивать устройство придётся его средствами.

Заходим на устройство телнетом telnet 192.168.1.1, через ssh или через Serial port.

Прошивка из сети

Роутер должен быть настроен для выхода в интернет.

cd /tmp
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
mtd -r write openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin firmware

После ввода последней команды начинается процесс прошивки:

Unlocking firmware ...

Writing from openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin to firmware ...  [w]

Дожидаемся окончания прошивки. Благодаря ключу -r роутер перезагрузится автоматически.

Rebooting ...

Прошивка через бутлоадер

Может возникнуть ситуация, когда прошивка роутера окончилась неудачей, или была загружена нерабочая прошивка. При этом роутер перестаёт грузиться штатным образом. Вывести из этого состояния устройство позволит запись заведомо рабочей прошивки через бутлоадер.

Для этого метода нам понадобится подключить аппаратный последовательный порт.

Подключившись терминалом к последовательному порту и подав питание на роутер мы увидим процесс загрузки:

U-Boot 1.1.4 (Feb 28 2012 - 11:58:24)

AP121 (ar9330) U-boot

DRAM:  32 MB
led turning on for 1s...
id read 0x100000ff
flash size 4194304, sector count = 64
Flash:  4 MB
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   ag7240_enet_initialize...
No valid address in Flash. Using fixed address
No valid address in Flash. Using fixed address
: cfg1 0x5 cfg2 0x7114
eth0: 00:03:7f:xx:xx:xx
ag7240_phy_setup 
eth0 up
: cfg1 0xf cfg2 0x7214
eth1: 00:03:7f:xx:xx:xx
athrs26_reg_init_lan
ATHRS26: resetting s26
ATHRS26: s26 reset done
ag7240_phy_setup 
eth1 up
eth0, eth1
Autobooting in 1 seconds

Дождавшись появления на терминале сообщения Autobooting in 1 seconds набираем последовательность tpl и попадаем в бутлоадер (по сообщениям видно что это U-boot).

hornet> 
hornet> help
?       - alias for 'help'
bootm   - boot application image from memory
cp      - memory copy
erase   - erase FLASH memory
help    - print online help
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nm      - memory modify (constant address)
printenv- print environment variables
progmac - Set ethernet MAC addresses
reset   - Perform RESET of the CPU
setenv  - set environment variables
tftpboot- boot image via network using TFTP protocol
version - print monitor version
hornet> 

Команда printenv покажет нам значения переменных окружения:

hornet> printenv
bootargs=console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),2752k(rootfs),896k(u)
bootcmd=bootm 0x9f020000
bootdelay=1
baudrate=115200
ethaddr=0xba:0xbe:0xfa:0xce:0x07:0x41
ipaddr=192.168.1.111
serverip=192.168.1.100
stdin=serial
stdout=serial
stderr=serial
ethact=eth0

Environment size: 362/65532 bytes

Здесь IP роутера 192.168.1.111, а IP компьютера, где находится прошивка следует установить как 192.168.1.100.

Для загрузки прошивки в роутер нам понадобится установить сервер tftp на компьютер:

sudo apt-get install tftpd-hpa

И предоставить файл прошивки на общее обозрение:

sudo cp openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin /var/lib/tftpboot

Теперь можно прошить и перезапустить роутер (через последовательный порт):

tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
erase 0x9f020000 +0x3c0000
cp.b 0x81000000 0x9f020000 0x3c0000
bootm 9f020000

Восстановление оригинальной прошивки

Этим же методом можно восстановить на роутере оригинальную прошивку: http://wiki.openwrt.org/toh/tp-link/tl-wr703n#back.to.original.image

 
comments powered by Disqus