发布于 

CMCC RAX3000M 性能版 OpenWrt 救砖与无线修复记录

# 起因

事情是这样的,之前在配置 OpenWrt AP 模式的时候误修改了 LAN 口的地址,导致直接无法访问路由器的后台。

我一开始想到的方法是直接重置路由器,也就是按住 Reset 按键,但是并没有效果,不过路由器进入了 initramfs 模式。

因为不知道上家是怎么刷写的固件,通过闲鱼联系商家也直接失联,因此我没敢贸然重新刷写固件,而是尝试按照 ChatGPT 给出的教程进行重置。

# 阶段一:尝试重置 (Initramfs)

首先进入 initramfs 模式,通过 SSH 连接到路由器,然后根据 ChatGPT 的建议使用 firstboot 命令重置路由器,最后 reboot 重启。

PS:其实这一步是直接可以在网页内重置的,路径通常是 系统 -> 备份和升级 -> 恢复出厂设置 。可惜我当时以为这个重置按钮指的是 “上传自己的备份文件然后点这个按钮恢复备份”,从而走上了一条不归路。

重启结束后,果然可以进入路由器后台了。但高兴得太早了,我发现网络下的无线选项直接消失了。无线路由器没有无线功能?这合理吗??

继续拷打 ChatGPT,根据它给出的方法,使用 iw dev 查看是否有无线设备,结果返回为空。

查看内核日志 dmesg | grep -i -E 'wifi|wlan|ath|mt7|mtk|brcm' ,发现有很多报错:

1
2
3
4
5
6
7
8
9
root@OpenWrt:~# dmesg | grep -i -E 'wifi|wlan|ath|mt7|mtk|brcm'
[ 1.015158] mtk-wdt 1001c000.watchdog: Watchdog enabled (timeout=31 sec, nowayout=0)
[ 1.229112] mtk_soc_eth 15100000.ethernet: generated random MAC address 65:74:68:25:64:00
[ 1.237345] mtk_soc_eth 15100000.ethernet: generated random MAC address 65:74:68:25:64:00
[ 1.262934] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc081e80000, irq 74
[ 1.273021] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc081e80000, irq 74
[ 1.317500] FIT: flat_dt sub-image 0x005a5000..0x005a5be9 "fdt-mt7981b-cmcc-rax3000m-emmc" (ARM64 OpenWrt cmcc_rax3000m device tree overlay mt7981b-cmcc-rax3000m-emmc)
[ 1.333319] FIT: flat_dt sub-image 0x005a6000..0x005a6d0d "fdt-mt7981b-cmcc-rax3000m-nand" (ARM64 OpenWrt cmcc_rax3000m device tree overlay mt7981b-cmcc-rax3000m-nand)
.....

检查 cat /proc/mtd 里也什么都没有。ChatGPT 给出的建议大多只是检查步骤,甚至多次误导我说还在 initramfs 下,让我重启查看是否恢复。

1
👉 90% 可以判定:你在 initramfs

# 阶段二:刷写 U-Boot

问 ChatGPT 无果后,我决定按照别人的教程刷写一下 U-Boot。参考了知乎上的一篇文章:CMCC-RAX3000M 刷机教程

使用 scp 命令将所需的文件传入到 /tmp 目录内(上传过程又花费了一些时间安装 scp 相关的包)。

注意:下面命令是刷入 eMMC 版本的 U-Boot,NAND 版本请不要乱刷!

1
2
3
4
5
6
dd if=mt7981-cmcc_rax3000m-emmc-gpt.bin of=/dev/mmcblk0 bs=512 seek=0 count=34 conv=fsync
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=/dev/zero of=/dev/mmcblk0boot0 bs=512 count=8192 conv=fsync
dd if=mt7981-cmcc_rax3000m-emmc-bl2.bin of=/dev/mmcblk0boot0 bs=512 conv=fsync
dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=13312 count=8192 conv=fsync
dd if=mt7981-cmcc_rax3000m-emmc-fip.bin of=/dev/mmcblk0 bs=512 seek=13312 conv=fsync

完成后进入 U-Boot,上传固件然后点击升级。
刷完后重启,无线选项卡终于出来了,但是两个硬件都显示为 2.4G,而且搜不到无线热点。

# 阶段三:恢复 Factory 分区

继续拷打 ChatGPT,从它的一大堆废话中筛选出了一条关键信息:恢复 factory 分区的备份

百度搜索路由器型号 + eeprom,果然有好心人备份:恩山无线论坛 - CMCC RAX3000M eeprom 备份

根据教程:

  1. 提取 3 楼提供的 factory.bin 备份文件。
  2. 修改其中提到的 4 处 MAC 地址:
    • 左上:2.4G 无线 BSSID
    • 右上:5G 无线 BSSID
    • 左下:LAN 口 MAC
    • 右下:WAN 口 MAC
  3. 机壳底部 MAC 填入 LAN 位置,其他依次加 1(按 16 进制,每个字符不能超过 F)。
  4. 保存后,使用 SCP 上传到 /tmp 目录。
  5. SSH 登录执行下面命令:
1
dd if=/tmp/mmcblk0p2.bin of=$(blkid -t PARTLABEL=factory -o device) conv=fsync

下载下来使用教程中给出的命令刷写进去,没有效果
又是一番拷打 GPT 后,还是没有效果。

# 最终解决

最后,我发现教程里有提到重置一下路由器

我想到了一开始那个按钮,果然返回一看,那个按钮就是重置路由器。
点击重置,等待路由器重启。

OK,完全恢复! 可以搜得到无线信号了。

# 总结

这次折腾的教训:

  1. 不要随意修改 LAN 口配置,尤其是远程操作时。
  2. 恢复出厂设置往往是解决配置错误的终极大法,但要找对地方。
  3. 无线丢失通常与 factory 分区(EEPROM / 校准数据)有关,刷机时要小心保留或备份该分区。
  4. 刷写 factory 分区后,必须重置路由器才能生效。