RA67 跑 RouterOS 一开 Wi-Fi 就重启,我让 AI 帮我解决

|
RA67 修复经历封面插画:工作台上的编程器、转接板、芯片夹,以及最终用来修复的 Linux 终端

我在海鲜市场买了一台已经改好 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 写的程序和给出的命令,最后解决了问题。前面让我花钱买工具、反复夹读、差点动烙铁的过程,也一样得记下来。

这台机器本来还能有线登录,系统内部也有办法处理。要是早点把这条路查清楚,我能少绕不少弯。不过我也有份:它说下一步,我就接着做,连买工具这一步都走得挺顺。

以后再让我下单,我得先问清楚:手头已有的能不能用?买回来是帮忙排查,还是已经有了可执行的修复办法?现有系统里,能不能先处理?

毕竟这次工具买齐的速度,比问题解决的速度快多了。

接着看看这些记录

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注