Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
ru:toh:netgear:wnr2200 [2015/09/24 08:43] – created olgerdru:toh:netgear:wnr2200 [2019/11/02 08:47] sefralgon
Line 1: Line 1:
 +====== Netgear WNR2200 ======
  
 +===== Версии железа =====
 +---- datatable ----
 +cols    : Brand, Model, Versions, Supported Current Rel, OEM device homepage URL_url, OWrt Forum Topic URL_url, Device Techdata_pageid
 +headers : Фирма, Модель, Ревизия, Версия OpenWRT, Страница производителя, Тема форума, Технические данные
 +align   : c,c,c,c,c,c,c
 +filter  : Model=WNR2200
 +----
 +
 +
 +===== Спецификации оборудования =====
 +---- datatable ----
 +cols    : Model, Versions, CPU, CPU MHz, Flash MB_mbflashs, RAM MB_mbram, WLAN Hardware, WLAN 2.4GHz, WLAN 5.0GHz, Ethernet 100M ports_, Ethernet Gbit ports_, Modem, USB ports_
 +header  : Модель, Версии,Процессор,CPU MHz,Flash MB,RAM MB,Беспроводная сеть,WLAN2.4,WLAN5.0,Порты 100M,Порты Gbit,Модем,USB
 +align   : c,c,c,c,c,c,c,c,c,c,c,c,c
 +filter  : Model=WNR2200
 +----
 +
 +
 +===== Установка =====
 +---- datatable ----
 +cols    : Model, Versions, Supported Current Rel, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Firmware OEM Stock URL_url
 +headers : Модель, Версия, Версия OpenWRT, Установка OpenWrt из оригинальной прошивки, Обновление прошивки OpenWrt, Оригинальная прошивка
 +align   : c,c,c
 +filter  : Model=WNR2200
 +----
 +
 +
 +===== Железо =====
 +
 +В Netgear WNR2200 установлен процессор Atheros AR7241 и 64 мегабайта RAM. Размер флеша отличается в разных версиях: в продаваемой в России и Китае 16MiB SPI-NOR flash на микросхеме MX25L12845EMI-10G, в версии продаваемой в других странах 8 мегабайт флеша на SOIC8 микросхеме SPI flash.
 +
 +Продаваемая в России версия в некоторых источниках называется WNR2200-100RUS, но на самом роутере написано просто WNR2200 в любом случае.
 +
 +При сравнении наклеек на задней стороны роутера, было обнаружено, что они содержат одну и ту же информацию, FCC id и остальные цифровые коды идентичны, но расположены в разном порядке, кроме того, на версии 100RUS (16m) три наклейки, на которых:
 +SECURITY PIN, SERIAL, MAC
 +В то же время на роутере, на котором было 8M флеша, купленном в другой стране наклеек четыре:
 +WiFi Network Name (SSID), Network Key (Password), SERIAL, MAC.
 +
 +Данное наблюдение основывается только на двух роутерах и неизвестно, насколько оно надёжно. Для определения размера флеша лучше разобрать роутер и посмотреть или воспользоваться терминалом.
 +
 +Чтобы разобрать роутер необходимо снять четыре резиновые ножки (они не на клею, а просто вставлены) и выкрутить четыре винтика, понадобится отвёртка Torx T8 (звёздочка 2 мм по минимальному размеру)
 +
 +На плате есть UART в верхнем правом углу платы, если сетевые порты снизу, он помечен JP1 и над крайним правым пином белая точка. Распиновка слева направо: GND, Rx, Tx, Vcc.
 +
 +Микросхема флеша находится рядом с кнопками WPS и WLS под EJTAG. Перед прошивкой роутера желательно убедиться, что вы выбрали образ правильно. В случае прошивки образа 8 мегабайт на роутер с 16 мегабайт флеша ничего страшного не произойдёт, но раздел ART с данными калибровки и MAC-адресом Wi-Fi будет недоступен для прошивки.
 +
 +===== Получение доступа в терминал =====
 +
 +В прошивке с завода есть сервис telnet, но для для его включения нужна специальная программа (подробнее здесь: https://openwrt.org/toh/netgear/telnet.console )
 +
 +Гораздо проще воспользоваться UART. После этого, можно взять прошивку sysupgrade и залить её с помощью утилиты mtd, при этом будет пропущена верификация. Перед прошивкой убедитесь, что первые четыре байта: "2200", сделать это можно командой head -c 4 openwrt.img
 +
 +===== Прошивка =====
 +
 +В прошивке для WNR2200 (factory для openwrt) имеется заголовок размером 128 байт, содержащий текст вроде этого и дополненый до 128 байт символами 0x00, и дополнительный байт в конце с контрольной суммой. Для создания такого образа используется утилита mkdniimg. Пример заголовка взятый у официальной прошивки:
 +
 +  device:wnr2200
 +  version:V1.0.2.24
 +  region:
 +
 +Данный заголовок проверяется веб-интерфейсом роутера (важна первая строчка) и если он неправильный, то веб-интерфейс откажется принять прошивку. Контрольная сумма проверяется дальше, она вычисляется простым арифметическим суммированием всех байтов, включая заголовок по модулю 256 и должна быть 0xFF. Для того, чтобы роутер принял прошивку, в конец добавляется один байт, дополняющий сумму до нужного значения.
 +
 +На данный момент, в стабильной версии OpenWRT нет поддержки версии 16 мегабайт, но образ от 8 мегабайтной версии будет работать, хотя половина флеша будет недоступна. В версиях до 19.07 включительно требуется выбрать архитектуру (target) ar71xx, порт на более современную ath79 в процессе. Чтобы собрать образ для 16 мегабайтной версии из исходников старой версии OpenWRT, можно просто отредактировать файл target/linux/ar71xx/image/legacy.mk заменив строку:
 +  wnr2200_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
 +На
 +  wnr2200_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
 +
 +В архитектуре ath79 поддержка 16 мегабайтной версии должна быть изначально.
 +
 +Прошивка sysupgrade не содержит заголовка из 128 байт и однобайтной контрольной суммы в конце, начинается с "2200" и годится для заливки на раздел mtd или обновления из уже установленной OpenWRT.
 +
 +===== Восстановление заводской прошивки из OpenWRT =====
 +
 +Для восстановления заводской прошивки на роутере с 16 мегабайт флеша требуется скачать соответствующую прошивку с сайта netgear.**ru**, помеченную как "(только Россия и Китай)", на момент написания статьи последняя версия — 1.0.2.24. 
 +После этого требуется отрезать первые 128 байт с заголовком, и так же можно убрать один байт с конца с контрольной суммой. Сделать это можно такой командой:
 +
 +  tail -c +129 wnr2200-100-V1.0.2.24.img | head -c -1 > stripped.img
 +
 +Полученный файл stripped.img требуется перенести на роутер тем или иным способом, например через флешку или по scp. Если он находится в /tmp, команда записи будет примерно такой:
 +
 +  mtd -r write /tmp/stripped.img firmware
 +
 +После завершения этой команды роутер будет перезагружен (ключ -r). Перед прошивкой желательно убедиться, что файл прошивки начинается с байтов  32 32 30 30 (2200) и кончается байтами  de ad c0 de
 +
 +Так же, можно попробовать прошить эту же обрезанную прошивку через sysupgrade или веб-интерфейс OpenWRT.
 +
 +===== Восстановление запоротой прошивки =====
 +
 +Если роутер перестал загружаться, проще всего его восстановить через UART, для этого требуется разобрать корпус и подключить его как указано выше. Если всё подключено корректно вы должны увидеть примерно следующее:
 +
 +<code>
 +U-Boot 1.1.4-dirty (May 18 2011 - 08:43:35)
 +
 +WNR2200 (ar7241) U-boot dni13 V0.9.3
 +DRAM:  
 +sri
 +ar7240_ddr_initial_config(139): virian ddr1 init
 +#### TAP VALUE 1 = 0x2, 2 = 0x2 [0x0: 0x0]
 +64 MB
 +Top of RAM usable for U-Boot at: 84000000
 +Reserving 279k for U-Boot at: 83fb8000
 +Reserving 192k for malloc() at: 83f88000
 +Reserving 44 Bytes for Board Info at: 83f87fd4
 +Reserving 36 Bytes for Global Data at: 83f87fb0
 +Reserving 128k for boot params() at: 83f67fb0
 +Stack Pointer at: 83f67f98
 +Now running in RAM - U-Boot at: 83fb8000
 +id read 0xc22018
 +Finding MXIC Flash. ID c22018
 +flash size 16MB, sector count = 256
 +Flash: 16 MB
 +calData0:9fff1000:a55a
 +calData1:9fff1000:a55a
 +In:    serial
 +Out:   serial
 +Err:   serial
 +Net:   ag7240_enet_initialize...
 +Fetching MAC Address from 0x9fff0000
 +Fetching MAC Address from 0x9fff0006
 +Virian MDC CFG Value ==> 4
 +: cfg1 0xf cfg2 0x7014
 +eth0: 00:11:22:33:44:55
 +eth0 up
 +Virian MDC CFG Value ==> 4
 +: cfg1 0xf cfg2 0x7214
 +eth1: 00:11:22:33:44:54
 +ATHRS26: resetting s26
 +ATHRS26: s26 reset done
 +eth1 up
 +eth0, eth1
 +Trying eth1
 +dup 1 speed 1000
 +
 + Client starts...[Listening] for ADVERTISE...TTT
 +Retry count exceeded; boot the image as usual
 +
 + nmrp server is stopped or failed !
 +Hit any key to stop autoboot: 
 +   Verifying Checksum ... OK
 +### SQUASHFS loading 'image/uImage' to 0x80800000
 +### SQUASHFS load complete: 902346 bytes loaded to 0x80800000
 +## Booting image at 80800000 ...
 +   Image Name:   Linux Kernel Image
 +   Created:      2012-09-06   7:35:06 UTC
 +   Image Type:   MIPS Linux Kernel Image (lzma compressed)
 +   Data Size:    902282 Bytes = 881.1 kB
 +   Load Address: 80002000
 +   Entry Point:  80294000
 +   Verifying Checksum ... OK
 +   Uncompressing Kernel Image ... OK
 +No initrd
 +## Transferring control to Linux (at address 80294000) ...
 +## Giving linux memsize in bytes, 67108864
 +
 +Starting kernel ...
 +</code>
 +
 +При этом вам даётся несколько секунд чтобы нажать любую клавишу на надписи "Hit any key to stop autoboot". Если это сделать вы попадаете в интерфейс U-boot в котором доступны следующие команды:
 +<code>
 +ar7240> help    
 +autoscr - run script from memory
 +?       - alias for 'help'
 +base    - print or set address offset
 +bdinfo  - print Board Info structure
 +boot    - boot default, i.e., run 'bootcmd'
 +bootd   - boot default, i.e., run 'bootcmd'
 +bootelf - Boot from an ELF image in memory
 +bootm   - boot application image from memory
 +bootp   - boot image via network using BootP/TFTP protocol
 +bootvx  - Boot vxWorks from an ELF image
 +cmp     - memory compare
 +coninfo - print console devices and information
 +cp      - memory copy
 +crc32   - checksum calculation
 +fls    - Set to change DDR settings on reboot
 +dhcp    - invoke DHCP client to obtain IP/boot params
 +echo    - echo args to console
 +erase   - erase FLASH memory
 +ethreg    - S26 PHY Reg rd/wr  utility
 +exit    - exit script
 +flinfo  - print FLASH memory information
 +fls    - Set to change Flash size on reboot
 +fsinfo  - print information about filesystems
 +fsload  - load binary file from a filesystem image
 +go      - start application at address 'addr'
 +help    - print online help
 +iminfo  - print header information for application image
 +imls    - list all images found in flash
 +itest   - return true/false on integer compare
 +loadb   - load binary file over serial line (kermit mode)
 +loads   - load S-Record file over serial line
 +loady   - load binary file over serial line (ymodem mode)
 +loop    - infinite loop on address range
 +ls      - list files in a directory (default /)
 +macset - Set ethernet MAC address
 +macshow - Show ethernet MAC addresses
 +md      - memory display
 +mii     - MII utility commands
 +mm      - memory modify (auto-incrementing)
 +mtest   - simple RAM test
 +mw      - memory write (fill)
 +nfs     - boot image via network using NFS protocol
 +nm      - memory modify (constant address)
 +pci     - list and access PCI Configuration Space
 +ping    - send ICMP ECHO_REQUEST to network host
 +pll    - Set to change CPU/AHB/DDR speeds
 +printenv- print environment variables
 +progmac - Set ethernet MAC addresses
 +protect - enable or disable FLASH write protection
 +rarpboot- boot image via network using RARP/TFTP protocol
 +reset   - Perform RESET of the CPU
 +rnset   - set region number
 +rnshow  - Show Region Number on Board
 +run     - run commands in an environment variable
 +saveenv - save environment variables to persistent storage
 +setenv  - set environment variables
 +sleep   - delay execution for some time
 +snset   - set serial number
 +test    - minimal test like /bin/sh
 +tftpboot- boot image via network using TFTP protocol
 +version - print monitor version
 +wmacset - Set wlan MAC address
 +wpspinset - set wpspin number
 +</code>
 +
 +С помощью этих команд можно загрузить образ прошивки по сети или UART и прошить его в флеш или сразу загрузить (вариант прошивки openwrt...initramfs-kernel.bin)
 +
 +Если же нет возможности применить UART, то в самом начале загрузки видна надпись:  
 +  nmrp server is stopped or failed !
 +
 +Из чего следует, что при отсутствии доступа к UART можно восстановить прошивку на стадии начальной загрузки по   [[http://www.chubb.wattle.id.au/PeterChubb/nmrp.html|протоколу NMRP]].
 +
 +На роутере автора настоящей статьи прошивка по способу из английской версии (включить, зажав Reset и отправить файл на tftp-сервер) не принесла результатов. Возможно, дело в разных версиях загрузчика.
 +
 +===== Альтернативный загрузчик =====
 +
 +Для WNR2200 и других подобных роутеров существует версия U-Boot, собираемая из исходников: https://github.com/realmicu/uboot-wnrmod2k
 +Она может пригодиться при замене микросхемы флеш памяти на другой объём или старый загрузчик был перезаписан.
 +Обновление загрузчика является опасной процедурой и если её запороть, то придётся прошивать микросхему внешним программатором.
 +
 +
 +===== Альтернативный способ прошивки (старое содержимое страницы) =====
 +
 +1. Прошиваем wnr2200-webflash.bin с сайта dd-wrt через интерфейс оригинальной прошивки.
 +
 +2. Настраиваем подключение Internet, либо создаем локальный http/ftp сервер.
 +
 +3. Подключаемся telnet на роутер либо через http в диагностике выполняем команды:
 +
 +   wget -c -O /tmp/openwrt.bin http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-wnr2200-squashfs-sysupgrade.bin
 +   mtd -r write /tmp/openwrt.bin linux
  • Last modified: 2024/02/11 21:58
  • by 127.0.0.1