RAX3000M (MT7981) 跨代升级与 TFTP 底层救砖排错记录

1. 背景与目标

  • 设备:CMCC RAX3000M (NAND 128M版本)
  • 原系统:ImmortalWrt 21.02-SNAPSHOT (2022年底层)
  • 目标系统:ImmortalWrt 25.12.0 稳定版 (用于旁路由网络代理部署)

2. 升级阻断分析与排错路线

2.1 Web 与 U-Boot 升级失败 (格式断代)

尝试在 LuCI 后台与 U-Boot 恢复界面直接上传 immortalwrt-25.12.0-mediatek-filogic-cmcc_rax3000m-squashfs-sysupgrade.itb 均告失败。

  • LuCI 报错堆栈
    Invalid image type. Image check failed.
    不支持所上传的映像文件格式,请选择适合当前平台的通用映像文件。

  • U-Boot 报错堆栈
    UPDATE FAILED
    Something went wrong during update
    Probably you have chosen wrong file.
    U-Boot 2022.07 (Sep 18 2023 - 17:34:15 +0800)

  • 故障原理:21.02 时代的 LuCI 脚本与旧版 U-Boot 的 Web 验证逻辑被硬编码为仅识别传统的 .bin 格式。对 25.12.0 启用的 .itb (FIT Image) 格式缺少识别魔数(Magic Number),导致文件验证被强行拦截。

2.2 CLI 强刷底层导致软砖 (引导链断裂)

尝试通过 SSH 绕过验证,直接更新底层 U-Boot (FIP):

mtd write /tmp/immortalwrt-25.12.0-mediatek-filogic-cmcc_rax3000m-nand-bl31-uboot.fip FIP
  • 现象:写入成功后重启,路由器常亮蓝灯,PC 提示“未识别的网络”,无法获取 IP,无法访问 Web 后台。
  • 故障原理:MT7981 芯片的引导链分为 BL2 (Preloader) 和 FIP (U-Boot) 两个阶段。2022 年的古老 BL2 无法解析 2025 年新版 FIP 的内存地址偏移与签名校验,导致引导程序在硬件初始化(如网口交换芯片激活)阶段直接挂起死锁。

3. Wireshark 抓包嗅探与底层机制确认

在软砖状态下,断电、按住 Reset 通电 8 秒后,通过 Wireshark 抓包监听物理网卡。

  • 网络包捕获结果
    283   61.571251   be:9b:1f:ab:40:3b   Broadcast   ARP 60  Who has 192.168.1.254? Tell 192.168.1.1
    1109  258.951388  192.168.1.1 192.168.1.254   TFTP    139 Read Request, File: immortalwrt-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb
    1110  258.951447  192.168.1.254   192.168.1.1 ICMP    167 Destination unreachable (Port unreachable)


  • 故障原理:虽然常规引导卡死,但 MTK U-Boot 包含硬编码的灾难恢复机制 (Disaster Recovery)。当连续引导失败或触发特定 Reset 组合时,路由器(192.168.1.1)会强制向局域网广播 ARP 寻找 192.168.1.254,并利用 TFTP 协议(UDP 端口 69)主动拉取名为 initramfs-recovery.itb 的急救固件。

4. 核心解决步骤:TFTP 容灾恢复部署

4.1 网络与文件准备

  1. 配置网卡:将 PC 的有线网卡 IPv4 静态指定为恢复机制所需的 IP。
    • IP Address(IP地址:路由器硬编码寻找的单播目标):192.168.1.254
    • Subnet Mask(子网掩码):255.255.255.0
  2. 获取急救固件:前往官方底层文件服务器(如 Index of /releases/25.12.0/targets/mediatek/filogic/),下载 rax3000m-initramfs(内存文件系统:运行在RAM中的临时恢复环境,断电即丢失)。
  3. 精准重命名:将下载的文件必须严格匹配抓包中请求的文件名:
    immortalwrt-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb

4.2 Tftpd64 喂饭级推流

  1. 下载免安装版 tftpd64_portable,将其与重命名后的 .itb 文件放置于同一目录。
  2. 运行 tftpd64.exeCurrent Directory 指向当前文件夹,Server interfaces(服务器接口:TFTP监听的本地网卡)严格指定为 192.168.1.254
  3. 物理触发:路由器断电 -> 持续按住 Reset 不放 -> 通电 -> 倒计时 8 秒 -> 松开 Reset
  4. Tftpd64 界面瞬间弹出传输进度条,传输完毕后路由器自动解压并重启。

4.3 固化正式系统

由于 initramfs 仅在内存中运行,必须进入临时系统进行最终的闪存固化。

  1. 将 PC 网卡恢复为 自动获得 IP 地址 (DHCP)
  2. 浏览器访问 192.168.1.1,进入临时恢复系统(页面会高亮提示“系统在恢复 (initramfs) 模式下运行”)。
  3. 导航至 系统 -> 备份/升级 -> 更新固件
  4. 上传主线固件:immortalwrt-25.12.0-mediatek-filogic-cmcc_rax3000m-squashfs-sysupgrade.itb
  5. 极其重要:必须取消勾选 Keep settings(保留配置:跨大版本携带旧配置会引发内核模块加载冲突和网络瘫痪)。
  6. 确认刷写,等待路由器将系统写入 ubi 存储分区并最终重启。旁路由基础环境构建完成。