TL-wdr7400-v2刷OpenWrt系统

今天要讲的内容虽然还是固件自编译的范畴,但比一般的固件自编译方法要稍微复杂一些,因为它是在系统源码上要新增一个路由器设备支持。Tl-wdr7400-v2路由器在OpenWrt官方源码及Lean大第三方源码上都不提供支持,大部分的人都会退而求其次,选择直接刷Tl-wdr6500-v2路由器的官方固件替代,但是刷完之后你会发现路由器系统指示灯的指示是不正确的,系统里所有路由器型号的显示都是wdr6500-v2,虽然基本的路由功能正常,但是你总会觉得是怪怪的,所以今天我们就要来编译一个完全属于wdr7400-v2路由器的固件。同时为方便大家实际操作,我会把Tl-wdr7400-v2刷OpenWrt系统的整个过程都分享给大家。

一、生成Tl-wdr7400-v2的固件

英文没问题的,可以先参考OpenWrt的官方说明材料:

https://openwrt.org/docs/guide-developer/adding_new_device

1、准备OpenWrt官方源码环境

具体可参考OpenWrt系统固件自编译的两种方法

官方固件自编译源码环境建好之后,还需要明确须编译固件的OpenWrt版本号:

cd openwrt
git pull
git tag
git branch   # 检查一下目前所处的版本号,若与你要编译的版本号不符,则运行下面的语句
git checkout v19.07.7   # 以编译v19.07.7版本为例
./scripts/feeds update -a
./scripts/feeds install -a
2、以wdr6500-v2为样本,添加新设备wdr7400-v2

先在源码编译环境中,找到所有与wdr6500-v2固件编译相关的文件:

grep -lri wdr6500 target/

你会发现如下文件列表:

target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ar71xx/base-files/etc/board.d/01_leds
target/linux/ar71xx/base-files/etc/board.d/02_network
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/image/generic-tp-link.mk
target/linux/ar71xx/generic/config-default
target/linux/ar71xx/config-4.14
target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr6500-v2.c
target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
target/linux/ar71xx/files/arch/mips/ath79/Makefile

以上文件中,除 mach-tl-wdr6500-v2.c 文件外,其它文件都执行的是修改任务,就是打开原文件,然后在有wdr6500的地方依葫芦画瓢添加wdr7400的内容,然后将修改后文件保存即可。

以 Makefile 文件为例,就是在wdr6500的相关语句下面添加一条wdr7400的语句:

obj-$(CONFIG_ATH79_MACH_TL_WDR6500_V2)		+= mach-tl-wdr6500-v2.o
obj-$(CONFIG_ATH79_MACH_TL_WDR7400_V2)		+= mach-tl-wdr7400-v2.o

mach-tl-wdr6500-v2.c 部分则是新增一个文件 mach-tl-wdr7400-v2.c ,里面的内容还是拷贝 mach-tl-wdr6500-v2.c 的,但是将里面wdr6500的内容都换成wdr7400。

TL-wdr7400-v2刷OpenWrt系统-1

另外,由于wdr7400-v2与wdr6500-v2系统指示灯高低电平点亮的方式刚好是反的,所以还需要做如下变更:

{
        .name		= "tp-link:white:system",
        .gpio		= TL_WDR7400_V2_GPIO_LED_SYS,
        .active_low	= 0,
    },

修改为

{
        .name		= "tp-link:white:system",
        .gpio		= TL_WDR7400_V2_GPIO_LED_SYS,
        .active_low	= 1,
    },
3、编译新设备固件
rm -rf tmp
touch target/linux/*/Makefile
make menuconfig

你会发现新添加的设备在 .config 中选项中已出现

TL-wdr7400-v2刷OpenWrt系统-2

继续加上自己认为需要用到的应用程序,保存 .config 文件就可以进入编译过程了。

make -j$((`nproc` + 1)) V=s

编译完成后,你就会在 ~/bin/targets/ar71xx/generic 目录下发现Tl-wdr7400-v2的固件了:

openwrt-ar71xx-generic-tl-wdr7400-v2-squashfs-factory.bin

二、TL-wdr7400-v2刷OpenWrt系统
1、先刷入Breed

拆机刷Breed的过程这里略去,不清楚的可参考 WR886N_V5刷OpenWrt固件

不过这里有两点要特别强调一下:

1)Breed就选用wdr6500-v2型号的即可;

breed-qca9561-wdr6500v2-r1080.bin

2)art不能采用wdr6500-v2的模板,5G参数地址需要进行修改,否则会导致5G无线网络无法使用;

具体可参考这个网站说明:https://www.right.com.cn/forum/thread-504335-1-1.html

3)建议将原8M闪存换成16M的,否则很多应用程序都可能因为没有空间而无法安装,可玩性变差。

2、刷入新固件

Breed刷入新固件的过程已讲解多次,这里不再累述,就直接看刷好以后的Luci界面:

TL-wdr7400-v2刷OpenWrt系统-3

另外,新固件可以发邮件到 hzshw@hz.cn 索取,Breed及art模板你可以在 下载中心 下载(百度网盘提取码为:lyzt)。