给TP-LINK WR866N V5 刷openwrt24.10固件


风景悦人
原创
发布时间: 2026-04-25 16:38:08 | 阅读数 0收藏数 0评论数 0
封面
这两天对编译openwrt固件研究了一翻,有点兴趣,遂把一个古董路由器适配了一下新系统。记录一下编译以及刷机过程。以备忘记。

准备工作:

材料:

TTL串口线

1

我的路由器现状

这个路由器是很早之前的了,它已经硬改为16M闪存,64M内存,以及刷有breed,所以我这里直接刷新编译的固件即可。

BIN
breed-tp9343.bin
89.49KB
2

接串口

按上图焊接一个4P端子,连接串口线,方便后续跟踪系统进程。

3

DTS文件

前面写过几个布置编译环境的帖子,这里就不在赘述。我把最主要的两个文件贴上去,大家自己编译即可。

在 openwrt/target/linux/ath79/dts 下新建文件 tp9343_tplink_tl-wr886n-v5.dts,写上以下内容:

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

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

/ {
compatible = "tplink,tl-wr886n-v5", "qca,tp9343";
model = "TP-Link TL-WR886N v5";




aliases {
led-boot = &led_system;
led-failsafe = &led_system;
led-running = &led_system;
led-upgrade = &led_system;
label-mac-device = &wmac;
};

leds {
compatible = "gpio-leds";

led_system: system {
label = "green:system";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>; // 典型 GPIO14
default-state = "on";
};

};

keys {
compatible = "gpio-keys";

reset {
label = "reset";
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
debounce-interval = <60>;
};
};

ath9k-caldata {
compatible = "qca,ath9k-caldata";
#address-cells = <1>;
#size-cells = <1>;
calibration = <&cal_art_1000>;
};
};

&spi {
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;

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

macaddr_uboot_1fc00: macaddr@1fc00 {
compatible = "mac-base";
reg = <0x1fc00 0x6>;
#nvmem-cell-cells = <1>;
};
};
};

partition@20000 {
compatible = "tplink,firmware";
label = "firmware";
reg = <0x020000 0xfd0000>;
};

partition@ff0000 {
label = "art";
reg = <0xff0000 0x010000>;
read-only;

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

cal_art_1000: calibration@1000 {
reg = <0x1000 0x440>;
};
};
};
};
};
};

&eth0 {
status = "okay";

phy-handle = <&swphy4>;
phy-mode = "mii";

nvmem-cells = <&macaddr_uboot_1fc00 1>;
nvmem-cell-names = "mac-address";
};

&eth1 {
status = "okay";

// 外部 WAN PHY,地址通常为 0
phy-handle = <&phy0>;
phy-mode = "mii";

nvmem-cells = <&macaddr_uboot_1fc00 0>;
nvmem-cell-names = "mac-address";
};



&mdio0 {
status = "okay";

phy0: phy@0 {
reg = <0>;
phy-mode = "mii";
};

// 内部交换机 PHY 定义(由 qca953x.dtsi 提供)
// swphy4 是由父级 dtsi 定义好的,此处无需重复
};

&wmac {
status = "okay";

nvmem-cells = <&macaddr_uboot_1fc00 2>, <&cal_art_1000>;
nvmem-cell-names = "mac-address", "calibration";
};


4

编写.mk文件

用vim命令打开openwrt/target/linux/ath79/image/generic-tp-link.mk 文件,在最下方不是以下内容:

define Device/tplink_tl-wr886n-v5
$(Device/tplink-16mlzma)
SOC := tp9343
DEVICE_MODEL := TL-WR886N
DEVICE_VARIANT := v5
TPLINK_BOARD_ID := TL-WR886N-V5
DEVICE_PACKAGES := kmod-ath9k
IMAGE_SIZE := 16064k
endef
TARGET_DEVICES += tplink_tl-wr886n-v5


5

配置menuconfig

用make menuconfig 打开配置页面,按图选择CPU类型,型号,板子型号。

自己再添加一个LUCI界面,在其中再添加中文就可以了。(用*号选中)

保存退出,make -j5 V=s 编译即可。

6

制作eeprom

用winhex打开你的原厂固件,复制从20800到20C3F的数据,再新建一个64K的hex文件,把刚才的数据写入到1000处,然后保存为eeprom.bin文件。也叫art.bin.

7

刷机

编译好的的文件会在openwrt/bin/targets/ath79/generic/下,sysupgrade,是常规固件刷这个。

按住路由器reset按键不放,上电开机,等LED灯闪烁松手。

在浏览器上输入192.168.1.1进入刷机页面,选择你的固件,选择你的eeprom文件,更新。

更新重启后,在浏览器上输入192.168.1.1进入openwrt页面,默认密码:admin

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