TP-LINK 845N V1硬改16M Flash,64M RAM,刮U刷OpenWRT

2016年6月1日

TP-LINK 845N V1与TP-LINK 841N V8硬件部分基本一样,差别在于Flash、RAM容量。手头的TP-LINK 845N V1的Flash是2M的Winbond 25Q16BVSIG,RAM是16M的Zentel A3S28D40FTP-G5。平常运行不算稳定,特别夏天的时候无线很容易挂掉。学了一段时间OpenWRT以后决定对路由器进行软硬件方面的修改。硬件方面把RAM换成64M的HY5DU121622DTP-D43,Flash换成16M的MX25L12835F,引出USB接口,USB供电使用LM2596可调降压模块。软件方面自己ubuntu下修改编译支持845N V1的OpenWRT固件。

一、硬改部分

先换内存,换上以后再测试是否还能正常启动,如果不能正常启动有可能是内存芯片没焊好,还有可能是电路板少了R63这颗贴片电阻。因当时焊了几次内存都不行,google了下845N V1的拆机图,跟图对比的下发现少了R63这个电阻,阻值不清楚,参考R62阻值51Ω,焊到R63上,结果开机OK。(手头的贴片电阻没那么小的,用了一个大一点点的贴片电阻+0Ω电阻立起来焊接),如下图:
f27548d427d91d9a
内存换成功以后,就可以开始换Flash。先拆掉原来的flash芯片,用CH341A编程器读出原有的固件。目的是要得到art无线校正数据。为了无线能正常工作,art数据是必须的,art数据在原固件的最后64KiB部分。然后编译出来的uboot、openwrt factory固件、art数据合成一个完整的16MiB的编程器固件(uboot、openwrt编译以及合并成编程器固件见第二部分),用编程器刷入flash芯片换上。正常无误的话上电就能启动openwrt系统了。
接着就是刮出USB的D+、D-引线。取下散热片。845N V1用的CPU是AR9341。查datasheet和网络上找的图,确定usb引脚的位置,如下图:

62e72dcfc1ff4e88

2fc976518076377e

3d68341604ad6069

用美工刀慢慢的刮,本人第一次刮没什么经验,花了2个钟头才刮好。挖开后,用0.1毫米的漆包线焊接,将D+、D-引出。注意:引脚非常小,焊完用万用表量下是否短路或者是否有焊接上。D+、D-跟D-旁边那根线间电阻,本人量的下貌似都是几兆欧。

d1183a41f45989e0

引出usb数据线后,接上LM2596电源模块和USB母口,USB母口的外壳接地,调整usb电源模块输出5V。接线图如下:

1b5852bbc1c613eb

usb的D+、D-引出后,换好点的粗线,然后热熔胶粘上:

a3ad09a789409907

最后整体图:

c3bd17c85aae45fb

接线都完成后,上电待系统启动完成,ssh登录路由。插上u盘,ls /dev看看有没有识别到u盘。也可以用dmesg命令查看内核调试信息,这之中就有会有跟usb相关的信息。

二、软改部分

OpenWRT没有原生支持TP-LINK 845N V1,只因Flash、RAM太小了。因此软件部分必须自己修改编译。从svn co svn://svn.openwrt.org/openwrt/trunk/下载源码。版本r40804。2014年5月21日下载好的。

2.1、修改target/linux/ar71xx/generic/profiles/tp-link.mk,找到$(eval $(call Profile,TLWR842)),在此之下添加:

2.2、修改target/linux/ar71xx/base-files/lib/ar71xx.sh,找到

在此之下添加:

再找到:

在此之下添加:

2.3、修改target/linux/ar71xx/base-files/lib/upgrade/platform.sh,找到

在此之下添加:

2.4、修改arget/linux/ar71xx/base-files/etc/uci-defaults/01_leds,找到

在此之上(是这之上),添加

注:这里用845N V1的QSS那个灯(就是最后一个锁标志的那个)来当USB的指示灯。因刷openwrt后qss灯基本没有用处,因此可以当usb指示灯用。另外lan1、lan2、lan3、lan4的端口顺序依次是0x02、0x04、0x08、0x10,否则导致led灯与路由器后面的wan、lan口对应不上。部分信息可参看后面的mach-tl-wr845n-v1.c文件。

2.5、修改target/linux/ar71xx/base-files/etc/uci-defaults/02_network,找到

在此之下添加

2.6、修改target/linux/ar71xx/base-files/etc/diag.sh,找到

在此之下添加

2.7、修改target/linux/ar71xx/image/Makefile,找到

在此之下添加

注:因使用的是16M的Flash,所以是16Mlzma。然后再找到

在此之下添加

2.8、修改target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx,找到

在此之下添加

2.9、修改target/linux/ar71xx/config-3.10,找到

在此之下添加

2.10、在target/linux/ar71xx/files/arch/mips/ath79/下新建文件mach-tl-wr845n-v1.c,文件内容如下:

2.11、修改tools/firmware-utils/src/mktplinkfw.c,添加“HWID_TL_WR845N_V1”宏定义,然后将16M的布局中的fw_max_len都改成0xfc0000,如下所示:

然后再在boards数组中找到

在此之上(注:之上)添加一条845Nv1相关部分的代码,修改后如下:

2.12、在target/linux/ar71xx/patches-3.10/下创建文件999-MIPS-ath79-add-845nv1-support.patch,文件内容如下:

至此文件都修改完成。make menuconfig,对编译前进行配置。

三、制作编程器固件

拷贝uboot_for_tp-link_tl-wr841n_v8.bin为uboot.bin并用0xFF填充成128KiB大小。在0x1fc00处填入6字节原路由器的mac地址。在0x1fd00处填入8字节数据08 45 00 01 00 00 00 01。在0x1fe00处填入原路由的pin码字符串(8字节)。845n v1的编程器固件=uboot.bin(128k)+openwrt-ar71xx-generic-tl-wr845n-v1-squashfs-factory.bin(16128k)+64k的0xFF填充+64k原路由的art,得到的固件刚好16M,直接用编程器烧录Flash芯片。

http://www.codeweblog.com/tp-link-845n-v1%E7%A1%AC%E6%94%B916m-flash-64m-ram-%E5%88%AEu%E5%88%B7openwrt/

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: TP-LINK 845N V1硬改16M Flash,64M RAM,刮U刷OpenWRT
本文的评论功能被关闭了.