小米 Max3 刷机笔记

本文最后更新于 1 年前,文中所描述的信息可能已发生改变。

在一次整理房间的时候,无意间找到了自己已经没电关机的备用机:当初花300大洋购买的二手 小米 Max3,以大屏幕、大电池为卖点,买回来纯用来开热点的热点机。其羸弱的性能,打开当前的 3A 大作微信和QQ都要数秒,如果拿来日常使用简直是一种折磨。但其作为我少数苹果全家桶之外的设备,经常被我用来测试一些奇怪的软件和功能。

1. 开端… ​

在充电的时候,刚好想起来之前网上冲浪的时候见过别人介绍的一个软件:ACCA, 及其一个特殊功能:电池闲置模式,据称可以在充电的时候绕过电池直接给主板供电。这个功能看起来简直是为了让老旧安卓设备化身 24小时服务器的利器啊!但由于只有部分内核才支持,所以直接动身安装测试该功能是否适用于我的 Max3。

由于之前该设备经常被我用来瞎搞,当前正在使用的魔改 ROM 应该是自带 Root 和面具的,但是目前安装的 Magisk 软件已经无法正常打开了:“Magisk 屡次停止运行…”。无奈之下只能选择重刷。在寻找之前使用的魔改 ROM 的作者 “时过境迁” 的时候,发现该作者已经在酷安查无此人了,收藏的帖子也全部 404。这种情况其实在小众圈子还算比较常见,可能是遇到什么网络冲突或者单纯选择退坑删帖。但是由于没有作者的介绍,我望着百度云盘之前存的魔改 ROM 陷入沉思:各种魔改 ROM 的标题五花八门,没有仔细的介绍还真不知道哪个会自带 ROOT 适合养老…

俗称魔改的尽头是原装,找不到作者那只好刷回原版系统了,上小米官网找到 EU 的原版 ROM 后,直接进入之前刷入的 TWRP,欲通过 ADB Sideload 刷机。关于 TWRP:

TeamWin Recovery Project(TWRP)是一个开放源码软件的定制Recovery映像,供基于安卓的设备使用[5][6]。它提供了一个支持触摸屏的界面,允许用户向第三方安装固件和备份当前的系统[7][8][9]。因此,经常在root系统时安装[10],虽然它并不是root之后才能安装。

这时候已经时晚上的 00:30,此时的我很有自信,虽然对安卓刷机狗屁不通,但是仗着有 TWRP 的加持,就算刷死了也可以暂时使用 TWRP 放着做后续处理。

然而,我还是太小看安卓刷机的魅力了…

2. 事故 ​

顺利刷入原版 ROM 后尝试开机,事情开始变得不对劲了起来…

手机卡在彩色的 "MIUI" Logo 很长时间无法启动。在等待将近 20 分钟后,我有点慌了,此时已经接近凌晨一点,我决定放弃刷机,暂时进入 TWRP 保命。然而重启后,长按 “电源 + 音量加”,等待我的不是硕大的 TWRP 字体,而是 Xiaomi 原版的 Recovery 系统。原版的 Recovery 看起来十分精简,只提供了 Wipe data 和 Reboot 选项,此时我还抱有 TWRP 还存在的幻想,以为我只是不小心进入了原版 ROM 什么特殊的功能区里。

多次尝试进入 TWRP 无果后察觉到 寄,看来之前的 TWRP 已经离我而去了。

3. 尝试挽回 ​

TWRP 没了就刷嘛,有电脑有数据线,又不是什么难事。虽然已经凌晨一点,但是总不能让手机卡在 MIUI Logo 亮着屏度过一整夜。电脑 ADB 也早已安装好,直接进入 Fastboot 模式,连上电脑,下载官方 TWRP 准备刷机。我找到数据线,连上我的 Windows11 笔记本上仅有的两个 USB3.0 接口之一 (都是伏笔啊),打开 Powershell 开始刷机。

3.1 USB 驱动…? ​

powershell
PS C:\Users\baiiylu> fastboot.exe devices
PS C:\Users\baiiylu>

开幕雷击,fastboot devices 找不到任何设备,而在 设备管理器 中显示 外接设备带着一个黄色叹号,看起来是没有安装 USB 驱动导致的电脑无法识别 Fastboot 模式的手机。

在网上搜索了数分钟后,得知小米官方软件 Miflash_unlock 自带一个 USB 驱动安装程序,但是新版已经将其移除了。由于我并不需要 Miflash 来解锁 BL,也早已忘记了小米账号,所以从 B站的某位好心人中要到了百度网盘的旧版 Miflash 压缩包,双击包中的 MiUsbDriver.exe 即可安装驱动程序,fastboot 也可以正常识别设备了。

INFO: 字数不多,但找USB驱动耗时约 20分钟…

3.2 Fastboot 刷机报错,无反应 ​

在输入 fastboot.exe flash recovery twrp.img 指令尝试刷入 TWRP 后,powershell 随即卡住。在我意识到刷入一个大小仅为 60MB 左右的镜像并不需要数十分钟后,我发现遇到了第一个问题:没有错误信息,没有任何日志,我甚至不知道他现在到底是正在刷机还是报错了。

第一个浮现在我脑中的是 TWRP 的镜像问题,因为除了这个变量貌似也没有其他可以改变的东西了。我在互联网上下载了数个第三方魔改的 TWRP 镜像,并尝试更换命令逐一尝试,十分钟后,我收集到了好几种不同的错误:

powershell
PS C:\Users\baiiylu\Downloads> fastboot.exe flash recovery twrp.img
...卡住...
^C

PS C:\Users\baiiylu\Downloads> fastboot.exe boot .\twrp.img
Sending 'boot.img' (64656 KB)                      FAILED (remote: 'Requested download size is more than max allowed
')
fastboot: error: Command failed

PS C:\Users\baiiylu\Downloads> fastboot.exe boot .\twrp.img
Sending 'boot.img' (64656 KB)                      FAILED (Write to device failed (Too many links))
fastboot: error: Command failed

看着这些错误提示仍然一头雾水,这些提示并没有一条明确指出问题出现在哪里,第一条的 'Requested download size is more than max allowed 更是让我莫名其妙,纯本地的指令为什么会出现 请求下载大小大于最大值 这种申请错误的??

不过有了错误提示,上网检索也方便了不少,很快就查明这些问题都是由 数据线/USB3.0/USB接口 导致的,解决问题的办法也很简单,更换数据线,更换使用的 USB 接口, 更换 USB2.0 等。

在2024年,让我现在变出一个 USB2.0 接口的设备看起来不太现实。我翻箱倒柜的在宿舍里找到了四根线,分辨是 杂牌A-C,官方A-C,苹果 C-C,第三方雷电四 C-C,同时在我的电脑上包括 C口 和 A口 的所有的 USB 接口都试了数遍,问题依旧且无法解决。

INFO: 此过程耗时约 1 小时…

这时我终于意识到:使用 外星科技USB3.0 上给这台 MAX3 刷机简直是天方夜谭。我抱着怒火,此时已经接近凌晨两点半,最后的答案是你让我在2024年去找一个 USB2.0 的设备用来刷机?????

这使我想起了 MacBook 的拓展坞,上面貌似有一个 USB2.0 的接口可以使用。 十分钟后,我翻遍了整个宿舍,发现我居然没带拓展坞。

最后决定摆烂,最后一次尝试重启,依旧卡 MIUI 的logo,直接扔进抽屉里开始睡觉。

虽然只充了10%不到的电,不过死不死的,懒得管了。寄了回家直接咸鱼出掉,不给这祖宗找 USB2.0 供着了。

INFO: 总过程耗时约 3 小时,成功把手机刷成了砖,所以在此奉劝大家,不要在晚上(尤其是有点困意的时候)干高风险事情

3.3 (小篇:终)世界十大未解之谜:问题的消失 ​

INFO: 大约 8 小时后…

早上起来,打开抽屉一看,果然已经关机了,应该是没电了吧,我这样想着。顺手长按电源键检查尸体状况。随着一声震动,手机开机,短暂的 MIUI Logo 动画后直接进入了初始化界面。

???我的锅,难道是我等的时间短了?我当时等了将近20分钟都没开机,原来是要我等一晚上??

两分钟后初始化完成,检查手机系统状况,完好无损。

他妈的,又浪费三个小时宝贵的睡觉时间。

4. 不忘初心:继续尝试刷入面具 ROOT设备 ​

开机后直接安装面具开始走经典流程:提取原版 ROM 的 boot.img 进行修补,传到电脑,通过 Fastboot 刷入修补后的镜像。

我盯着眼前的教程:他妈的,还要用 Fastboot 刷入,还是逃不掉 USB2.0 的魔抓。

不过我抱着侥幸心理,仍然提取出了修补后的启动镜像,尝试刷入。果不其然,和之前的的情况都不一样,我又遇到了一个新的报错:

powershell
PS C:\Users\baiiylu> fastboot.exe flash boot magisk_patched.img
Warning: skip copying boot image avb footer (boot partition size: 0, boot image size: 35861802).
Sending 'boot' (35021 KB)                          FAILED (Write to device failed (Invalid argument))
fastboot: error: Command failed

简单搜索,导致的该问题的原因还是一样的:不能用 USB3.0,只能用 USB2.0。

我心中万马奔腾,为了省下数十大洋和一周的快递时间买一个只会用一次的 USB2.0 转换器,不如上网搜索一下有没有民间大神可以解决这个问题。

果然,在 xdaforum 论坛有一个大神提供了解决办法,通过修改注册表强制改变 Windows 对安卓设备连接时的对 USB 处理方式。但是该文章作者直接提到了仅在 Windows10上有效果

EDIT: This unfortunately doesn’t seem to work for Windows 11. It worked reliably under Windows 10 for me, but on Windows 11 it’s back to needing a USB 2.0 hub.

难道,又要白忙活一场了么…

5. USB3.0无法使用 Fastboot 解决方案:果神下场,拯救众生 ​

血压正高时,眼神一瞥,看到了躺在旁边的 Macbook。此时一个想法诞生,Windows 遇到的这些问题,会不会 Mac 上就刚好没有呢?

一开始我并不抱什么希望,毕竟 Windows 上的两个C口我也测试过,并不能解决问题。而 Macbook 上仅有C口,而且我还没有拓展坞。

打开 MacBook 终端,从一堆数据线中随便挑一根 C-C的数据线,随便找一个接口连上手机,将手机进入 Fastboot 模式,通过 fastboot devices 成功认出设备。目前来看,至少 Mac 不用浪费时间找什么USB驱动不是么。直接尝试刷入已经修补后的 启动镜像,一条指令下去直接成功:

shell
➜  ~ fastboot devices
3fd2c431 fastboot
➜  ~ fastboot flash boot magisk_patched.img
Sending 'boot' (35021 KB)                          OKAY [  0.760s]
Writing 'boot'                                     OKAY [  0.243s]
Finished. Total time: 1.091s
➜  ~ fastboot reboot
Rebooting                                          OKAY [  0.000s]
Finished. Total time: 0.000s

仅耗时一秒,解决了 Windows11 下三个小时解决不了的问题。(虽然大部分情况下是我的经验不够导致的)

但现在我已经成为纯真的 Mac 粉丝了。

一鼓作气,尝试刷入 TWRP,两秒完成:

shell
➜  ~ adb reboot fastboot
➜  ~ fastboot flash recovery twrp.img
Sending 'recovery' (64656 KB)                      OKAY [  1.716s]
Writing 'recovery'                                 OKAY [  0.453s]
Finished. Total time: 2.173s
➜  ~ fastboot reboot
Rebooting                                          OKAY [  0.000s]
Finished. Total time: 0.000s
➜  ~

不用挑数据线,不用挑接口,不用和傻逼 USB2.0 3.0 斗智斗勇,此时此刻,我对当时选择用 Windows 刷机而不是 Mac 产生了深深的自责和懊悔

回想起这短短三个小时途中遇到的 Windows11 文件管理器卡BUG,疯狂弹窗最后卡死电脑 只能任务管理器强制杀死 Explorer,Powershell 死机只能重开,环境变量默认不生效…原来 Windows 才是最后的恶魔么

6. 白忙活 (完) ​

Root 后下载 ACCA,进入设置点击测试该系统内核是否支持 “电池闲置模式”,数秒后,弹出提示:“当前内核并不支持该功能”。

戏剧性的结尾,为本篇画上一个完美的问号。

Js in Python:使用 Python 编写 Cloudflare Workers 项目
Cloudflared 在 Ipv6-Only 环境下无法启动