为兆能M2编译OpenWRT固件,完美支持无线网络和WiFi6

您所在的位置:网站首页 openwrt开机自启wifi 为兆能M2编译OpenWRT固件,完美支持无线网络和WiFi6

为兆能M2编译OpenWRT固件,完美支持无线网络和WiFi6

2023-07-04 02:15| 来源: 网络整理| 查看: 265

办宽带的时候,电信公司给我送了一台兆能讯通M2路由器(下文简称兆能M2)。它搭载高通IPQ6000处理器,千兆接入,支持WIFI6,是高性价比的宝藏,在性能优异的同时,拥有广阔的玩转空间。

为了更好发挥兆能M2的可玩性,我给它编译了支持无线的OpenWRT固件,畅快做主力。理论上也可与和目CMIOT AX18通用。

注意: 阅读本文需要你掌握OpenWRT的基本知识,以及menuconfig的使用方法。

背景

由于可玩性高,兆能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://qus/post/ax18-openwrt/。

另外,理论上也可以使用本教程编译出来的固件(请往下翻到“编译成功后”小节),但需要你自行测试。

下载源代码

L大的OpenWRT源码地址为:https://github.com/coolsnowwolf/openwrt-gl-ax1800。

克隆源码,并进入源码目录:

123git clone https://github.com/coolsnowwolf/openwrt-gl-ax1800

cd openwrt-gl-ax1800

初始化源码下载组件12345# 同步OpenWRT各个组件的源代码./scripts/feeds update -a && ./scripts/feeds install -a

# 下载各类组件(可选,不影响兆能M2的运行)make download

加入helloworld源(可选)

把以下内容添加到源码根目录的feeds.conf.default末尾:

1src-git helloworld https://github.com/fw876/helloworld.git

然后重新运行以下命令:

1./scripts/feeds update -a && ./scripts/feeds install -a 配置设备(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)的无线配置文件:

1ath11k-wifi-cmiot-ax18.............. board-2.bin Overrides for CMIOT AX18

这是设备能使用WiFi的关键。

3. 启用IPv6

考虑到如今运营商都支持IPv4/IPv6双栈接入,开启IPv6支持可以获得更好的网络体验。

具体可参考我这篇文章:《OpenWRT启用IPv6与DHCPv6支持》

4. 更改无线配置文件名

源码树中的无线配置文件位于package/firmware/ath11k-wifi/,其中CMIOT AX18(或兆能M2)对应的配置文件名应当为board-cmiot-ax18.bin.IPQ6018。

但目前版本的源码树把文件名写错了,多出了.bin的扩展名,这将导致编译系统无法找到文件而报错。

运行以下命令,更正文件名:

12mv package/firmware/ath11k-wifi/board-cmiot-ax18.bin.IPQ6018.bin \ package/firmware/ath11k-wifi/board-cmiot-ax18.bin.IPQ6018 5. 加入各类实用程序

L大的OpenWRT自带了一些实用程序。为了提升使用体验,建议至少启用本教程建议的功能。

首先,依次进入【LuCI】–>【3. Applications】,然后至少勾选下面的项目:

luci-app-cpufreq:CPU性能优化调节 luci-app-autoreboot:定时重启 luci-app-ttyd:TTYD终端 luci-app-turboacc:TurboACC网络加速 开始编译执行编译命令

为了防止冲突,首先清理上次的编译结果:

1make clean

然后正式开始编译:

1make V=s

需要注意的是,首次编译会花很长时间,因为要从源码开始编译一系列工具(如GCC、CMake、Golang)。

问题:QCA相关组件编译失败

编译过程中,常常容易在构建QCA(高通Atheros)相关组件时,发生莫名其妙的编译错误,例如找不到文件等。但是反复尝试时,反而又能继续推进,直到成功。

这是因为GNU make在编译QCA组件时,无法正确处理并行编译,从而造成冲突——例如,A依赖B,但A反而比B先编译。

对此,解决对策就是反复运行编译,直至成功。一个技巧是,用下面的命令来编译OpenWRT,这样就能确保在出错时反复尝试,直至编译成功:

1make V=s; while [ $(($?)) -ne 0 ]; do make V=s; done

由于OpenWRT会反复编译内核,上述命令耗时会很长。你可以先一次性把最容易出错的组件全部编译完。如果失败,反复尝试即可:

12make package/qca/qca-ssdk/compile V=smake package/qca/qca-ssdk-shell/compile V=s 编译成功后

输出的文件位于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接入点)。事实上双频合一就可以保证兼容性。

2. 自动信道

分别把2.4G与5G的信道设为自动(auto),这样可以让兆能M2自动选择合适的信道,防止多台路由器互相干扰。

评测

从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管理界面时,所有页面几乎都是秒开;日常上网、下载大文件也有平稳顺滑的体验。

截至写文章时,笔者这台兆能M2已经稳定运行2天2小时有余,没有异常重启与出错。笔者计划7x24小时开机,持续测试稳定性。

Turbo ACC界面,从下图可以看到高通流量分载默认启用: CPU性能优化调节界面: 运行情况: 3. 软件版本

L大源码当前版本的OpenWRT是19.04版,内核为4.4.60。但这一版本已经足够丝滑、稳定,不影响体验与稳定性,也不影响L大与社区开发的各类APP的运行(比如helloworld)。建议踏踏实实用好这个版本。

4. SSH

本版固件也支持SSH远程管理,但默认情况下OpenSSH不能直接登录,会有以下错误提示:

1Unable to negotiate with 192.168.1.1 port 22: no matching host key type found. Their offer: ssh-rsa

对策1: 让OpenSSH能识别我们的路由器加密算法:

1ssh -o HostKeyAlgorithms=+ssh-rsa [email protected]

对策2: 直接使用PuTTY来登录。这是更简便的方法。

参考资料 如何解决OpenWRT QCA组件编译失败:Arch Linux论坛帖子、OpenWRT官方论坛帖子 赏

谢谢你请我吃糖果

支付宝 微信 本文作者: 爱拼安小匠 本文链接: https://anclark.github.io/2023/05/28/OpenWRT/OpenWRT_ZN-M2/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0(署名-非商用-禁止演绎 3.0) 许可协议。转载请注明出处!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3