自编译Tl-wr845n-v2的OpenWrt固件

自编译Tl-wr845n-v2的OpenWrt固件:个人觉得像tl-wr845n-v2这样比较老式的路由器,没有必要以新增路由器的方式来编译固件(因为那样太费时间和精力),只需要利用现成的相似路由器源码做简单修改来生成二次编译固件即可。虽然最后刷好的OpenWrt系统像型号等内容与实际不符,但是整体上各项功能都是正常的,安装各种应用也不会受任何的影响。

Tl-wr845n-v2 与 Tl-wr842n-v2 的系统匹配度非常高,而且OpenWrt目前最新的版本(v19.07.7)也支持wr842n-v2,因此利用wr842n-v2的源码做简单修改,再二次编译生成新的固件的方法是最高效的。

在tl-wr845n-v2硬改方面,还是跟以前一样,建议至少16M闪存/64M内存,否则即使刷了OpenWrt系统,可玩性也会大打折扣。具体操作方法可参考:WR886N-V5刷OpenWrt固件

一、需要修改的部分

很简单,只要修改两个文件即可:

1、~/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v8.c(注:wr842-v2的相应内容就包含在这个文件中)

ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);

修改为

ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
ath79_switch_data.phy_poll_mask = BIT(0);

修改为

ath79_switch_data.phy_poll_mask = BIT(4);
ath79_eth0_data.phy_mask = BIT(0);

修改为

ath79_eth0_data.phy_mask = BIT(4);

2、~/target/linux/ar71xx/base-files/etc/board.d/02_network

tl-mr3420-v2|\
tl-wr841n-v8|\
tl-wr842n-v2|\
tl-wr941nd-v5|\
tl-wr942n-v1)
    ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
    ucidef_add_switch "switch0" \
        "0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
    ;;

修改为

tl-mr3420-v2|\
tl-wr841n-v8|\
tl-wr842n-v2|\
tl-wr941nd-v5|\
tl-wr942n-v1)
    ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
    ucidef_add_switch "switch0" \
        "0@eth1" "1:lan:1" "2:lan:2" "3:lan:3" "4:lan:4"
    ;;
二、配置及编译
rm -rf tmp
make menuconfig

自编译Tl-wr845n-v2的OpenWrt固件-1

make -j1 V=s

二次编译生成的固件:~/bin/targets/ar71xx/generic/openwrt-ar71xx-generic-tl-wr842n-v2-squashfs-factory.bin

三、刷入新固件测试

Breed刷入新固件,进入Luci界面:

自编译Tl-wr845n-v2的OpenWrt固件-2

虽然型号指示是TP-link TL-WR842N/ND v2,但是所有功能都很正常,可放心使用。

这个新固件我也放在下载中心供大家下载(提取码:lyzt)。