本文是今年折腾家庭网络的第一篇,只介绍目前使用的设备如何刷上openwrt,关于openwrt内部的具体配置详见后文。
研究背景
家里一直使用的是网件Orbi系列路由器组无线mesh,硬件带三频使得它的无线回程效果非常好,但是存在两个问题:
路由器信号不佳,在部分信号死角处会断连;
网件系统封闭,如果想进一步diy如配置透明代理,那么原有系统不支持。
为此我痛下决心,更换路由器刷为openwrt系统,顺便满足一下自己想折腾的愿望(发出钱包空空的声音)。
正式开始前需要提前说明一下,目前我发现openwrt这一套系统存在的问题。
首先,新硬件只支持双频,在组无线mesh的情况下,为了保证回程线路的稳定只能让5G频段专门用于回程,于是就只剩下2.4G频段用于上网。尽管回程稳定性得到了保证,然而连接Wi-Fi下的网速就不如从前三频的速度。其次,由于仅剩2.4G这个相当拥挤的频段用来上网,在无线网络下的游戏体验也就不及从前。
如果愿意一开始加点预算,直接上支持三频的设备肯定更好。但现在从花销来看,实在不如在家里走明线布上网线,牺牲美观来换取书房稳定的千兆体验了……
⚠️警告
刷机不像计算机系统内的软件,一旦操作步骤有误就可能导致硬件直接变砖,如果没有拆机串口调试的能力,那就无可挽回了。因此正式开始之前,一定要确认好刷机型号完全对应,并且步骤完整无误。
都是血一般的教训啊(抹眼泪)
设备选择
我的选择原则就是刷机流程简单,不需要拆机也能操作。在猫点饭网站上搜索一圈后,发现官方就支持直接ssh进后台的品牌并不是很多,纳入备选范围的就是GLi.Net以及磊科这两个品牌。其中磊科的价位更便宜一些,于是就选择了这家。
接下来根据互联网上现有的刷机经验帖确定了具体型号。最终选定了N60Pro作为家庭网关,N30Pro放在主卧覆盖主、次卧,通过无线回程与网关通信。
刷机流程
磊科N60Pro
磊科N60Pro我使用了官方固件,在OpenWrt Firmware Selector内搜索Netcore N60 Pro,版本选择25.12.5。页面中包含4个映像,刷机需要下载下面3个程序:
1SYSUPGRADE # openwrt-25.12.3-mediatek-filogic-netcore_n60-pro-squashfs-sysupgrade.itb
2UBOOT # openwrt-25.12.3-mediatek-filogic-netcore_n60-pro-bl31-uboot.fip
3KERNEL # openwrt-25.12.3-mediatek-filogic-netcore_n60-pro-initramfs-recovery.itb备份数据
在正式刷机前先备份好路由器原有的数据,但是如果不慎刷砖,那么很难说还能轻易还原回去。
进入路由器后台,除非特别设置过,那么useradmin密码与路由器密码保持一致:
1ssh useradmin@192.168.0.1通过 cat /proc/mtd可以查到固件一共有6个分区,依次备份到/tmp文件夹下:
1dd if=/dev/mtd0 of=/tmp/mtd0_spi.bin
2dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin
3dd if=/dev/mtd2 of=/tmp/mtd2_ubootenv.bin
4dd if=/dev/mtd3 of=/tmp/mtd3_Factory.bin
5dd if=/dev/mtd4 of=/tmp/mtd4_FIP.bin
6dd if=/dev/mtd5 of=/tmp/mtd5_ubi.bin接下来将备份出来的文件全部存到电脑上。路由器没有sftp-server,因此需要打开macOS远程登录功能(系统设置-通用-共享-远程登录),从路由器一侧scp发送到电脑上。
1scp /tmp/mtd* palemoons@192.168.0.183:~/Downloads/刷入Uboot
从路由器一侧将电脑上的uboot文件传至/tmp文件夹下,然后刷uboot:
1mtd write /tmp/uboot.fip FIP在此期间不要做任何操作,大概等待一分钟不到的时间后显示命令执行完毕,现在清除md5分区:
1mtd erase /dev/mtd5擦出系统后重启路由器:
1reboot上传recovery固件
现在打开wireshark抓包,能看到路由器正在询问192.168.1.254IP,从该IP请求openwrt-mediatek-filogic-netcore_n60-pro-initramfs-recovery.itb。
121 8.845648 192.168.1.1 192.168.1.254 TFTP 137 Read Request, File: openwrt-mediatek-filogic-netcore_n60-pro-initramfs-recovery.itb, Transfer type: octet, timeout=5, blksize=1468因此为了满足路由器要求,我们首先手动设定IP地址:
1ip: 192.168.1.254
2子网掩码: 255.255.255.0
3网关: 192.168.1.1接下来在MacBook里把恢复固件移到/private/tftpboot目录下,然后启动tftp服务:
1# 复制固件至tftpboot
2sudo cp ./openwrt-mediatek-filogic-netcore_n60-pro-initramfs-recovery.itb /private/tftpboot/
3
4# 启动tftp服务
5sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
6
7# 关闭tftp服务
8sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist服务启动后等待一段时间,观察路由器的指示灯开始闪烁,接着常亮。现在访问192.168.1.1,就能看到openwrt的web页面。
上传正式固件
目前我们进入的是恢复模式的固件,虽然已经能够执行任务,一旦关机所有修改都会复原,因此在网页正上方的警告提示中点击进入上传固件页面,上传并安装sysupgrade固件。
至此N60Pro完成了OpenWrt安装。
磊科N30Pro
这台机器的刷机方法与上面不太一样,同时我也没有查到直接使用官方固件刷机的记录,只在猫点饭网站的文章中找到了作者自己编译的OpenWrt固件。这一次只需要uboot和sysupgrade固件。
备份数据
首先还是进入路由器后台,除非特别设置过,那么useradmin密码与路由器密码保持一致:
1ssh useradmin@192.168.0.1通过 cat /proc/mtd可以查到固件一共有6个分区,依次备份到/tmp文件夹下:
1dd if=/dev/mtd0 of=/tmp/mtd0_spi.bin
2dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin
3dd if=/dev/mtd2 of=/tmp/mtd2_ubootenv.bin
4dd if=/dev/mtd3 of=/tmp/mtd3_Factory.bin
5dd if=/dev/mtd4 of=/tmp/mtd4_FIP.bin
6dd if=/dev/mtd5 of=/tmp/mtd5_ubi.bin接下来将备份出来的文件全部存到电脑上。路由器没有sftp-server,因此需要打开macOS远程登录功能(系统设置-通用-共享-远程登录),从路由器一侧scp发送到电脑上。
1scp /tmp/mtd* palemoons@192.168.0.183:~/Downloads/刷入Uboot
从GitHub自行编译或从猫点饭自家云盘处下载拿到ubootfip-mt7981_netcore_n30pro_dhcpd-fixed-parts.bin。
从路由器一侧将电脑上的uboot文件传至/tmp文件夹下,然后刷uboot:
1mtd write /tmp/fip-mt7981_netcore_n30pro_dhcpd-fixed-parts.bin FIP上传正式固件
从GitHub OpenWrt 官方自行编译或从猫点饭分享的夸克网盘(提取码8S8L)处下载得到openwrt-mediatek-filogic-netcore_n30pro-squashfs-sysupgrade.itb固件。
用牙签顶住reset按键,关机开机10秒后松开,访问192.168.1.1能看到进入了恢复模式的webui。
点进“固件升级”上传刚刚下载的sysupgrade固件,确认无误点击“更新”,完成刷写后即可重启系统,正式进入OpenWrt页面。
至此N30Pro完成了OpenWrt安装。