TL-WDR4310刷OpenWrt固件

在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支持:

TL-WDR4310刷OpenWrt固件-1

再运行编译命令:

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支持:

TL-WDR4310刷OpenWrt固件-2

最后执行编译命令:

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固件一文。

TL-WDR4310刷OpenWrt固件-3

TL-WDR4310刷OpenWrt固件-4

TL-WDR4310刷OpenWrt固件-5