Posted in: IT

把红米 AX5 路由器刷成了 OpenWrt 系统

三年前,我曾经写过一篇文章提到给红米 AX5 路由器开启 SSH 的方法。当时浏览热度相当高,其实这个内容在其他 blog 里面也能经常见到,可能是时间比较早的缘故吧。但是开启了之后有什么用呢?这个路由器内存只有 256 MB,内置的是一个极度精简的 OpenWrt 系统,基本上就是“啥也干不了”的状态。于是就萌生了刷机的想法。

参考资料

可能你会问:既然已经有教程了,为什么还要再水一篇?那是因为我发现实操的某些过程和教程不太一样。

准备工具

  1. Uboot 和 MIBIB 刷写件。网上很多人说要付费购买,其实不用,在 Github 就能免费下载获得。我选择的是 uboot/coolsnowwolf/ 里面的文件 (AX5_MIBIB.binAX5_UBoot.bin)。实测可行。
  2. OpenWrt 过渡固件(可以理解为精简版)。我使用的是此处openwrt-ipq60xx-Redmi_AX5-squashfs-nand-factory.ubi 文件,大小约 13MB。实测可行。
  3. 能插网线的电脑一台。例如我的是 Macbook,没有网线接口,就需要购买一个 LAN – USB 转换头。注意买的时候看清楚是否是“免驱动即插即用”
  4. OpenWrt 最终固件。这里有坑,后面再说。

刷机步骤

开启 SSH

已经写过了。

备份、刷入 Uboot

备份就不说了。直接看参考材料。

刷入 Uboot 的方法是:首先要把 AX5_UBoot.bin 这个文件上传到路由器的 /tmp 目录下。然后执行:

mtd write /tmp/AX5_UBoot.bin /dev/mtd7

此时会显示如下信息,并且是瞬间完成。

root@AX5:/tmp# mtd write AX5_UBoot.bin /dev/mtd7
Unlocking /dev/mtd7 …
Writing from AX5_UBoot.bin to /dev/mtd7 …

参考资料上都建议等 20 秒之后再操作,我也等了。

坑:macOS 怎么向路由器传输文件?

macOS 上没有 winSCP 可用,也无法使用 FileZilla 来传文件(不信可以试试,必败)。原因是因为 macOS 上的 scp 默认会调用 sftp,而红米 AX5 路由器上没有 sftp(也不可能去安装一个),因此唯一的办法是给 scp 加上 -O 参数,这样可以避免 scp 调用 sftp:

# 假设路由器的 IP 是 192.168.0.1
scp -O AX5_UBoot.bin [email protected]:/tmp/

进入Uboot界面,刷写过渡件

首先把参考材料上的原文抄过来:

  1. 进入Uboot后台方法:先把路由器断电,推荐直接拔路由器屁股的电源口而不是插座,然后用牙签或者其他工具按住路由器后面的RESET不要放开,然后插上电源,此时路由器会黄灯闪烁5次变为蓝灯,然后就松开RESET(松开牙签)。
  2. 准备根网线接到路由器的LAN口和电脑的网口,设置电脑的IP为192.168.1.X(随意不能是1)。从此处开始到结束,网线要一直插着。
  3. 在浏览器输入 192.168.1.1 进入uboot。
  4. 然后选文件过渡固件(例如我选的 openwrt-ipq60xx-Redmi_AX5-squashfs-nand-factory.ubi
  5. 点击Update firmware等待写入。路由器指示灯开始闪烁,直到不闪烁亮蓝灯为止。
来自 https://www.right.com.cn/forum/thread-8278695-1-1.html

我也是这么操作的,没有遇到问题。首先放一张 uboot 界面图(上面第 3 步)。

然后放一张 Update firmware等待写入的图(上面第 5 步的过程)。

最后放一张过渡固件刷完之后的图(上面第 5 步的结果)。

如果上面第五步操作之后路由器一直不亮蓝灯,则表明过渡固件写入失败,需要重新从第一步(路由器断电)开始操作。

刷入MIBIB

这一步参考材料上写得不是很清楚。归纳起来应该这样:

  1. 连接路由器的 SSH,IP 是 192.168.1.1,用户名是 root,不用密码。
  2. 同样用 scp -O 命令,复制 AX5_MIBIB.bin 文件到路由器的 /tmp 目录下面。
  3. 执行 mtd write /tmp/AX5_MIBIB.bin /dev/mtd1 。过程和结果与刷入 Uboot 那一步很像,也是瞬时完成,但是等 20 秒左右。

升级 OpenWrt 为最终固件(重大的坑)

操作方法就像参考资料里说的,在 192.168.1.1 的 web 界面上进行升级操作,点击按钮,上传最终固件,点击执行,等待路由器变蓝灯就好了。好像很傻瓜式。但是这里坑最多了。

用什么浏览器?

我在 macOS 上一直用 Safari 浏览器,因为省电。可是在这一步用 Safari 浏览器有可能导致升级失败(路由器一直黄灯)。建议用 Chrome 浏览器

选哪个固件?

开始直接选择参考资料里面的固件,效果很不理想:

  • 有的过于精简,后续想安装 Wireguard 安装不上,因为固件在编译时缺少一些必要的库。(OpenWrt 可不是 Ubuntu,一旦固件在编译时缺少库的话,是无法后续安装的)
  • 有的过于臃肿,什么都有,安装完之后有些分区目录居然接近 100%(别忘了红米 AX5 只有 256MB 存储),导致接下去不能安装任何额外东西。
  • 有的安装完之后居然不能 SSH 登陆,原因是因为 /etc/shells 只有 /bin/ash,这种情况只能呵呵呵了。
  • 大部分固件内核都太老了,新内核固件要付费才能下载(说的就是那个只谈技术、莫论政事的著名论坛)。

我用了 openwrt.ai 这个网站来自行构建固件,免费用户每天可以构建一次。在网页上可以选择需要添加哪些软件包或者删除哪些软件包!

  • 红米 AX5 是没有 USB 接口的,因此我去掉了 -kmod-usb 开头的软件包。
  • 因为红米 AX5 内存只有 256MB,因此去掉了带 wifi 的软件包。
  • 由于我想要后续使用 Wireguard,因此添加了 luci-proto-wireguard、 luci-app-wireguard、 kmod-wireguard、 wireguard-tools 这四个软件包。

构建大约 2 分钟即可完成,固件(kwrt-xx.xx.xxxx-qualcommax-ipq60xx-xx_xx-squashfs-sysupgrade.bin)大小只有 22MB。

升级需要多久?

大约半分钟到一分钟。如果 1 分钟之后路由器仍然不亮蓝灯,基本可以判断为升级失败,需要重新从 Uboot 界面那一步开始操作。

最终效果

下面放一下最终固件的 web 截图。

SSH 的欢迎界面挺漂亮。

使用 openwrt.ai 构建固件优势明显:因为内核新,很多东西操作起来方便。例如 SSH 自带支持 ed25519,不用额外添加 RSA 了。而且由于可以自己删减软件包,因此很省空间(我用了 7.8 MB 的空间)。

[root@Kwrt:12:09 AM ~] # df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                15.5M     15.5M         0 100% /rom
tmpfs                    63.4M      1.3M     62.1M   2% /tmp
/dev/ubi0_2              40.4M      7.8M     30.5M  20% /overlay
overlayfs:/overlay       40.4M      7.8M     30.5M  20% /
tmpfs                   512.0K         0    512.0K   0% /dev

至于接下来要用 wireguard 做什么,以后再写了。

Comments (21) on "把红米 AX5 路由器刷成了 OpenWrt 系统"

    1. Safari 18.2 Mac OS X  10.15.7

      是的,但是想要用路由器翻牆的話,需要路由器的硬件比較好,因為要翻牆的內容太多了

  1. Firefox 129.0 Windows 10 x64 Edition

    用wireguard估计是组网了,虽然我感觉zerotier更适合
    另外日本宽带普遍有公网ipv4吗

      1. Firefox 134.0 Windows 10 x64 Edition

        盲猜动态公网v4,记得wg配ddns有点坑
        不过v6总该是静态的吧,至少我墙国移动几个月没变过了

        1. Safari 18.2 Mac OS X  10.15.7

          v4静态的。问题出在别处,我下一篇文章再写。

          v6主要是很多公共 wifi 和公司 wifi 没有,不方便。

    1. Safari 18.2 Mac OS X  10.15.7

      哈,这不是软路由。软路由是说本来是一台电脑台式机,安装了一些特殊的软件把它变成了具有路由功能的电脑。我这个本来就是路由器,只不过家里有好几个,废物利用了。

  2. Google Chrome 133.0.0.0 GNU/Linux x64

    (个人观点)

    我觉得博主未免有些缺乏谨慎了,个人而言,我对中国的专有软件,比如小米路由器上的操作系统,是完全不信任的。

    国产网络设备如光猫,有些被部署了“深度包检测”软件,用作“反诈”(读作“大规模监控”)用途。小米的手机操作系统,MIUI,也被发现上载包括但不限于[用户安装的软件列表]等隐私信息之行为。

    况博主或被认为持有不同政见,这便更加危险了。

    我个人而言,如要使用这类中国品牌的硬件,必须将其操作系统替换为无中资背景的软件,最好是自由开源软件。

    1. Safari 18.3 Mac OS X  10.15.7

      OpenWrt 就是自由开源的软件啊。我安装的固件也是最后自己编译的,不是网上下载的

      1. Google Chrome 133.0.0.0 GNU/Linux x64

        我所说的[国产专有软件]在这个语境中指的是小米路由器的stock firmware,也就是出厂自带的那个。

        OpenWRT当然是自由开源的 😀

  3. Microsoft Edge 133.0.0.0 Windows 10 x64 Edition

    “这个路由器内存只有 256 MB”,为何会跟装系统空间有关?
    ROM难道不是在闪存里吗?运行时加载ROM中的系统到内存里吗?
    我有另一个小米路由器3G,也是Flash是128M,内存256M,装OpenWRT完全版,一点问题都没有。

      1. Microsoft Edge 133.0.0.0 Windows 10 x64 Edition

        我成功刷了breeze303的无WIFI带有线NSS的6.6内核固件
        https://github.com/breeze303/openwrt-ci
        但在系统状态里看,内存只有100多M,而不是256M,这是怎么回事呢?
        百思不得其解,内存就是内存,256M怎么会少很多呢?
        uboot刷的也是 uboot/coolsnowwolf/ 里面的文件 (AX5_MIBIB.bin 与 AX5_UBoot.bin)
        还请大神指点迷津,谢谢。

  4. Microsoft Edge 133.0.0.0 Windows 10 x64 Edition

    而且breeze303的固件,缺很多ipsec相关的kernel module,
    如kmod-ipsec,kmod-crypto-XXXX
    让我没法使用strongswan,很是苦恼。
    这是不是意味着我需要按自己的需要重新编译OpenWRT把需要的kmod加进去?

    1. Safari 18.3 Mac OS X  10.15.7

      sorry,关于内存的大小我也不太懂。至于固件,不要直接下载别人的,请去 https://openwrt.ai/ 这个网站进行自行编译(速度很快,几分钟),可以添加各种 kmod,也能精简 wifi、usb 等内置的 package。

      1. Microsoft Edge 133.0.0.0 Windows 10 x64 Edition

        用那个固件主要是为了支持高通ipq6000芯片的NSS硬件加速,一般的OpenWRT固件是没有NSS硬件加速的。
        那个固件项目也是开源的,支持自己编辑配置,编译自己的固件。现在还在研究如何配置一个适合自己的固件。
        配置文件里有很多跟高通NSS相关的设置:
        CONFIG_DEFAULT_kmod-qca-nss-drv-bridge-mgr=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-clmapmgr=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-eogremgr=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-gre=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-igs=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-l2tpv2=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-lag-mgr=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-map-t=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-match=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-mirror=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-pppoe=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-pptp=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-pvxlanmgr=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-qdisc=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-tun6rd=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-tunipip6=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-vlan-mgr=y
        CONFIG_DEFAULT_kmod-qca-nss-drv-vxlanmgr=y
        CONFIG_DEFAULT_kmod-qca-nss-ecm=y
        CONFIG_DEFAULT_kmod-qca-nss-macsec=y

        你推荐的那个编译网站,固件也是可以支持NCC硬件加速吗?

        1. Safari 18.3 Mac OS X  10.15.7

          啊,这个从来没有注意过。我刷 openwrt 的目的是在外面远程回家使用,不需要太强劲的硬件。

  5. Microsoft Edge 133.0.0.0 Windows 10 x64 Edition

    我现在用openwrt.ai编译的AX5的固件发现有个问题,会不断地卡死,重启,差不多每半个小时就会这样。看System Log有很多ath11k,WIFI相关的错误。我就想是否是默认的软件包没有去干净WIFI相关的组件。
    你提到的去掉了带 wifi 的软件包是否就是下面几个?
    ath11k-firmware-ipq6018
    ipq-wifi-redmi_ax5
    kmod-ath11k-ahb

    1. Microsoft Edge 133.0.0.0 Windows 10 x64 Edition

      今天重建了一个固件,去除了ath11k相关的module,去除USB相关的module,加了我需要的strongSwan相关的module,成功刷机,不再反复重启了。看了system log确认NSS硬件加速成功开启,完美。
      Sun Feb 16 01:39:34 2025 kern.info kernel: [ 11.450437] **********************************************************
      Sun Feb 16 01:39:34 2025 kern.info kernel: [ 11.457244] * NSS Data Plane driver
      Sun Feb 16 01:39:34 2025 kern.info kernel: [ 11.463719] **********************************************************
      Sun Feb 16 01:39:34 2025 user.notice kernel: [ 12.259648] hotplug: symlinking qca-nss0.bin to /lib/firmware/qca-nss0-retail.bin
      Sun Feb 16 01:39:34 2025 kern.info kernel: [ 12.372710] qca-nss 39000000.nss: NSS fw version: NSS.FW.12.2-161-CP.R
      Sun Feb 16 01:39:34 2025 kern.info kernel: [ 12.372757] qca-nss 39000000.nss: fw of size 861640 bytes copied to addr: 40000000, nss_id: 0
      Sun Feb 16 01:39:34 2025 kern.alert kernel: [ 12.380048] ffffffc0794b68c0: NSS core 0 DDR from 40000000 to 41000000
      Sun Feb 16 01:39:34 2025 kern.info kernel: [ 12.414259] qca-nss 39000000.nss: NSS core 0 booted successfully

      1. Safari 18.3 Mac OS X  10.15.7

        赞钻研精神。👍。

        我刚才去 system log 里面看了一下,确实也看到了 qca-nss 39000000.nss: NSS core 0 booted successfully 这句话,不确定是否 NSS 加速成功。不知除了查看 log 之外,还有没有其他简单的但能明确地检测出有没有 NSS 的方法?比如,有 NSS 和没有 NSS 相比,在表现上会有什么不同?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注