这个方法适用TPLink WR941ND V1/V2/V3和WR841ND V3路由器,22.03.0版本的openwrt。需要修改以下两个文件
1.target/linux/ath79/dts/ar9132_tplink_tl-wr941-v2.dts
&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 0x20000>;
read-only;
};
partition@20000 {
compatible = "tplink,firmware";
label = "firmware";
reg = <0x020000 0x7d0000>;
};
art: partition@7f0000 {
label = "art";
reg = <0x7f0000 0x10000>;
read-only;
};
};
};
};
partition@20000下reg = <0x020000 0x3d0000>;改为reg = <0x020000 0x7d0000>;
art: partition@3f0000改为art: partition@7f0000
art: partition下reg = <0x3f0000 0x10000>;改为reg = <0x7f0000 0x10000>;
2.target/linux/ath79/image/tiny-tp-link.mk
define Device/tplink_tl-wr941-v2 $(Device/tplink-8m) SOC := ar9132 DEVICE_MODEL := TL-WR941ND DEVICE_VARIANT := v2/v3 DEVICE_ALT0_VENDOR := TP-Link DEVICE_ALT0_MODEL := TL-WR941N DEVICE_ALT0_VARIANT := v2/v3 TPLINK_HWID := 0x09410002 TPLINK_HWREV := 2 SUPPORTED_DEVICES += tl-wr941nd endef TARGET_DEVICES += tplink_tl-wr941-v2
$(Device/tplink-4m)改为$(Device/tplink-8m),注意一点,原本是4m的,不能改成4mlzma或者8mlzma,错误修改后bootloader加载内核时会报错。
然后正常编译就可以了,以前的18.06及以前的版本,如果编译出来的包没有超过3712kb,就可以不改flash定义,系统启动后会自动更新flash大小,2203版本的包编译出来有5m了,如果不改flash定义,启动到一半会失败,所以必须改。