本文基于实机记录整理:机型 RD03,原厂固件 1.0.84,目标 ImmortalWrt 25.12.1 / OpenWrt U-Boot layout。
环境:Windows + 网线 + xmir-patcher。
刷机有风险。务必先做完整备份,并妥善保存。
一、确认机型与目标
| 项目 | 值 |
|---|---|
| 机型 | 小米 AX3000T 国行 RD03(国际版为 RD23) |
| 布局 | OpenWrt U-Boot layout(ubootmod,空间更大) |
| 固件 | ImmortalWrt 25.12.1 |
固件选择页:
不要选 stock layout,也不要混用两套镜像。
RD03V2(高通版)流程不同,本文不适用。
二、准备材料
1. 硬件
- AX3000T 路由器
- 电脑(本文以 Windows 为例)
- 网线(接路由器 LAN 口,不要接 WAN)
2. 软件
- xmir-patcher(Windows 双击
run.bat) - Windows Terminal / PowerShell(自带
scp/ssh) - 浏览器
3. 下载 5 个固件文件(全部要下)
在 Firmware Selector 的 ubootmod 页面下载:
| 页面按钮 | 实际用途 |
|---|---|
| INITRAMFS-FACTORY.UBI | 从原厂进入临时系统 |
| PRELOADER.BIN | 写入 BL2 |
| BL31-UBOOT.FIP | 写入 FIP(U-Boot) |
| KERNEL | recovery 镜像(initramfs-recovery.itb) |
| SYSUPGRADE | 正式系统(squashfs-sysupgrade.itb) |
也可从镜像站直接下载(文件名前缀相同):
https://downloads.immortalwrt.org/releases/25.12.1/targets/mediatek/filogic/
示例文件名:
immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-initramfs-factory.ubi
immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-preloader.bin
immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-bl31-uboot.fip
immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-initramfs-recovery.itb
immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-squashfs-sysupgrade.itb
三、用 xmir-patcher 开启 SSH 并备份
- 电脑网线接 LAN,浏览器确认能打开
http://192.168.31.1 - 运行
run.bat - 菜单操作:
| 步骤 | 选项 | 说明 |
|---|---|---|
| 1 | 1 | 设置 IP,一般为 192.168.31.1 |
| 2 | 2 | Connect,输入小米后台密码;成功会提示 SSH 已在 22 端口激活 |
| 3 | 4 | Create full backup(必做) |
| 4 | 8 → 2 | 修改 root 密码 |
| 5 | 0 回主菜单 → 6 | Install permanent SSH(固化 SSH) |
备份目录一般为 backups/,至少应包含:
mtd1_BL2.binmtd5_FIP.binmtd4_Factory.binmtd8_ubi.bin等
立刻把整个 backups 文件夹复制到 U 盘或其他磁盘。
注意:别进错菜单
- 主菜单
6= 固化 SSH(要做这个) - 扩展菜单
6= Set kernel boot address(不要乱选)
若误进扩展菜单的 6,按 Ctrl+C 退出,再 0 回主菜单。
验证 SSH
主机: 192.168.31.1
用户: root
密码: 刚设置的 root 密码
能看到 Welcome to XiaoQiang! 即可。
四、上传固件到原厂系统 /tmp
小米原厂 dropbear 对 SFTP 不友好,FinalShell 等工具常报「刷新失败 / NullPointerException」。
推荐用 PowerShell scp:
在固件所在目录执行:
scp -O -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa .\immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-* root@192.168.31.1:/tmp/
说明:
- 新版 OpenSSH 默认不接受
ssh-rsa,必须加上面两个-o - 首次连接输入
yes - 输入 root 密码
SSH 中确认:
ls -lh /tmp/immortalwrt*
cat /proc/mtd
应能看到 5 个文件;分区大致为:
mtd8: "ubi"
mtd9: "ubi1"
五、刷入临时 ImmortalWrt(factory)
原厂系统正在使用的分区不能直接 ubiformat。
先看当前从哪套启动:
cat /proc/cmdline
nvram get flag_boot_rootfs
nvram get flag_last_success
若输出类似:
firmware=0 mtd=ubi
flag_boot_rootfs=0
说明正在跑 mtd8,应刷对面的 mtd9:
ubiformat /dev/mtd9 -y -f /tmp/immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-initramfs-factory.ubi
若对 mtd8 出现 Permission denied,就是这个原因,改刷空闲分区即可。
完成后切换启动标志(官方 Wiki 写法):
nvram set boot_wait=on
nvram set uart_en=1
nvram set flag_boot_rootfs=1
nvram set flag_last_success=1
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
reboot
若当时是
firmware=1,则刷mtd8,并把flag_boot_rootfs/flag_last_success设为0。
重启后
- 等待 1~2 分钟
- 访问
http://192.168.1.1 - 若上不了网,电脑网卡临时设为:
192.168.1.10/255.255.255.0 - SSH:
root@192.168.1.1(一般先无密码)
能进 ImmortalWrt,且型号尚未完全变成 U-Boot layout 也正常——这只是临时系统。
六、完成 OpenWrt U-Boot layout
/tmp 重启后会清空,需要重新上传:
scp -O -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa .\immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-* root@192.168.1.1:/tmp/
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.1.1
1. 安装并加载 mtd-rw
apk --update-cache add kmod-mtd-rw
insmod mtd-rw i_want_a_brick=1
若 apk 被 Killed(临时系统内存紧张),多试一次,或确认 WAN 能上网后再装。insmod 无报错即可。
2. 重建 UBI 并创建 ubootenv
ubidetach -p /dev/mtd8; ubiformat /dev/mtd8 -y; ubiattach -p /dev/mtd8
ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
说明:
ubidetach若报No such device,可忽略- erase counter 警告通常可忽略
- 此时
mtd8常见大小约为 112 MiB(ubootmod 布局)
3. 写入 recovery(建议做)
ImmortalWrt 25.12.1 的 recovery 约 13.1MB,官方示例的 10MiB 不够,需加大:
ubimkvol /dev/ubi0 -n 2 -N recovery -s 14MiB
ubiupdatevol /dev/ubi0_2 /tmp/immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-initramfs-recovery.itb
若之前已用 10MiB 建过卷:
ubirmvol /dev/ubi0 -n 2
ubimkvol /dev/ubi0 -n 2 -N recovery -s 14MiB
ubiupdatevol /dev/ubi0_2 /tmp/immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-initramfs-recovery.itb
4. 写入 OpenWrt U-Boot(最关键,勿断电)
mtd write /tmp/immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-preloader.bin BL2
mtd write /tmp/immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-bl31-uboot.fip FIP
看到 Unlocking ... Writing ... 且回到提示符即成功。
5. 刷入正式系统
sysupgrade -n /tmp/immortalwrt-25.12.1-mediatek-filogic-xiaomi_mi-router-ax3000t-ubootmod-squashfs-sysupgrade.itb
正常现象:
- 提示
Signature check OK - SSH 断开:
Connection closed/Connection failed
等待 2~3 分钟,不要断电。
七、验收
打开 http://192.168.1.1,状态页应类似:
主机名 ImmortalWrt
型号 Xiaomi Mi Router AX3000T (OpenWrt U-Boot layout)
目标平台 mediatek/filogic
固件版本 ImmortalWrt 25.12.1 ...
建议立刻:
- 设置
root密码 - 电脑网卡改回 DHCP
- WAN 口接上级网络测试上网
- 继续保存好原厂
backups
八、常见问题
1. FinalShell「刷新失败 / NullPointerException」
SFTP 列目录失败,不是变砖。改用 PowerShell scp,或 WinSCP 选 SCP 协议。
2. scp: no matching host key type found. Their offer: ssh-rsa
加上:
-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa
3. ubiformat /dev/mtd8 → Permission denied
正在运行的分区不能格式化。看 firmware=,刷对面分区并改 flag_boot_*。
4. recovery 写入报 will not fit volume
把 recovery 卷从 10MiB 加大到 14MiB(或按实际镜像大小)。
5. apk ... Killed
临时 initramfs 内存不够。重试;或先让 WAN 通网后再装 kmod-mtd-rw。
6. sysupgrade 后 SSH 断开
正常。等重启完成再访问 192.168.1.1。
7. 备份是否一定能还原?
完整备份能覆盖绝大多数情况,但若引导彻底损坏,可能还需要 UART / 修复工具。
有备份 ≠ 任何砖都能一键复活,但强烈建议必须备份。
九、流程总览
原厂 1.0.84
→ xmir-patcher 开 SSH + 全备份 + 固化 SSH
→ scp 上传 ubootmod 五件套
→ ubiformat 空闲分区(firmware=0 则 mtd9)
→ nvram 切换启动并 reboot
→ 进入临时 ImmortalWrt (192.168.1.1)
→ 再上传五件套
→ kmod-mtd-rw
→ 重建 ubi + ubootenv + recovery(14MiB)
→ mtd write BL2 / FIP
→ sysupgrade .itb
→ 正式 ImmortalWrt (OpenWrt U-Boot layout)
十、参考
实机记录:RD03 / 1.0.84 → ImmortalWrt 25.12.1 U-Boot layout(含 recovery)。