Xiaomi Redmi Router AX6000 ImmortalWrt 升级记录
设备信息
- 型号:Xiaomi Redmi Router AX6000(mediatek/filogic,MT7986,aarch64_cortex-a53)
- 原系统:ImmortalWrt 23.05-SNAPSHOT r28040,kernel 5.4,2024-09-19 构建
- 目标系统:ImmortalWrt 24.10.2 r33247,kernel 6.6.93
背景:三种固件布局
AX6000 的 ImmortalWrt 有三种分区布局,互不兼容:
| 布局 | UBI 大小 | 说明 |
|---|---|---|
| stock | 原厂大小 | 原厂分区,不含不死 uboot |
| hanwckf uboot | 110MB | 魔改版,含不死 uboot 恢复界面 |
| ubootmod | 122.5MB | 官方支持的不死 uboot,删除 crash/crash_log 分区换来更大 UBI |
原系统是 hanwckf uboot 布局,24.10.2 只提供 stock 和 ubootmod,需要先迁移布局再升级。
不死 uboot:三种布局中 hanwckf 和 ubootmod 都支持,是一个内置在 uboot 里的恢复 Web 界面,断电重启时按住 reset 键可进入,用于救砖上传固件。
固件文件说明
| 文件 | 用途 |
|---|---|
ubootmod.fip |
uboot 本身,写入 FIP 分区完成布局迁移,只需做一次 |
initramfs-recovery.itb |
通过 TFTP 传给 uboot 的初始化镜像,用于布局迁移时初装系统 |
initramfs-factory.ubi |
同上,UBI 格式,用于通过 web 界面上传刷入(与 recovery.itb 二选一) |
sysupgrade.itb |
日常升级用,系统装好后用 sysupgrade 命令刷,不改变分区结构 |
简单说:fip 换 uboot → recovery.itb 初装系统 → 以后每次升级用 sysupgrade.itb。
升级步骤
1. 下载固件到路由器
原系统可以直接 SSH,在路由器上用 curl 下载:
1 | # 注意:Cloudflare 会拦截直接下载,需用镜像站 |
坑:从 Mac 直接下载会被 Cloudflare 拦截,返回 7.5KB 的 HTML 而不是固件。改用 mirrors.vsean.net 镜像解决。
2. 写入新 uboot FIP
1 | mtd write /tmp/ubootmod.fip FIP |
写入成功后路由器自动重启,/tmp 内容全部丢失(tmpfs)。
坑:sysupgrade.itb 也下载到了 /tmp,重启后没了。initramfs-factory.ubi 要提前下载到本地 Mac。
3. 通过 TFTP 刷入新固件
写入 ubootmod FIP 重启后,uboot 检测到原有 UBI 布局不兼容,自动进入 TFTP 恢复模式(无需按 reset 键)。
地址分配:
- 路由器 IP:
192.168.1.1 - Mac(TFTP 服务器)IP:
192.168.1.254(必须是这个,uboot 写死的)
需要的固件文件(提前下载到 Mac):
1 | immortalwrt-24.10.2-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb |
注意:是 initramfs-recovery.itb,不是 initramfs-factory.ubi。
Mac 操作步骤:
1 | # 1. USB 网卡设置静态 IP 192.168.1.254 |
路由器上电后 uboot 自动向 192.168.1.254 发起 TFTP 请求,下载固件并刷入,整个过程分几个阶段(指示灯变化),完成后自动重启。
1 | # 完成后关闭 TFTP 服务 |
坑:TFTP 服务器必须在路由器上电前就启动好,否则 uboot 请求超时会跳过进入其他模式。
4. 等待系统启动
TFTP 刷入完成后路由器自动重启,直接启动进入完整安装的 ImmortalWrt 24.10.2,无需再单独刷 sysupgrade。
启动后 LuCI 在 http://192.168.1.1 可访问。
坑:Firefox 地址栏直接输 192.168.1.1 会被强制跳转 HTTPS 导致连不上,要明确输入 http://192.168.1.1。
5. 修改 LAN IP
新系统默认 IP 是 192.168.1.1,容易和光猫冲突:
1 | uci set network.lan.ipaddr='192.168.5.1' |
执行后 SSH 连接会断开(正常),等几秒后用新 IP 连接。
Mac 网卡改回 DHCP:
1 | networksetup -setdhcp "USB 10/100/1000 LAN" |
6. 更新 SSH known_hosts
新固件的 host key 变了,需要清除旧记录:
1 | ssh-keygen -R 192.168.5.1 |
7. 配置 SSH key
新固件用 dropbear,authorized_keys 路径和标准 OpenSSH 不同:
1 | # 在 Mac 上执行 |
8. 配置 WiFi
1 | uci set wireless.default_radio0.ssid='你的SSID' |
安装 OpenClash
安装包
1 | opkg update |
安装 Mihomo 内核
路由器从 GitHub 下载太慢,在 Mac 上下载再传过去:
1 | # Mac 上下载(arm64 对应 aarch64_cortex-a53) |
验证:
1 | ssh immortal "/etc/openclash/core/clash_meta -v" |
之后在 LuCI → 服务 → OpenClash 配置订阅链接即可。
最终状态
1 | ImmortalWrt 24.10.2 r33247-467867283bb9 |
调优
WiFi 5GHz 开启 160MHz
默认 HE80,改成 HE160 后实测下行从 891 Mbps 提升到 1050+ Mbps:
1 | uci set wireless.radio1.htmode='HE160' |
注意:客户端设备也需要支持 WiFi 6 160MHz 才能生效;信道干扰严重的环境可能反而变差。
启用 BBR 拥塞控制
默认 cubic,BBR 对代理流量和高延迟连接更友好:
1 | opkg install kmod-tcp-bbr |
扩大 TCP 缓冲区
默认只有 200KB,千兆网络下会限速,改成 16MB:
1 | sysctl -w net.core.rmem_max=16777216 |
硬件 NAT 卸载(已默认开启)
MT7986 支持硬件流量卸载,ImmortalWrt 默认已启用,无需手动配置。验证:
1 | uci show firewall | grep offload |
安装本地测速工具
librespeed-go 是自托管的网页测速服务,测浏览器到路由器的速度,用来评估 WiFi 信号质量:
1 | opkg install librespeed-go |
访问 http://192.168.5.1:8989 即可测速。
调优效果
| 项目 | 调优前 | 调优后 |
|---|---|---|
| 下行 | 891 Mbps | ~1050 Mbps |
| 上行 | 761 Mbps | ~1300 Mbps |
| 延迟 | 1.9ms | 1.9ms |
日常升级(sysupgrade)
已迁移到 ubootmod 布局后,以后升级只需 sysupgrade,无需再动 uboot:
1 | # 在路由器上下载 sysupgrade 固件 |
保留配置升级(小版本):
1 | sysupgrade /tmp/sysupgrade.itb |
注意:如果路由器没有外网,可以先在 Mac 下载再 scp 传过去:
1 | scp ~/Downloads/sysupgrade.itb immortal:/tmp/ |
坑汇总
| 坑 | 原因 | 解决方法 |
|---|---|---|
| Mac 下载固件被 Cloudflare 拦截 | CDN 防护 | 用 mirrors.vsean.net 镜像 |
| /tmp 文件重启后消失 | tmpfs,刷机会重置文件系统 | 刷机用的固件文件必须放 Mac 本地,不要放路由器 /tmp |
| uboot 恢复界面 port 80 timeout | uboot 启动需要时间 | 等待或重启路由器再试(已确认实际走 TFTP,非 web 界面) |
| Firefox 连不上 192.168.1.1 | 自动跳 HTTPS | 明确输入 http://192.168.1.1 |
| SSH host key 警告 | 新固件生成新密钥 | ssh-keygen -R 清除旧记录 |
| SSH key 刷机后丢失 | 新固件重置配置 | 重新写入 /etc/dropbear/authorized_keys |











