RA67 跑 RouterOS 一开 Wi-Fi 就重启,我让 AI 帮我解决
我在海鲜市场买了一台已经改好 512M 内存的 RA67,也就是 Redmi AX5,机器跑的是 RouterOS。
到手以后,我先做了压力测试。有线连接一点问题都没有,可无线一开,就开始无限重启。
还不能等它自己重启完,必须彻底断电,等 10 秒后再上电,才能重新正常启动。路由器还没安排好干活,我先把拔电源这套动作练熟了。
于是我让 AI 指导我排查,后来定位到容量声明出了问题:实际只有 512M,固件却把它当成了 1G。系统按这个错误的范围使用内存,一旦访问超出实际容量的地址,就可能异常、重启。
原因找到了,我想,把容量改回来应该就行了吧。想的挺简单,后面先变长的,是我的工具清单。
买的是 512M,系统认成了 1G
WinBox 显示总内存 1024MiB,可这台机器买回来时就已经改好了 512M 内存,改焊不是我这次做的。
后面核对的芯片型号是 NANYA NT5CC256M16ER-EK,南亚官方产品表对应 4Gb、x16,容量换算为 512MiB。
它在系统里显示为 hAP ax²,原厂 hAP ax²确实配了 1GB 内存。系统名字照搬过来了,内存可没跟着多长一半。
问题定位到这里,我就接着问 AI 怎么改。买回来是想用的,总不能每次开 Wi-Fi,都先做一遍断电流程。
我已有 CH341A,AI 却先让我买了 TTL
我手头原本就有 CH341A,板上是 5V、3.3V 两个电压选项,要处理的那颗 SPI 芯片却需要 1.8V。如果要用外接编程器,应该先看我已有的工具,说明缺一块合适的 1.8V 转接板,供电和信号电平都要匹配。
AI 却先让我买了 FT232RL 的 USB 转 TTL 串口工具,而且没把最关键的一点讲清楚:这个工具买回来,在我这台机器上到底能不能完成刷写?
我当时以为,买来接上,就有办法把问题解决。结果呢,接好以后主要看到了启动信息,没有拿到能继续操作的交互菜单,更没有通过它完成固件刷写。我这边下单挺利索,买完才发现,修复办法还没着落。
后来才弄明白,FT232RL 提供的是 USB 转 UART 串口通信,能看到日志,不等于已经有了可用的刷写办法。有些设备的启动器支持通过串口接收文件,再执行 Flash 写入,但得先确认设备端有这套功能和可用入口。我这次没有拿到这样的路径。
看启动日志有用,这个我认。但能帮忙排查,不等于买回来就能刷写。用途和条件应该在下单前说清楚,我也省得拿着新工具干着急。
转接板买了,下一步差点轮到拆芯片
接下来,我才给已有的 CH341A 补买了 1.8V 转接板,准备用芯片夹读取 SPI 里的内容。这里说的 1.8V,是板上这颗 W25Q64FW 的工作电压;它的容量是 8MiB。
结果又卡住了:用夹子在板读取,每次读出来的内容都不一样。文件大小相同,里面的字节却对不上。折腾了半天,没读出一份能放心用的备份,倒是攒出了一堆文件。
能确定的是,这样的读取结果不可靠。到底是夹子接触、在板负载,还是别的电气问题,当时没有查实。接着,AI 又建议把芯片焊下来,单独读取。
这时候我得先说清楚,我这手艺,拆和装可不是一回事:
我可以焊下来,但是不能保证一定能焊回去。
真焊不回去,容量还没改对,我先把一台能开机的路由器改成了零件。别的没修好,拆机技术倒是有机会突飞猛进。
说清楚这个情况以后,AI 才重新给出从现有 Linux 终端处理的办法。最后真正完成修复的,也正是这条路。
这台机器本来还能正常有线登录,最后也确实能从系统内部改好。回头看,前面买 TTL、买转接板、反复夹读,差点还拆芯片,这一圈绕得不小。
最后,Codex 给了我 Linux 终端的解决办法
后面的 Linux 步骤和命令,都是 Codex 给的。它分析我提供的备份、日志和执行结果,我照着一步步操作,再把结果发回去,遇到问题就接着调整。
继续分析后,Codex 查清了启动时到底从哪里取内存容量:SPI 里的静态 DTB 原本就是 512MiB,RouterBoot 启动时还会读取 Hard 中的 0x0D 容量字段,再生成交给内核的内存描述。要改的是这个仍然声明为 1GiB 的字段。
Codex 根据我这台机器的情况写了修复程序,最终成功执行的版本叫 ra67-capacity-fix-ram。程序和命令都由它提供,我照步骤执行。总算,这次用的是键盘,不用继续下单了。
这个程序会写入本机的一个 Flash 扇区,不是固件镜像,也不是通用的 Linux 内存设置命令。下面保留当时的操作过程,程序不提供下载。
1. 从这台机器已有的入口进入 Linux
Codex 先让我在 WinBox 的 New Terminal 里,通过这台移植系统已有的入口进入 Linux:
/sh
出现 /flash/rw/disk # 这样的提示符,就进入了本机的 Linux Shell。这是这台移植系统已有的入口,不能当成所有原版 RouterOS 都有的功能。
2. 先看系统实际管理了多少内存
接着照 Codex 给的命令,看系统到底认了多少内存,再核对运行中的设备树和 MTD 分区。当时用到的查询命令放在下面,都是只读的:
B=/pckg/option/bin/busybox
$B grep -E '^(MemTotal|MemAvailable):' /proc/meminfo
$B od -An -tx1 /sys/firmware/devicetree/base/memory@40000000/reg
$B cat /proc/mtd
这三项分别看 MemTotal、内存描述和分区布局,只读取信息,还没有修改容量。
本机记录里的内存起点是 0x40000000。长度如果是 0x40000000,表示 1GiB;改成 0x20000000 才是 512MiB。起点和长度得分开看。
3. 核对工具哈希,先 check,再 apply
第一版程序叫 ra67-capacity-fix,执行时又卡住了:RAM 备份目录检查没过,程序停在了擦写之前。核对本机 /ram 确实是 tmpfs,也就是内存文件系统后,Codex 把程序改为使用这个目录,给了我 ra67-capacity-fix-ram。
我继续照它给的步骤,把这个无扩展名的程序上传到 WinBox Files,再执行下面这段命令。这里保留的就是当时成功版本的命令,哈希校验和 check/apply 都通过了:
B=/pckg/option/bin/busybox
$B cp /flash/rw/disk/ra67-capacity-fix-ram /ram/ra67-capacity-fix-ram &&
$B chmod 700 /ram/ra67-capacity-fix-ram &&
H=$($B sha256sum /ram/ra67-capacity-fix-ram) &&
[ "${H%% *}" = "6ddac119d02f226548fe01ec7c467406dfd4026bcb7bc911fe79f57148116453" ] &&
/ram/ra67-capacity-fix-ram check &&
/ram/ra67-capacity-fix-ram apply
这段命令先把程序复制进 /ram,设置权限,核对 SHA256,再运行 check。中间的 && 让前一步失败时停下来。
CHECK_PASS 表示只读前置检查通过;apply 才会进入实际擦写。程序还会检查本机分区、大小和原内容哈希,保留原扇区并做完整回读。遇到 REFUSED 或 FAILED,应停下核对,不能删掉保护条件继续试。
这次逻辑上修改的是物理 SPI 偏移 0x2E002F,把 0x40 改为 0x20,对应容量从 1GiB 改成 512MiB。实际处理的是 [0x2E0000, 0x2E1000) 这个 4KiB 扇区,另外 4095 字节保留。
所以,别只记住“改一个字节”就照着写。这些偏移、分区和原内容,只核对过我这台机器;另一台也叫 RA67,不代表能直接套用。
4. 回读通过后,再看正常启动后的结果
这次总算看到了 REPAIR_PASS,整个 4KiB 扇区的写后回读匹配。程序不会自动重启,随后正常重启机器,我把结果截图发回去,看到的是:
- WinBox Total Memory:512.0MiB。
- 运行设备树内存长度:
0x20000000,即 512MiB。 - Linux
MemTotal:429144 kB。
Linux 官方文档说明,MemTotal 是扣除部分保留区域和内核占用后的可用总量,所以它不需要刚好等于全部 512MiB。
10 月 15 日留下的新备份也与成功版本的目标扇区匹配,容量字段仍为 512MiB。这次保留了原系统,没有改 CDT、静态 DTB 或 RouterBoot 程序,也没有刷入 30S_AX5_512M.bin。
现在放在家里当 AP,连续用了好几天
修复后,我已经把这台 RA67 放在家里当 AP 使用。系统还是原来的 RouterOS,期间没有刷其他系统。
连续用了好几天,之前一开 Wi-Fi 就重启的情况没有再出现,也没有遇到其他稳定性问题。对我这台机器来说,原来的 Wi-Fi 问题已经解决了。
容量显示改对了,Wi-Fi 也实际用了好几天,这才是我想要的结果。
目前用着没问题,我也就不再折腾它了。它安心当 AP,我把工具收起来,假装这次维修没摊这么大。
这篇不放固件或专用程序下载,原始备份和设备身份、许可、校准资料继续私存。把这段经历写下来,是想交代我跟着 AI 操作时遇到了什么,以及最后到底怎么解决。
路由器修好了,我也长点记性
这次 AI 确实帮上了忙,Codex 写的程序和给出的命令,最后解决了问题。前面让我花钱买工具、反复夹读、差点动烙铁的过程,也一样得记下来。
这台机器本来还能有线登录,系统内部也有办法处理。要是早点把这条路查清楚,我能少绕不少弯。不过我也有份:它说下一步,我就接着做,连买工具这一步都走得挺顺。
以后再让我下单,我得先问清楚:手头已有的能不能用?买回来是帮忙排查,还是已经有了可执行的修复办法?现有系统里,能不能先处理?
毕竟这次工具买齐的速度,比问题解决的速度快多了。