这个方法适用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定义,启动到一半会失败,所以必须改。