本文最后更新于 2025-04-02,文章内容可能已经过时。

原文链接,参与讨论:https://www.right.com.cn/forum/thread-8354210-1-1.html

〇、成果

使用Openwrt官方刷机方法刷入ImmortalWrt,不使用扩容uboot,刷入系统后有140M剩余空间,可直接使用小米官方修复软件刷回官方系统;

修复160MHz频宽不可用的问题,改argon主题、改wan口到1G网口让NAS连2.5G口,配置UPNP、AdGuardHome、小猫咪、docker(可开privileged跑网心),使用U盘扩容overlay、配置swap分区;右图为使用AX210网卡连接5.2GWiFi的速度。但实际最高只能跑到1300~1400Mbps,小米原来的系统能跑到1900~2000Mbps,不知道是我电脑问题还是路由的问题,愿意折腾的可以刷个固件测一下。

刷机有风险,玩机需谨慎!

一、经历

之前使用的是AX6S,开个AdGuardHome和passwall就没内存了,CPU性能也不够做其他事情...(其实就单纯的想换个路由),就在海鲜市场600大洋淘了个99新的AX9000(1299用户哭晕了),之后就有了三天三夜的折腾......(你说为啥不用x86软路由折腾,硬路由做AP?因为折腾过了,想玩点别的)

一开始玩的是用扩容Uboot和L大的iStore,B站视频刷入iStoreOS/专用UBOOT不死iStore官方教程。默认的docker好像是有问题的,iStore页面安装程序失败,看着页面左边这么多东西都不是我想要的,就没再多折腾了(理由真牵强,就是想继续刷,一天不刷机浑身难受)

后面试了试用kiddin9大佬的在线编译网站编一个试试(之前AX6S的系统也是在这里搞的,稳定性还不错),底包可以用UBoot刷进去,但是启动后网口的灯不闪,wan口获取不了ip,lan口连电脑能ping通但就是进不了后台,连WiFi却可以进后台...麻了,后来折腾了一会儿也没发现什么原因,放弃后来脑子不知道抽了哪根筋直接在系统升级里把之前iStore的bin文件给直接上传上去,验证还给通过了,升级,然后就砖了...又麻了。感谢暗云大佬的uboot,虽然要钱(不是广告!),但起码还能继续搞下去,回官方开发版吧,重新在uboot刷了iStore后用SSH恢复之前的1、15、16分区,好巧不巧逛恩山的时候又看见有人说恢复不了,会变砖...又双叒麻了,咋办呢,现在路由已经关机了,想用SSH刷回Uboot已经不可能了(为啥不就这样用uboot刷别的系统呢,因为这个链接)...没办法了,(心情复杂地)打开MIWIFIRepairTool,按住路由屁股点上开关,(心怀期待地)看着屏幕,刷机的朋友们一定知道当你明知要完蛋的时候看到屏幕上出现进度条的那种心情,这个Uboot大分区恢复教程可行。

好,回到官方开发版,上docker,上ssh,试了试细佬成v简易安装脚本,装了个AdGuardHome,脚本还不错,science方面装了个shell/克拉斯,可以理解为命令行版本的小猫咪,Github官网wiki说明其他教程,就这样用了一个晚上,本以为我的AX9000刷机之旅就止步于此了,当我心血来潮想装个网心来榨干一下路由性能的时候,发现官方的这个docker开不了特权(priviledged)容器,抱着继续作死的心态,放弃了官方系统+ssh。

再后来就是现在用的官方刷机方法+ImmortalWrt的方案,我认为这个是最适合我的系统,满血docker+小猫咪+AdGuardHome,需要其他插件还可以自己安装,稳定性目前还需要时间的考验,可能没有官方开发版稳定,但可玩性却是不可比拟的。

二、折腾

下面来说说我装好这个系统之后的配置过程:
工具:putty(用于 ssh 连接)、WinSCP(用于文件传输)、DiskGenius(用于格式化U盘)、脑子(用于思考)、心态(用于防止爆炸)...

1)安装系统

参考文,感谢GNUisNotUnixhttps://www.right.com.cn/forum/thread-8313345-1-1.html

Openwrt 官方刷机:https://openwrt.org/toh/xiaomi/ax9000#for_the_chinese_oem_firmware_model_only

下载 immortalwrt 固件:https://downloads.immortalwrt.org/releases/23.05.1/targets/ipq807x/generic/

注意:WinSCP 软件中File Protocol 使用 SCP 协议连接,而不是默认的 SFTP,否则输入密码后报 127 错误,安装完成后先不连接光猫。

2)基础配置

  • 更换 lan 口 ip:ImmortalWrt 默认 lan 口 ip 为 192.168.1.1,可能与光猫 ip 发生冲突,点击网络>接口> lan 的编辑按钮,修改 IPv4 地址,点击保存,再点击页面上的保存与应用,使用新的lan地址重新登陆路由。

  • 连接2.5G网口到光猫,使路由连接外网。

  • 更改 wan 口协议:系统默认使用 DHCP 客户端协议连接外网,如果有需要则在网络>接口> wan 口编辑协议改为 PPPOE,输入宽带账户密码。

  • 设置 root 密码

  • 更换为 Argon 主题(爱好默认 bootstrap 主题的跳过):Github网址,点击系统>软件包>更新列表按钮,搜索并安装 luci-compat、luci-lib-ipkg、luci-theme-argon,或使用命令行

opkg update
opkg install luci-compat luci-lib-ipkg luci-theme-argon
  • 更改 wan 口,默认 2.5G 网口为 wan 口,改其他 1G 网口为 wan 口腾出 2.5G 口给 NAS 使用:点击网络>接口,编辑 wan 和 wan6 接口>常规设置>设备,更改以太网适配器,网口从左到右的名称为 lan4、lan3、lan2、lan1、wan(2.5G),选择lan开头的适配器作为 wan 和 wan6 接口的设备,保存;点击同一页面下的设备标签页,更改 br-lan 配置,网桥端口取消勾选之前选的一个 lan 口,勾选 wan 口,保存,再点击保存和应用;光猫网线插在刚才更改的口。此时可能要重启路由才能获得 ip。

好了,人人都会的那部分过去了

3)修复5.2G 160MHz WiFi

路由芯片结构:acwifi:小米AX9000三频无线路由器拆机

网络>无线列表中,radio0 的 QCA9887 连接的是 Iot 天线,直接关闭,radio1 的 IPQ8074 配置的是 5.8G 的 WiFi,radio2 的是 2.4GWiFi,radio3 的 QCN9024 是 5.2GWiFi,160MHz 频段的 WiFi 在 radio3,但是直接开启使用是无法连接到此 WiFi 的,虽然在电脑或手机上能显示,但就是连不了,就算是只开启 80MHz 也连不了。
Openwrt官方 中有提到这个问题及解决方法(同时还提到了另外两个问题):

Potential issues / Limitations1. An issue on the lower 5 GHz band radio (QCN9024) caused by the current BDF file (as 17/12/2022) is leading to non-connecting issues. Proposed by avanletin, a workaround is available, following the instructions below:

  • Paste the entire command into a linux terminal to generate a new BDF file board-2.bin compressed.

  • Backup the current board-2.bin file on the AX9000: cd /lib/firmware/ath11k/QCN9074/hw1.0 && mv ./board-2.bin ./board-2.bin_stock.

  • Copy the compressed file generic-ax9000.tar.gz into the root directory (/) on the AX9000.

  • Uncompress the BDF file: tar -xzvf generic-ax9000.tar.gz.

  • Reboot the router.

  1. Although the new BDF file configuration allows otherwise, configure the QCN9024 radio exclusively on the 36,40,44,48,52,56,60 or 64 channels.

  2. The sysupgrade command may fail due to a random issue of wpad not being effectively stopped while upgrading Openwrt. A firmware patch was already release, here.

  3. The IPQ807x target has not yet support for DSA, on OpenWrt: See this forum post.

翻译来说就是要将一段base64编码的字符转换为一个 BDF 压缩包,解压出来替换掉原来路由里面的一个文件,这里把文件给大家 board-2.zip

步骤:

  1. 先用WinSCP连接路由,将 /lib/firmware/ath11k/QCN9074/hw1.0/board-2.bin 备份

  2. 再上传压缩包里的 board-2.bin 文件到该目录下

  3. 重启路由,就应该可以连接上此 WiFi 了,要注意的是,虽然配置界面显示了高频的 5G,但还是只能选择36,40,44,48,52,56,60 or 64 信道

4)开启 UPNP

在当下移不动、联不通、信不过的大内网下,需要跑 PCDN 或者 BT/PT 的朋友都需要开启路由器的 upnp,但本文所写的 ImmortalWrt 系统默认没有内置 upnp,而在内网中默认的 upnp配置是无法正常工作的。

开启步骤:

  1. 系统>软件包安装 luci-app-upnp 插件,刷新界面,在服务中可以看到 upnp。

  2. 开启 upnp 与 NAT-PMP 服务,开启安全模式,保持 v1 的勾选,应用更改。

注意!!在24.10版本的Immortalwrt中,upnp添加了强制转发(即使网络位于 NAT 之后,也强制转发端口)功能,但实测该功能经常抽风,还是需要进行下面的配置。

此时在系统日志中可以看到 miniupnp 识别出的 wan 端 ip 为内网,upnp 是无法正常服务的。

  1. 使用WinSCP或者vi工具修改 /etc/config/upnpd,加入语句option external_ip '随便一个外网ip'我这里写的是百度的 DNS,随便一个外网ip就行,不要是那些 192、10、172 开头的内网 ip 。

  1. 重启 upnp 服务

/etc/init.d/miniupnpd restart

此时 upnp 应该能正常工作了,在服务>upnp界面中应该能看见设备的转发(如果有的话),或者在 miniupnp 官网下载 upnpc 客户端进行测试,下图为成功添加转发的例子,默认不修改配置的情况下会报501错误。

5)安装 AdGuardHome 插件

1、下载 AdGuardHome

opkg install adguardhome

2、安装、启动并配置 AdGuardHome,adg 是一个独立的文件,不同于其他插件,默认官方是没有给 luci-app 界面的,使用命令行安装即可。(也不推荐使用其他 luci 界面,都比较老旧很久没更新了,但可以自己去 Github 下载,推荐教程 https://www.right.com.cn/forum/thread-8275129-1-1.html

/usr/bin/AdGuardHome -s install

3、配置 DNS 查询方式(如果安装了 luci 面板就在面板选择,没有就按照下面步骤手动配置)

方式一:利用 dnsmasq 转发(其他插件不兼容才选择这种方式)

  1. AdGuardHome 的DNS查询端口改为除 53 之外的其他端口(如 5353 )

  2. DHCP/DNS 中

    • 常规->取消 DNS 重定向、本地域名留空(不留空则在本地主机上执行 nslookup 命令时会自动添加 .lan 的后缀)

    • 过滤器->取消过滤 IPv6 AAAA 记录(不需要 IPv6 就不用改)

    • DNS转发->127.0.0.1#5353(写 AdGuardHome 的DNS查询端口)

    • 限制->DNS 缓存大小改为 0,让 AdGuardHome 来缓存

6)安装小猫咪

Github官方 这路由性能这么强就不要用 PassWall 了。

配置教程:https://www.right.com.cn/forum/thread-8353048-1-1.html

7)配置 U盘 swap 区和扩容 overlay

如果没有比较大的空间需要比如 docker,就不需要扩容 overlay 了,100MB 多的空间够用了,如果需要扩容,务必使用 I/O 性能好的 U盘或硬盘。
U盘扩容 overlay :https://www.techkoala.net/openwrt_resize/
扩容与开启 swap :https://blog.csdn.net/misisippi68/article/details/105431455

8)安装 docker

GitHub地址

opkg install luci-app-dockerman

防火墙需要额外配置一下,常规设置>区域>docker接口允许来自源区域的转发指定为lan,否则lan端电脑无法访问 bridge 网络的容器

三、结语

好了,我的 AX9000 刷机过程就是这样,上面是我的一些拙略技巧,自知尚存诸多不足,请各位大佬一笑置之,也希望能够帮助到刚接触 AX9000 这款路由或者 openwrt 的朋友。

经过了三天三夜的探索和折磨,痛并快乐着,探索不同的 op 系统,找到一个适合自己使用的,摸索的过程真的很爽,让我从一个 op 小白变成另一个 op 小白,本贴提供的思路是自己安装官方固件,自己配置插件,跟使用别人大而全的固件相比,自定义安装插件能更好地贴合自己的使用需求,同时也能让自己更加了解所使用的插件的工作机制,(有人说这样为啥不直接用 OpenWrt 官方的系统而不是 ImmortalWrt 系统?其实我在刷机过程中也试过,如果你尝试过在精简版的 Ubuntu 或者 CentOS 基础上一步步安装图形界面(对,官方 OP 是没有 Web 界面的,只有 ssh)和各种基础软件包的话,你可以试试,我反正用官方 OP 系统是遇到不少问题的,OP 官方的系统内核是6.1最新版本的,软件库也比 Immortalwrt 的少很多东西,虽然可以自己去 Github 下载 ipk 包安装,但最新内核的兼容性和稳定性还是个问题),本贴的这种手动安装插件的方法恢复出厂设置后新安装的插件会全部消失,需要重新手动配置,以后将会尝试自己编译整合要用的做一个固件(没错,别笑了,这个我还不会,到时候有机会再做一个全面的编译教程吧。

最后祝各位刷机顺利,永不变转,感谢各位大佬们的帮助,感谢恩山社区中各位的教程和方法,感谢 op 开源社区的付出,感谢能够看到最后的你们,感谢...额,我真不会谢了。