给TP-LINK WDR8620 V3 编译openwrt23系统


风景悦人
原创
发布时间: 2026-04-18 17:11:16 | 阅读数 0收藏数 0评论数 0
封面
手中有一台TP-LINK WDR8620 V3路由器,看到网上有很多刷机的帖子,说刷后就像凤凰浴火涅槃重生,所以决定自己也刷一把,但是没有找到完善的固件,就研究了一下自己编译固件,今天写这个贴子记录一下,以备忘记时,可以再看看。

准备工作:

材料:

串口TTL线

1

准备工作

当你决定折腾你的路由器的时候一定得先备份你的原厂编程器固件,切记!切记!切记!


首先拆机找串口,很好找,一般4个孔的位置就是,焊机排针,连接串口线到电脑,RX--->TTL的TX,TX--->TTL的RX,GND直接互连。然后先备份你的原厂编程器固件。

2

刷u-boot

我开始是直接焊下来芯片上编程器的,其实也可以用串口直接烧写,我开始烧录的是网上下的歌华的这个,后来用用的水星MAC2600R的Pb-boot,串口烧录网上教程很多,一般都用secureCRT,这个路由器的串口有个特点,RX和TX都连接好的话啊,可能没有输出,后来发现,先把掉板子上的接收端,就是路由只发,电脑只收,等开机后迅速插上,就正常了,这个路由进UBOOT的打断命令是slp,刚开始时,输入的速度跟不上老进不去,后来干脆用STC的串口助手,打上slp,自动一直发送,直接就进去了,很方便。进去之后就好办了,网上搜命令把。

BIN
breed-mt7621-gehua-ghl-r-001.bin
103.52KB
BIN
pb-boot-mercury_mac2600r-20190317-61b6d33.bin
150.20KB
EXE
AiCube-ISP-v6.96C.exe
9.17MB
3

下载源码

首先从openwrt官网下载源码,我下的时23.05的,需要梯子,用命令:

git clone https://github.com/openwrt/openwrt

cd checkout v23.05.6



4

更新feeds

cd 到源码里,用命令:./scripts/feeds update -a 更新软件包索引。

然后用命令:./scripts/feeds install -a 更新软件包。

5

写DTS

在源码目录openwrt/target/linux/ramips/dts下,新建DTS文件,命名为你的板子。然后打开书写你的内容,附件中是我的DTS文件:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

#include "mt7621.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
compatible = "tplink,tl-wdr8620-v3", "mediatek,mt7621-soc";
model = "TP-Link TL-WDR8620 v3";

aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_power;
label-mac-device = &gmac0;
};

chosen {
bootargs = "console=ttyS0,115200";
};

leds {
compatible = "gpio-leds";

led_power: power {
label = "tl-wdr8620-v3:blue:power";
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};
};

keys {
compatible = "gpio-keys";

reset {
label = "reset";
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
};
};

&spi0 {
status = "okay";

flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <80000000>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};

partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
read-only;
};

art: partition@40000 {
label = "art";
reg = <0x40000 0x10000>;
read-only;
};

partition@50000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x50000 0xfb0000>;
};
};
};
};

&pcie {
status = "okay";
};

&pcie0 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&art 0x0>;


ieee80211-freq-limit = <2400000 2500000>;
};
};

&pcie1 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&art 0x8000>;


ieee80211-freq-limit = <5000000 6000000>;
};
};



&gmac0 {
nvmem-cells = <&macaddr_e000>;
nvmem-cell-names = "mac-address";
};

&switch0 {
ports {
port@0 {
status = "okay";
label = "wan";
nvmem-cells = <&macaddr_e000>;
nvmem-cell-names = "mac-address";
mac-address-increment = <1>;
};
port@1 {
status = "okay";
label = "lan1";
};
port@2 {
status = "okay";
label = "lan2";
};
port@3 {
status = "okay";
label = "lan3";
};
port@4 {
status = "okay";
label = "lan4";
};
};
};

&state_default {
gpio {
groups = "i2c", "uart3";
function = "gpio";
};
};


&art {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;

macaddr_e000: macaddr@e000 {
reg = <0xe000 0x6>;
};
};




6

写.mk文件

在源码目录~/openwrt/target/linux/ramips/image下,vim打开mt7621.mk文件,在文件的最末尾补写你板子的描述:

define Device/tplink_wdr8620-v3

$(Device/dsa-migration)

$(Device/uimage-lzma-loader)

IMAGE_SIZE := 16064k

DEVICE_VENDOR := TP-Link

DEVICE_MODEL := WDR8620

DEVICE_VARIANT := v3

DEVICE_PACKAGES := kmod-mt7615e kmod-mt7615-firmware wpad-basic-mbedtls

TPLINK_BOARD_ID := WDR8620-V3

endef

TARGET_DEVICES += tplink_wdr8620-v3




7

编译

在源码包目录openwrt下:输入命令:make menuconfig ,打开菜单对话框,按图选择,设置语言为中文: LuCI > Modules > Translations > <*> Chinese Simplified (zh_Hans) ,保存退出。然后命令行输入make -j5 V=s 命令开始编译,其中5代表的是你用几个内核来编译,一般设置你系统的内核数加1即可。

8

制作eeprom

用winhex打开上步骤保存的原固件文件,再用winhex新建一个64K的新文件,CTRL+A全选,右键编辑->填充选快,全部填充FF如图1。复制原固件0x2E000至0x2E3FF的数据(选正常)写入到新文件的开头0x00。复制原固件0x2F000至0x2F3FF的数据到新文件的0x8000

在原固件中复制0x1D80D位置开始的6个字节数据,这个是LAN的mac地址。

计算其他MAC: WAN MAC=LAN+1,2.4G MAC = LAN+2,5G MAC = LAN+3

2.4G 从0x0004 写入,5G 从0x8004写入,LAN 从0xE000写入,WAN 从0xE006写入。

最后保存文件为eeeeprom.bin。借用教程:水星MAC2600R刷潘多拉盒-DOIT社区


9

刷机

按住rest按键上电开机,浏览器输入:192.168.1.1 打开刷机页面刷机,等待刷机完成,刷新浏览器页面进入openwrt系统。

用SecureCRT软件把你做好的eeprom.bin拖拉到路由器的/tmp下。

在SSH中用命令把你做好的eeprom写到art分区中:

mtd write /tmp/eeprom.bin art

然后重启路由器。

我编译的这个系统感觉哪里还有bug,网速不快,后面再优化DTS.

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报