编辑
2025-06-02
Openwrt
0

目录

前言
关于 MR9000/MR9000X/MR9000-CN
变砖的原因
没有 OpenWRT 官方支持的固件
22.03.4 --> 23.05.0 --> 23.05.5 --> 24.10.1
找寻元凶
救砖
蛛丝马迹
解决思路
恢复原厂kernel
Linksys 原厂固件下载
刷回原厂
最后的最后
MR9000 的警告
补救措施

前言

Screenshot 2025-06-03 at 09.25.28.png

不作 就不会屎
没有调查研究 就没有发言权

至理名言啊~

关于 MR9000/MR9000X/MR9000-CN

它们都是同一款路由器,基于Linksys MR8300升级的型号,所以大体是相同的,存在一点点差异。

mr9000.png

变砖的原因

淘汰下来的设备,总想着不能浪费,当初也是旗舰机的存在。那就拿来刷个OP给办公室当主路由吧,性能还是不在话下的。

没有 OpenWRT 官方支持的固件

一样的IPQ4019芯片,但找遍全网,就是没有这个机器的固件可刷,Linksys官方的固件功能稍微差一点,比如不能AdGuardHome、不能魔法、不能指定DHCP客户端IP,等等...

还是 op 论坛搜索到了一个讨论这款路由器的帖子,于是打开了新世界的大门,因为某位大神给编译了固件...

继续发挥互联网🛜的优势,找到这位大神的 github ,继而找到他用来发布固件的 URL

22.03.4 --> 23.05.0 --> 23.05.5 --> 24.10.1

一路走来,到最新版本的时候变砖了,过程就不说了,其实在23.05版的时候就已经有苗头了,偶发会出现重启以后没反应了,但是断电再开会有50%概率能够启动。但其实在luci界面查看Advanced reboot可以发现问题的:显示第二分区不正常了。

找寻元凶

UART连接,发现问题:

## Booting kernel from FIT Image at 84000000 ... Bad FIT kernel image format! ERROR: can't get kernel image!

这... 难道是固件坏了?

mr8300_uart.jpg

拿出模块、杜邦线,按下图接好

mr9000.jpeg

341.jpeg 重新刷写一遍,ok,可以启动了,太好了!

关机,拔掉杜邦线,装好盖子,开机。 等待... ... ... ... ... 又不启动了,获取不到IP,盖子上的LED也一闪不闪!

完蛋!!!

难道是... 打开ChatGPT、Gemini问了一圈,都说大概率是NAND嘎了。

想想这机子用了十几年了,也确实、大概、可能真的是完蛋了!!!

可是,TFTP刷机的时候也没有报有坏块啊... 😭😭😭😭😭 先洗洗睡吧。

救砖

今天,一大早睡不着了,抱着不死心的心态,再次打开OP官网,查查有没有可能,突然想起ChatGPT曾经提起过这机器与MR8300非常接近,那就去看看吧。

蛛丝马迹

功夫不负有心人纳~~👍 在 MR8300 的页面终于找到了关键点 👇👇👇

注意⚠️

Installation of 23.05 and 24.10 (also main snapshot) requires a two steps installation. First you'll need to install 22.03 for changing a boot variable. Than you can install 23.05 or 24.10 (or main). Don't try to install or upgrade to 23.05 or 24.10 directly, it will soft-brick your device! Procedure is easy and described below.

警告⚠️

WARNING FOR INSTALLATION

Installation of 23.05/24.10 or snapshot requires two steps.

a previous working OpenWrt 22.03 to run several commands to change a bootloader variable. This is only needed once in the lifetime of the device. flashing 23.05/24.10 or snapshot. Don't try to flash directly 23.05/24.10, it won't work.

信息🔔

Preliminary. Despite its fair amount of flash memory (256MB), the MR8300 has a tiny kernel partition limited to 3MB. This is sufficient to boot Linksys OEM and OpenWrt 22.03 (based on kernel 5.10). Meanwhile this is not enough to boot kernels 5.15 (23.05) or 6.6 (24.10). There is a workaround for this situation, and it involves changing a bootloader variable. This is only needed once in the lifetime of the device, and can be done easily via SSH. Once the bootloader has been tweaked, the device can boot everything: Linksys OEM, OpenWrt 22.03, 23.05, 24.10 and snapshot.

同时,在 论坛 里也找到了类似的情况:

Screenshot 2025-06-02 at 20.30.20.png

解决思路

既然 MR9000 基于 MR8300 ,并且它们的硬件配置高度相似,那么极大可能也是这个原因导致的。 那么我们再一次连上UART,看看u-boot进去之后,kernel的大小:

(IPQ40xx) # printenv altkern=5f80000 auto_recovery=yes baudrate=115200 boot_part=2 boot_part_ready=3 boot_ver=1.4.0 bootcmd=if test $auto_recovery = no; then bootipq; elif test $boot_part = 1; then run bootpart1; else run bootpart2; fi bootdelay=2 bootpart1=set bootargs $partbootargs && nand read $loadaddr $prikern $kernsize && bootm $loadaddr bootpart2=set bootargs $partbootargs2 && nand read $loadaddr $altkern $kernsize && bootm $loadaddr ethact=eth0 ethaddr=00:03:7f:ba:db:ad flash_type=2 flashimg=tftp $loadaddr $image && nand erase $prikern $imgsize && nand write $loadaddr $prikern $filesize flashimg2=tftp $loadaddr $image && nand erase $altkern $imgsize && nand write $loadaddr $altkern $filesize image=lion.img imgsize=5800000 ipaddr=192.168.1.1 kernsize=300000 # <-- 注意,这就是罪魁祸首 loadaddr=84000000 machid=8010006 netmask=255.255.255.0 partbootargs=init=/sbin/init rootfstype=ubifs ubi.mtd=11,2048 root=ubi0:ubifs rootwait rw partbootargs2=init=/sbin/init rootfstype=ubifs ubi.mtd=13,2048 root=ubi0:ubifs rootwait rw prikern=780000 serverip=192.168.1.254 stderr=serial stdin=serial stdout=serial

元凶kernsize=300000既然找到,那么解决它也就易如反掌了:

setenv kernsize 500000 saveenv reset

原因

因为23.05开始,kernel都大于3MB了,u-boot极大概率会报错

Bad FIT kernel image format! ERROR: can't get kernel image!

果然,reset 自动重启就天下太平了。

恢复原厂kernel

Linksys 原厂固件下载

https://support.linksys.com/ 找到 MR9000 Downloads, Documents, and User Guide 页面:

MR9000 Downloads

The hardware version is located beside or beneath the model number and is labeled version, ver. or V. If there is no version number beside the model number on your Linksys product, the device is version 1. If you still have trouble finding your version number, see the complete article to learn more.

Select your hardware version:
▼ Version 1.0

Firmware

Ver. 1.1.3.210125
Latest Date: 4/6/2022
Download 48.5 MB
Release Notes

下载下来的固件名是:FW_MR9000_1.1.3.210125_prod.img 保存好备用。

刷回原厂

无论是 UART 进入 u-boot ,还是ssh到 OpenWRT,都要先启动到alt_kernel/alt_rootfs,这样确保刷回去的原厂固件在kernel和roofs。

u-boot

printenv
setenv boot_part 2
saveenv
reset

ssh root@openwrt

fw_printenv
fw_setenv boot_part 2
reboot

luci-app-advenced-reboot

Reboot to alternative partition...

然后就简单啦,和更新OP时候一样,在 Backup/Flash Firmware 界面 选择 Flash new firmware image 上传刚刚保存的 FW_MR9000_1.1.3.210125_prod.img ,开刷。

Screenshot 2025-06-02 at 20.58.28.png

或者也可以ssh 进去命令行:

rsync -avz /path/to/folder/FW_MR9000_1.1.3.210125_prod.img root@openwrt_ip:/tmp/
ssh root@openwrt_ip
sysupgrade /tmp/FW_MR9000_1.1.3.210125_prod.img

大功告成,完美~ 👍👍👍

最后的最后

MR9000 的警告

警告

  • MR9000 没有OP官方支持,是歪果仁大神在 IPQ4019 的固件源码基础上修改编译的
  • 基于此,千万嫑手贱去更新 ath10k-board-qca9984
  • 别问我怎么知道的

但是真的 更新了 ath10k-board-qca9984 也有办法补救:

Screenshot 2025-06-03 at 09.42.50.png

补救措施

提示

cp /rom/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin /lib/firmware/ath10k/QCA9984/hw1.0/ cp /rom/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin /lib/firmware/ath10k/QCA9984/hw1.0/ ls -l /lib/firmware/ath10k/QCA9984/hw1.0/ reboot