今天要讲的内容虽然还是固件自编译的范畴,但比一般的固件自编译方法要稍微复杂一些,因为它是在系统源码上要新增一个路由器设备支持。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。
另外,由于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 中选项中已出现
继续加上自己认为需要用到的应用程序,保存 .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界面:
另外,新固件可以发邮件到 hzshw@hz.cn 索取,Breed及art模板你可以在 下载中心 下载(百度网盘提取码为:lyzt)。