前言です
有些机型无法使用解密配置文件的方法来破解 RAX3000M 路由器(具体症状表现为无法上传下载配置,估计移动被搞烦了一刀切了),但是又想刷机咋办捏,别急,你新毛有的是办法和手段,根据我翻遍整个恩山汇总的资料,我终于发现了一个通刷办法,对于 MT7622/MT7629 和 MT798x 都是秒杀,这个办法就是——TTL强刷!(砖了也照样刷!)
准备材料
- RAX3000M EMMC一台
- USB转TTL
- 三根电线
- 电烙铁(把TTL线焊上去,你要有本事你也可以不悍用手夹)
- 一台安装有 Ubuntu 的电脑(不能WSL,必须实体机)
- 良好的网络环境(你知道我在说什么👁)
适用人群
会使用 Linux ,此教程并不适合小白。
资料获取
BL2文件地址(感谢@暗云):https://www.lanzouw.com/ioTYu1pvi23g
UBOOT文件地址(感谢@hanwckf):https://github.com/hanwckf/bl-mt798x/releases/
刷机原理
网上常见的 RAX3000M 刷机办法
- 通过使用泄露出来的盐来解密配置文件,重新打开 SSH 并且删掉 root 密码达到登录目的。(我这台机器无法上下传配置文件,卒)
- TTL 查看系统内核启动日志,当 OpenWrt 一样在启动时按 F 后回车进入系统急救模式(我这台急救模式功能被砍了)
我们另辟蹊径,不往操作系统方面想,往更底层想:直接干他丫的 bootloader 和 uboot !所以有了我们第三种方法——救砖强刷!
具体的实现步骤
- 通过 bootloder 来引导我们自己的 uboot
- 通过我们自己的 uboot 刷入我们自己的系统
现在开干吧!
连接TTL
现在给 Ubuntu 安装 minicom 来连接 TTL。
sudo apt install minicom
minicom 是一款基于命令行的TTL交互工具
然后我们根据恩山大佬@bb1993916给出的接线定义图来接线,TX 接 RX ,RX 接 TX,GND 接 GND,剩下一个 VCC 不要接。
然后使用minicom
命令来查看 TTL 内容,波特率 115200 。
sudo minicom -b 115200 -D /dev/ttyUSB0
随便按几下回车,有内容输出就好了
⚠️Tips:别焊坏了!
编译 mtk_uartboot 工具
这款工具是 rust 语言写的,编译方法可以看我写的 Waylyrics 编译教程!
先安装预备工具哦
sudo apt-get install git nano build-essential libssl-dev libgtk-4-dev libdbus-1-dev libmimalloc-dev gettext rustup
rustup update stable
首先我们在你家创建个文件夹(不把你家搞脏脏)
mkdir gittemp
cd gittemp
然后下拉代码
git clone https://github.com/981213/mtk_uartboot.git
cd mtk_uartboot
开始编译(使用标准工具链)
cargo build --release --locked --target-dir target
编译完成后你就会在 target/release 目录下能找到一个名为 mtk_uartboot 二进制文件!
开始救砖
把上面的获取到的文件都丢到一个文件夹里面,方便操作
开始 gank bootloader
sudo ./mtk_uartboot -s /dev/ttyUSB0 -p mt7981-ddr4-bl2.bin -a -f ./mt7981_cmcc_rax3000m-emmc-fip.bin --brom-load-baudrate 115200 --bl2-load-baudrate 115200 && sudo minicom -b 115200 -D /dev/ttyUSB0
示范输出:
xmb505@xmb505-disk ~/rax3000> sudo ./mtk_uartboot -s /dev/ttyUSB0 -p mt7981-ddr4-bl2.bin -a -f ./mt7981_cmcc_rax3000m-emmc-fip.bin --brom-load-baudrate 115200 --bl2-load-baudrate 115200 && sudo minicom -D /dev/ttyUSB0
[sudo] xmb505 的密码:
mtk_uartboot - 0.1.1
Using serial port: /dev/ttyUSB0
Handshake...
hw code: 0x7981
hw sub code: 0x8a00
hw ver: 0xca00
sw ver: 0x1
Baud rate set to 115200
sending payload to 0x201000...
Checksum: 0x48b7
Setting baudrate back to 115200
Jumping to 0x201000 in aarch64...
Waiting for BL2. Message below:
==================================
NOTICE: BL2: v2.10.0 (release):v2.4-rc0-5845-gbacca82a8-dirty
NOTICE: BL2: Built : 20:20:25, Feb 2 2024
NOTICE: WDT: Cold boot
NOTICE: WDT: disabled
NOTICE: EMI: Using DDR4 settings
NOTICE: EMI: Detected DRAM size: 512MB
NOTICE: EMI: complex R/W mem test passed
NOTICE: CPU: MT7981 (1302MHz)
NOTICE: Starting UART download handshake ...
==================================
BL2 UART DL version: 0x10
Baudrate set to: 115200
进入 uboot 后千万不要正常启动!立马进入刷机模式!
如果你看到以下界面就大功告成!
*** U-Boot Boot Menu ***
1. Startup system (Default)
2. Upgrade firmware
3. Upgrade ATF BL2
4. Upgrade ATF FIP
5. Upgrade ATF BL31 only
6. Upgrade bootloader only
7. Upgrade partition table
8. Upgrade single image
9. Load image
a. Start Web failsafe
0. U-Boot console
Press UP/DOWN to move, ENTER to select, ESC to quit
按 a 键进入网页刷机模式
Web failsafe UI started
URL: http://192.168.1.1/
Press Ctrl+C to exit
用网线将电脑和路由器连接起来,电脑自身 IP 设置为 192.168.1.100 ,然后使用浏览器进入 192.168.1.1 进入网页刷机界面!
大功告成!
刷入 UBOOT
你以为 uboot 刷进去了吗?其实并没有,这个时候的 uboot 只是游荡在内存中的赛博幽灵,我们先需要把 uboot 刷入路由器才好执行后面的步骤!
进入网页 http://192.168.1.1/uboot.html 打开 uboot 刷机界面,上传之前下载的 uboot 然后刷入就ok了!
之后你就可以长按 RESET 键开机进入网页刷机模式了!
刷入系统
都做到这个点了,给大家分享个网站吧!OPENWRT.AI
想编译啥固件就编译啥固件!(编译的时候记得带 turbo-acc 我靠有无线加速功能!
额外内容:分区扩容
原版的分区我第一眼看过去还以为是安卓的AB分区给我吓一跳,结果只需要 kernel 分区和 rootfs 分区就可以了。
要在 uboot 中刷入分区,需要进入 http://192.168.1.1/gpt.html 来刷写分区表(比 fastboot 强
每个批次的 EMMC 大小都有可能不一样,请仔细甄别。
我这里有现成的分区表文件,直接刷入即可,但是 EMMC 后部会留出一块空间,有能力者可自行补上。
文件地址:下载链接
备份分区表?可以的兄弟可以的,下面是命令:
dd if=/dev/mmcblk0 of=gpt.bin bs=512 count=34