2

TL-WDR4310刷OpenWrt固件

 2 years ago
source link: https://www.red-yellow.net/tl-wdr4310%E5%88%B7openwrt%E5%9B%BA%E4%BB%B6.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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-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
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
make menuconfig

按下图配置,并添加上Luci支持:

TL-WDR4310刷OpenWrt固件-1

再运行编译命令:

make -j1 V=s
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
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;
// 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
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|\
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|\
tplink,tl-wdr4310-v1|\
tplink,tl-wdr4310-v1-16|\
make menuconfig
make menuconfig

按下图显示进行配置,同时请添加Luci支持:

TL-WDR4310刷OpenWrt固件-2

最后执行编译命令:

make -j1 V=s
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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK