为自己用的新路由3(Newifi D2)编译个LEDE固件。新3采用了MediaTek MT7621双核芯片,支持开源的OpenWrt路由系统。我所在的学校宽带上网需要锐捷认证,可以在路由系统里集成mentohust来进行认证。

编译前准备

  • 如果之前编译过固件(防止残留影响编译)
cd lede
# 删除配置文件
rm -rf ./tmp && rm -rf .config
# 清理所有编译文件以及相关依赖(完全清理干净,一键回到刚git clone下来的时候)
make distclean
  • 更新源码和feeds
# 从Github拉取代码并合并本地的版本
git pull
# 更新feeds
./scripts/feeds update -a
./scripts/feeds install -a

编译LEDE固件

  • 启动配置菜单
cd lede
make menuconfig
  • 选择合适的系统
# choose Target System -> MediaTek Ralink MIPS
# choose Subtarget -> MT7621 based boards
# choose Target Profile -> Newifi D2
# press Save -> Exit

image-20230328224626982

  • 编译固件
# 下载 dl 库
make download -j8
# 编译固件
make V=s -j8 #-j 后面是线程数
# 第一次编译单线程太慢了,直接 ALL IN,报错再说
# 编编译完成后输出路径:bin/targets

集成mentohust锐捷认证插件LUCI版

# 克隆插件源代码
git clone https://github.com/sbwml/luci-app-mentohust package/mentohust
make menuconfig 
# choose LUCI -> Applications -> luci-app-mentohust
# *表示集成至固件 M表示生成为IPK安装包
make V=s -j8

image-20230328230216898

刷入路由器

编译成功后来到bin/targets/ramips/mt7621路径下,通过breed控制台给路由器刷入固件。

# 生成的IPK插件保存位置
packages/
# 测试固件 重启后配置自动丢失
openwrt-ramips-mt7621-d-team_newifi-d2-initramfs-kernel.bin
# 正式固件 重启后配置不会丢失
openwrt-ramips-mt7621-d-team_newifi-d2-squashfs-sysupgrade.bin

mentohust的配置界面在服务 -> MentoHUST

WIFI无法启动问题处理

路由器刷入固件后,发现手机搜索不到WIFI,进入网络 -> 无线下发现WIFI没有默认启动。手动在LUCI界面重启无线后WIFI工作正常,路由器重启后WIFI仍然没有启动,提示Wireless is disabled or not associated。在源码的Issue里发现Subtarget (MT7621 based boards)芯片的设备都存在WIFI无法自启的问题,应该是闭源无线驱动的问题。

参考Issue:

系统->启动项->本地启动脚本添加以下脚本解决

# 启动2.4g 和 5g 信号
ip link set ra0 up
ip link set rai0 up

# 桥接网卡
brctl addif br-lan ra0
brctl addif br-lan rai0