在OpenWrt官网上,其实有TL-WDR4310刷OpenWrt固件的方法,该方法参考了TL-WDR4300路由器的刷机过程,但是总的来说整个过程还是相当复杂的。而今天我们要换一种方法,而且我们也会把原机的8M闪存给换成16M的,这样后续就可以安装更多的应用,当然这个方法需要操作者懂一点硬件及编程知识,因为需要拆机硬改。
1、硬改16M闪存
TL-WDR4310是8M+128M的配置,内存128M是够用的,但8M闪存略显窘迫,因此我们要将8M闪存换成16M的。
1)拆开机子,然后从主板上焊下8M闪存芯片,然后用编程器将8M闪存芯片里面的内容读出并保存备用。
2)再拿一块16M芯片,用编程器将对应的Breed引导程序(breed-ar9344-r1163.bin)写入。
3)再将16M闪存芯片焊到主板上,通电后测试正常就可以将机子恢复。
2、刷入OpenWrt系统
先要准备两样东西,一是16M的OpenWrt固件,还有一个是无线双频的ART文件:
1)16M的OpenWrt固件我们需要自编译,因为官方可直接下载的是8M的固件。在自编译环境中,修改如下文件:
~/target/linux/ar71xx/image/generic-tp-link.mk
将其中的
define Device/tl-wdr3500-v1 $(Device/tplink-8mlzma) DEVICE_TITLE := TP-LINK TL-WDR3500 v1 DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport BOARDNAME := TL-WDR3500 DEVICE_PROFILE := TLWDR4300 TPLINK_HWID := 0x35000001 endef TARGET_DEVICES += tl-wdr3500-v1x
修改为
define Device/tl-wdr3500-v1 $(Device/tplink-16mlzma) DEVICE_TITLE := TP-LINK TL-WDR3500 v1 DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport BOARDNAME := TL-WDR3500 DEVICE_PROFILE := TLWDR4300 TPLINK_HWID := 0x35000001 endef TARGET_DEVICES += tl-wdr3500-v1
将修改后的文件保存退出。
make menuconfig
按下图配置,并添加上Luci支持:
再运行编译命令:
make -j1 V=s
长时间编译完成后,你就会在相应的目录下发现自编译生成的固件:~/bin/targets/ar71xx/generic/openwrt-ar71xx-generic-tl-wdr4310-v1-squashfs-factory.bin
Ps:以上我们是在ar71xx目录进行的自编译过程,如果放到最新的ath79目录下,则编译过程会稍微复杂一些:
我们以新增16M路由器为例进行说明,定义设备名为:tplink_tl-wdr4310-v1-16,显示设备名为:TP-Link TL-WDR4310 v1 16M
先在~/target/linux/ath79/image/generic-tp-link.mk 文件里添加新设备编译项:
define Device/tplink_tl-wdr4310-v1-16 $(Device/tplink-16mlzma) ATH_SOC := ar9344 DEVICE_TITLE := TP-Link TL-WDR4310 v1 16M DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport TPLINK_HWID := 0x43100001 SUPPORTED_DEVICES += tl-wdr4300 endef TARGET_DEVICES += tplink_tl-wdr4310-v1-16
再在~/target/linux/ath79/dts/ 目录下,增加文件 ar9344_tplink_tl-wdr4310-v1-16.dts,然后将如下内容写入新建的dts文件内(这是16M闪存识别及分区的关键):
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; #include "ar9344_tplink_tl-wdr4300.dtsi" / { model = "TP-Link TL-WDR4310 v1 16M"; compatible = "tplink,tl-wdr4310-v1", "qca,ar9344"; }; &spi { num-cs = <1>; status = "okay"; flash@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <25000000>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; uboot: partition@0 { label = "u-boot"; reg = <0x000000 0x020000>; read-only; }; partition@20000 { compatible = "tplink,firmware"; label = "firmware"; reg = <0x020000 0xfd0000>; }; /delete-node/ partition@7f0000; art: partition@ff0000 { label = "art"; reg = <0xff0000 0x010000>; read-only; }; }; }; };
再在相应的文件内添加新增路由器的设备定义名:
grep -r "tplink,tl-wdr4310-v1|" target
显示需要修改的文件:
target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom: tplink,tl-wdr4310-v1|\ target/linux/ath79/base-files/etc/uci-defaults/04_led_migration:tplink,tl-wdr4310-v1|\ target/linux/ath79/base-files/etc/board.d/02_network: tplink,tl-wdr4310-v1|\
逐一打开上面三个文件,然后在 tplink,tl-wdr4310-v1|\ 行下添加 tplink,tl-wdr4310-v1-16|\,即
tplink,tl-wdr4310-v1|\ tplink,tl-wdr4310-v1-16|\
再执行
make menuconfig
按下图显示进行配置,同时请添加Luci支持:
最后执行编译命令:
make -j1 V=s
等编译完成,你可以在下面的目录里发现对应的固件文件:~/bin/targets/ath79/generic/openwrt-ath79-generic-tplink_tl-wdr4310-v1-16-squashfs-factory.bin
2)利用ART样本文件及8M原始固件生成本机专用的ART文件
先用HxD编辑器打开ART样本文件:art-ar9344-ar9580.bin(2.4G是CPU自带,5G芯片是ar9580),再打开8M原始固件,通过字节对比将原始文件中的2.4G、5G无线校正参数替换样本文件中对应的数据,生成适合本机的特殊ART文件。此过程可具体参考从原始Flash中提取ART文件一文。
3)通过Breed Web界面,输入pin码及mac地址,再输入自编译16M的OpenWrt固件及专用的ART文件,点固件更新,机子重启就一切OK了。具体可参考WR886N_V5刷OpenWrt固件一文。