下面说一下怎么提取 ART 数据以及制作编程器固件
这个路由器使用的是 VxWorks 系统,其 ART 数据位置自然和 Linux 系统下的不同。
首先用编程器备份固件(可以在 http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=123996 下载)
然后用 WinHex 之类的 16进制编辑器打开。
这个固件的 FLASH 布局如下:
------------------------------------------------------------------
Bootloader VxWorks NVRAM Board_Config
64KB 912KB 32KB 16KB
-------------------------------------------------------------------
用 WinHex 定位到最后 16KB 处(000FC000),这里应该是以 rong 开头的
向下到 000FE000,这里开始的6字节数据和从000FE008开始的6字节数据是路由器两个以太网卡(eth0/WAN eth1/LAN)的MAC地址
000FE010 开始的8个字节的字符串是路由器的PIN
然后向下到 000FF010,从这里开始是 ART 数据,以 0x0202 开头,共 0x440 字节(1088 字节)。P.S. ART 数据从第3个字节开始的6个字节是这个无线网卡的MAC地址
将数据写入新 FLASH 中
由于新 Flash 刷 DD-WRT 或 OpenWrt,因此 Bootloader 是 U-Boot。
用 WinHex 新建 8M 的空白文件,全部填充为 FF。
U-Boot 占用 Flash 开头的前 0x20000 字节。
将 第一个 MAC 地址写入 0x1FC00 处,将第二个 MAC 地址写入 0X1FC06处(可选)。
将 PIN 写入 0x1FE00 处。
Linux 下的无线驱动是 ath9k,它要求 ART 数据位于 Flash 的最后 64KB 中。
但是不能直接将 ART 数据写在最后 64KB 的起始位置。ART 数据位于 最后 64KB 起始向下 0x1000 处。
4M Flash 应写在 0x3F1000 处;
8M Flash 应写在 0x7F1000 处;
16M Flash 应写在 0xFF1000 处。
写入 DD-WRT 固件
随便找一个 AR9331 芯片的固件写入就行,例如 WR740N v4 的固件。
下载固件后注意如果固件开头数据为"HDR0",则需将文件头部的前 0x1C 的数据去掉 (主要是 DD-WRT 的 webflash 固件)。
OpenWrt 的 factory 固件和 DD-WRT 的 factory 固件可以直接刷。
真正写入 Flash 的固件是以 01 00 00 00 开头的.
固件写入 Flash 的 0x20000 处。
写入 U-Boot
这个嘛,在论坛里随便找一个 WR703 的 U-Boot 写入即可,但注意不要覆盖掉 MAC 和 PIN。
------------------------------------------------------------------------
以上步骤都完成后,就可以用编程器将数据写入 Flash 芯片了。
然后开机测试。。。
由于 U-Boot 和固件对应的机型不同,因此路由器的灯都不会亮,但这并不影响使用。
经测试功能全部正常。
唯一个问题是路由器的 WAN 口变成了 LAN1 口,而 LAN1 口变为了 WAN 口。
测试发现是 ag71xx 以太网卡驱动造成的。换成 ag7240_mod 驱动则顺序正常,但无法使用 VLAN 功能。
=========================================================================
坑人的tp,刷了新版固件TL-WR740N V5V6V7_121024标准版.rar,无法刷710。
load -img 192.168.1.100 wr740nv5-cn-up.bin (下载命令)
flash -erase 0x40000 0x1c0000(擦除命令)
试了几天,这两个命令可以用,就是不知到写入命令。
求高人帮忙
Version: 2.0
Name: FlashApi
Total Szie(K): 2048
Erase Sector Szie(K): 64
Block Num: 6.
===========================
Flash Layout:
|------------------------| 0x00000000(0K)
| |
|BOOT-IMG(256K) |
|------------------------| 0x00040000(256K)
| |
|APPLICATION(1536K) |
| |
|------------------------| 0x001c0000(1792K)
|USRCONF-DATA(64K) |
|-------------------------| 0x001d0000(1856K)
|LOG-DATA(64K) |
|------------------------| 0x001e0000(1920K)
|BSP-PROFILE(64K) |
|------------------------| 0x001f0000(1984K) 0x001f1000开始有数据
|RADIO(64K) |
|------------------------| 0x00200000(2048K)