办宽带的时候,电信公司给我送了一台兆能讯通M2路由器(下文简称兆能M2)。它搭载高通IPQ6000处理器,千兆接入,支持WIFI6,是高性价比的宝藏,在性能优异的同时,拥有广阔的玩转空间。
为了更好发挥兆能M2的可玩性,我给它编译了支持无线的OpenWRT固件,畅快做主力。理论上也可与和目CMIOT AX18通用。
注意: 阅读本文需要你掌握OpenWRT的基本知识,以及menuconfig的使用方法。
最近修订: 2023/10/7
背景
由于可玩性高,兆能M2(以及采用相同方案的和目CMIOT AX18)在恩山论坛也获得关注,固件适配有不少。笔者最初也是遍寻恩山的固件来尝试。
但是,多数固件是不带无线的,只能当有线路由器使用。这是因为大多数玩家偏重IPQ6000的转发性能,用作主路由放在弱电箱,而不使用它的WiFi。加之,兆能M2的OpenWRT固件曾长时间缺乏稳定、有效的WiFi解决方案,以至于玩家只好弃用WiFi。
在笔者看来,得益于IPQ6000的加持,兆能M2支持WiFi6。用官方固件时,信号质量不错,能充分发挥家宽的性能。要是无线功能闲置不用,将有多可惜,白白浪费了这么好的底子。因此,有一个带无线且稳定的固件,对笔者来说是刚需。
幸运的是,Lean大神(L大)发布了支持IPQ6000处理器的OpenWRT源代码,并于今年4月12日加入了CMIOT AX18的无线配置文件(同时适用于兆能M2),因此现在可以直接编译带无线的固件了。
事先准备
升级内存(重点!!!)
要想给兆能M2刷入OpenWRT固件,内存(RAM)扩容是刚需!是刚需!!必须升级!!!
相较于官方固件,OpenWRT对内存要求更高。如果不升级,固件依然可以运行,但将会非常卡顿,半天都打不开LuCI服务,即使用PuTTY登录SSH也反应迟钝。
内存必须512MB起步。建议有条件的玩家扩容到1GB以上, 这样运行速度将会飞快,稳定性也更佳。
你可以在淘宝寻找专业的路由器升级扩容服务,通常有经验的工程师会帮你升级好RAM,并刷入正确的CDT文件(高通的设备信息文件,包含内存信息)。
刷入U-Boot
兆能M2最常用的U-Boot,就是由暗云编译的闭源U-Boot:
- UBoot刷入教程:https://www.right.com.cn/forum/thread-5717090-1-1.html
- UBoot下载地址:https://mbd.pub/o/bread/YpaZlp5u
需要注意的是,暗云的UBoot分为普通版和扩容版,后者重新调整了分区结构,使rootfs分区更大,便于装更多软件,但需要配合正确的ADT文件(相当于分区表)使用。其中,普通版的文件名为uboot-cmiot-ax18.bin
,扩容版为uboot-cmiot-ax18-mod.bin
。 对笔者来说,原厂的分区已经够用,因此只使用普通版。
官方固件用户请注意
如果你正在使用官方固件,在刷UBoot之前,请你先从官方固件刷入一版第三方OpenWRT固件作为过渡,这样才便于登录SSH。刷入教程见:https://www.right.com.cn/forum/thread-7827262-1-1.html。
支持刷入的是nand-factory
格式的固件(至少满足以下条件:以.ubi
为扩展名;文件名带有nand-factory
)。相关固件可以在恩山搜索,建议使用暗云的闭源固件,下载链接在这篇教程里:https://qust.me/post/ax18-openwrt/。
另外,理论上也可以使用本教程编译出来的固件(请往下翻到“编译成功后”小节),但需要你自行测试。
下载源代码
L大的OpenWRT源码地址为:https://github.com/coolsnowwolf/openwrt-gl-ax1800。
克隆源码,并进入源码目录:
1 |
|
初始化源码
下载组件
1 |
|
加入helloworld源(可选)
把以下内容添加到源码根目录的feeds.conf.default
末尾:
1 |
|
然后重新运行以下命令:
1 |
|
配置设备(make menuconfig
)
运行make menuconfig
打开配置菜单,然后依次配置以下的主要参数。其余功能可以按照你自己的需要来配置。
1. 目标设备
参数名 | 值 |
---|---|
Target System | Qualcomm Atheros IPQ60xx |
Subtarget | Generic |
Target Profile | ZN M2 |
注意: 虽然兆能M2与CMIOT AX18可以通刷,但为了保证兼容性和稳定性,建议选择
ZN M2
。
2. 选择无线配置文件
依次进入【Firmware】 –> 【ath11k Board-Specific Overrides】,然后勾选这一项,以启用兆能M2(或CMIOT AX18)的无线配置文件:
1 |
|
这是设备能使用WiFi的关键。
3. 启用IPv6
考虑到如今运营商都支持IPv4/IPv6双栈接入,开启IPv6支持可以获得更好的网络体验。
具体可参考我这篇文章:《OpenWRT启用IPv6与DHCPv6支持》
4. 更改无线配置文件名
更新,2023/7/24:
最新版本(Git提交
bff53ede
)已经修复了无线配置文件名的错误,无需手动修改。
源码树中的无线配置文件位于package/firmware/ath11k-wifi/
,其中CMIOT AX18(或兆能M2)对应的配置文件名应当为board-cmiot-ax18.bin.IPQ6018
。
但最初引入该配置文件时,源码树里的文件名写错了,多出了.bin
的扩展名,这将导致编译系统无法找到文件而报错。
运行以下命令,更正文件名:
1 |
|
5. 加入各类实用程序
L大的OpenWRT自带了一些实用程序。为了提升使用体验,建议至少启用本教程建议的功能。
首先,依次进入【LuCI】–>【3. Applications】,然后至少勾选下面的项目:
- luci-app-cpufreq:CPU性能优化调节
- luci-app-autoreboot:定时重启
- luci-app-ttyd:TTYD终端
- luci-app-turboacc:TurboACC网络加速
开始编译
执行编译命令
为了防止冲突,首先清理上次的编译结果:
1 |
|
然后正式开始编译:
1 |
|
需要注意的是,首次编译会花很长时间,因为要从源码开始编译一系列工具(如GCC、CMake、Golang)。
问题:QCA相关组件编译失败
编译过程中,常常容易在构建QCA(高通Atheros)相关组件时,发生莫名其妙的编译错误,例如找不到文件等。但是反复尝试时,反而又能继续推进,直到成功。
这是因为GNU make在编译QCA组件时,无法正确处理并行编译,从而造成冲突——例如,A依赖B,但A反而比B先编译。
对此,解决对策就是反复运行编译,直至成功。一个技巧是,用下面的命令来编译OpenWRT,这样就能确保在出错时反复尝试,直至编译成功:
1 |
|
由于OpenWRT会反复编译内核,上述命令耗时会很长。你可以先一次性把最容易出错的组件全部编译完。如果失败,反复尝试即可:
1 |
|
编译成功后
输出的文件位于bin/target/ipq60xx/generic
,主要包括:
openwrt-ipq60xx-generic-zn_m2-squashfs-nand-sysupgrade.bin
:在OpenWRT中刷入。openwrt-ipq60xx-generic-zn_m2-squashfs-nand-factory.ubi
:用UBoot刷入。openwrt-ipq60xx-generic-zn_m2-initramfs-fit-uImage.itb
:这不是刷机包,没有软件支持。请勿使用!
使用技巧:无线参数的设置
为了优化兆能M2的无线网络体验,建议优化以下参数。
1. 双频合一
将2.4G与5G设置为相同的SSID、加密方式和密码,这样就能让设备根据当前环境,自动确定该用哪一个频段。设置方法不再赘述。
需要注意的是,不支持WiFi6的老设备,即使两个频段SSID不同,也只能显示其中一个(例如在支持5G频段的ThinkPad X201T上,只显示5G接入点)。事实上双频合一就可以保证兼容性。
当然,你也可以为两个频段分别设置SSID。
2. 自动信道
分别把2.4G与5G的信道设为自动(auto),这样可以让兆能M2自动选择合适的信道,防止多台路由器互相干扰。
设置方法是:
- 点击【网络】–>【无线】,然后点击5G频段无线网络的【修改】按钮,进入无线网络设置页面。
- 此时,找到【工作频率】一栏,把【信道】改成
Auto
即可。 - 用同样的方法来设置2.4G频段的信道。
评测
从L大源代码编译的固件,使用起来就是一个字:稳!
1. 无线
目前的固件满血发挥兆能M2的无线性能。2.4G与5G双频都能正常配置、连接,WiFi6自动激活,正确地在我的手机上显示相关标识。笔记本连接5G频段,用国内源更新Arch Linux来测试,5秒内就可以跑满100M带宽,并且一直保持稳定。
信号强度方面,我家两层楼,路由器放在二楼,在1楼也能收到2.4G的信号,几乎满格。
刚刚刷入固件时,有一个小Bug:我三台ThinkPad笔记本,X201T连不上无线,内核日志显示认证超时;然而年代更久远的X200和R400,反而能正常连接。后来尝试重启路由器,三台电脑都能连上,5G频段可以跑满100M宽带,这个Bug也没有再出现过。
值得注意的是,兆能M2的无线网启动很慢,开机大概需要等待1分钟,2.4G网络才启动,再等半分钟5G频段也才能使用。需要有些耐心。
- 无线网络工作状况:
2. 性能
L大的源码全面启用了高通的网络硬件加速(QCA NSS系列组件),包括硬件流量分载(QCA-NSS-ECM)、硬件加解密,进一步发挥了IPQ6000的性能优势,上网顺畅不卡顿。
IPQ6000性能可观,处理器本身具有高频率(864MHz起步,最高1.2GHz),再配合NSS,胜任平时各类用途不在话下。最直接的体验是使用LuCI管理界面时,所有页面几乎都是秒开;日常上网、下载大文件也有平稳顺滑的体验。
- Turbo ACC界面,从下图可以看到高通流量分载默认启用:
- CPU性能优化调节界面:
- 运行情况:
3. 软件版本
L大源码当前版本的OpenWRT是19.07版,内核为4.4.60。但这一版本已经足够丝滑、稳定,不影响体验与稳定性,也不影响L大与社区开发的各类APP的运行(比如helloworld)。建议踏踏实实用好这个版本。
需要注意的是,该版内核较旧,不支持BBR加速。并且,源码树配套的Golang工具链版本也较老(1.17),可能无法编译新推出的Go应用。你可以参考《将OpenWRT 19.07的Go语言替换为新版本1.21》来升级Golang。
4. SSH
本版固件也支持SSH远程管理,但默认情况下OpenSSH不能直接登录,会有以下错误提示:
1 |
|
对策1: 让OpenSSH能识别我们的路由器加密算法:
1 |
|
对策2: 直接使用PuTTY来登录。这是更简便的方法。
5. 异常重启的问题
在长时间运行,尤其是天气渐热之后,兆能M2出现了随机异常重启的状况,严重影响使用体验。幸好恩山论坛网友bieh提供了解决方案。
具体可以参阅我的博文《解决兆能M2(和目AX18)异常随机重启的问题》。
6. 稳定性
在解决异常重启问题后,兆能M2的稳定性有了质的飞跃,7x24小时稳定运行不间断,完全胜任做主力。
截至2023年10月7日,已经创下了连续45天稳定运行的uptime记录!
参考资料
- 如何解决OpenWRT QCA组件编译失败:Arch Linux论坛帖子、OpenWRT官方论坛帖子
- 本文作者: 爱拼安小匠
- 本文链接: https://anclark.github.io/2023/05/28/OpenWRT/OpenWRT_ZN-M2/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0(署名-非商用-禁止演绎 3.0) 许可协议。转载请注明出处!