简介:小米官方2022年05月07日版MiFlash刷机平台面向需要为小米设备刷写固件的用户、维修人员与刷机爱好者,提供免授权刷写入口,支持高通与MTK芯片,也可处理JLQ-pks格式,并带有驱动安装及安卓相关选项设置;需要留意它并非MiFlash Pro。压缩包共306个文件、约64.71MB,主要包含95个dll、55个pak、29个exe、29个xml、26个png以及若干驱动与配置文件,分别对应运行库、界面资源、刷写程序、参数说明和设备驱动,目录层次较完整,便于按模块查找所需组件;其中ini、inf、cat与bin等文件还可帮助判断驱动描述、签名信息与底层数据是否完整。已有2880人学习下载,可用于了解该版本平台的组成与功能边界,核对驱动、配置文件和刷写入口是否齐全,也能为高通、MTK机型刷写时遇到的设备识别、驱动缺失或选项设置问题提供排查参考。
1. 一台卡在开机动画的机器,把我按回了 MiFlash 2022.05.07
手上这台机器卡在开机动画,Recovery 进得去、系统起不来,fastboot 里能识别、但分区已经乱了。这种时候能救场的不是各种一键工具,而是 MiFlash 2022.05.07 这套官方刷机平台——它把端口识别、包校验、分区写入、日志记录放在一个窗口里,刷失败了还能顺着 log 目录里的 txt 一行行倒推。
装不好这套环境的后果很直接:驱动没装对,工具刷新一百遍也认不到设备;包解压层级错一层,脚本根本不会启动;刷机中途掉线,机器从“能进 fastboot”退化成“只能进 9008”。这篇记录的就是我反复装过几次之后固定下来的一套流程,从系统前提、驱动、工具落位,到进模式、选包、刷写、验证,每一步都给出可抄的命令和参数取舍。新手照着能走通,熟手可以只看版本差异和避坑那几节。
2. 环境准备:Windows 版本、驱动与 MiFlash 2022.05.07 的落位
2.1 系统与硬件前提:为什么我固定在 Win10 x64 上做
MiFlash 2022.05.07 是 Windows 桌面程序,官方没有 Linux 或 macOS 版本,用虚拟机跑 USB 直通也能成,但多一层转发就多一个掉线风险,我一般不这么干。系统我固定在 Windows 10 x64 21H2 及以上,Win11 22H2 之后的版本实测也能用,前提是驱动跟着换新。Win7 不是不能跑,而是 USB 栈和驱动签名策略太老,9008 端口经常被识别成未知设备,排查成本远高于换台机器。
硬件上有三条是我踩过坑之后写进清单的:第一,用主板后置的 USB 2.0 口,前置面板延长线和 USB 3.x 口在写入大分区时掉线概率明显更高;第二,数据线用能传数据的原装线,很多充电线只有电源针脚,插上去设备管理器里什么都不出现;第三,刷机盘留出 30 GB 以上空间,一个完整官方包解压后动辄十几 GB,空间不足时解压到一半报错,很容易被误判成包损坏。
| 项目 | 推荐 | 可接受 | 不建议 |
|---|---|---|---|
| 操作系统 | Win10 x64 21H2 | Win11 22H2 及以上 | Win7 / 精简版系统 |
| USB 接口 | 主板后置 USB 2.0 | 后置 USB 3.0 | 前置面板、扩展坞、Hub |
| 数据线 | 原装可传数据线 | 品牌短线 | 纯充电线 |
| 磁盘空间 | 30 GB 以上 | 20 GB | 系统盘只剩几 GB |
| 安全软件 | 刷机期间临时关闭实时防护 | 加入白名单 | 全程开启拦截 |
还有一项容易漏的:刷机期间关掉系统的“快速启动”和一切休眠策略,笔记本插上电源。写入过程被系统挂起一次,轻则报错重来,重则分区表写到一半。这些不是玄学,是写入过程本身对连续性要求高。
2.2 驱动三件套:装错顺序等于白装
MiFlash 认不到设备,九成出在驱动。需要准备的是三类:Fastboot/ADB 驱动(普通模式刷写用)、高通 9008 驱动(深度刷写用,设备管理器里显示为 Qualcomm HS-USB QDLoader 9008)、以及可选的 MTP 驱动(刷完机传文件用)。顺序上我固定为“先装驱动、再插设备”,反过来的话系统会用自带的通用驱动抢占设备节点,后面再装就得手动卸载重来。
驱动包解压后一般是若干个 inf 文件,用系统自带的 pnputil 灌进去最干净,不依赖任何第三方安装器:
# 以管理员身份打开 PowerShell,把驱动包里的 inf 一次性加入驱动库 # /add-driver 指定 inf 路径,/install 表示立即匹配当前已连接设备 pnputil /add-driver "D:\flash\drivers\qcusbser.inf" /install # 如果驱动包目录下有多个 inf,循环处理一遍 Get-ChildItem "D:\flash\drivers\*.inf" | ForEach-Object { pnputil /add-driver $_.FullName /install }/install这个参数是关键,只写/add-driver是把驱动塞进驱动库但不安装,插上设备仍然可能走到通用驱动上。路径里不要出现中文和空格,pnputil 对含空格的路径处理不算稳,我一般把驱动包直接放在D:\flash\drivers\这种浅层英文目录下。
装完要验证,插上处于对应模式的设备,用一条命令看状态:
# 列出当前在位的、名字里带关键词的设备 # Status 为 OK 表示驱动正常;出现 Error 或带感叹号说明驱动没匹配上 Get-PnpDevice -PresentOnly | Where-Object { $_.FriendlyName -match 'Android|Fastboot|9008|QDLoader|Composite' } | Select-Object Status, Class, FriendlyName, InstanceId | Format-Table -AutoSize正常结果应该是:Fastboot 模式下出现 Android 或 Fastboot 类设备,状态 OK;9008 模式下出现 Qualcomm HS-USB QDLoader 9008,状态 OK。如果设备出现在“其他设备”下面、名字是未知设备,右键看属性里的错误代码,代码 28 是没驱动,代码 52 是签名没过。签名问题别去关系统强制签名,换工具自带的新版驱动更省事,那套老驱动在 Win11 上基本都要被拦。
2.3 工具落位:路径、解压方式和解压工具
MiFlash 2022.05.07 拿到手是一个压缩包,解压后的主程序是XiaoMiFlash.exe。落位规则只有一条,但违反的人特别多:整个路径必须全英文、无空格、层级浅。我固定用D:\flash\MiFlash2022\,不要放桌面、不要放“下载”目录、不要放在带中文用户名的路径下——C:\Users\张三\Desktop\这种路径会让内部调用的批处理脚本直接失败,报错还看不懂。
解压工具也有讲究。系统自带的解压对多层目录和长文件名处理不稳,偶尔会漏文件,表现出来就是主程序能开、点刷机报找不到脚本。我固定用 7-Zip 解压,并且解压后核对一遍目录里有没有XiaoMiFlash.exe、Source、log、Image这几项,缺一个就重新解压,不要试着补齐。
REM 解压后先确认关键文件是否齐全,缺文件基本可以判定解压不完整 REM 在工具根目录执行,dir /b 只列名字,方便肉眼核对 dir /b REM 期望看到:XiaoMiFlash.exe、Source、Image、log 等这一步看着琐碎,但它把后面一半的“工具打不开”“刷机没反应”提前挡掉了。环境这部分做完,才是真正开始装工具本身。
3. 装工具本身:MiFlash 2022.05.07 的解压、首次启动与选项取舍
3.1 解压后的目录里,哪些是必须认识的
MiFlash 2022.05.07 属于免安装形态,解压即用,没有安装向导,也不需要注册表写入。这一点对运维很友好——整套目录可以直接打包带走,换机器解压就能跑。但免安装也意味着它不会自己修环境,目录结构得自己认清。
解压后根目录一般长这样:
MiFlash2022/ ├─ XiaoMiFlash.exe 主程序,双击启动 ├─ Source/ 内部脚本与运行库,不要改动 ├─ Image/ 工具自带的临时镜像区,刷写时会写入 ├─ log/ 每次刷写的日志,排错主要看这里 └─ 其他运行库文件Source目录里放的是刷写时真正执行的批处理脚本和调用链,删一个文件主程序就打不开;log目录按时间戳生成 txt,每次刷写一份,是出问题后唯一的黑匣子;Image目录是临时区,刷机中途会往里写东西,所以工具所在磁盘必须留足空间。我见过有人把整个工具目录放在只剩 1 GB 的 C 盘上,刷到一半空间写满,日志里全是写入失败。
另外,主程序建议右键“以管理员身份运行”。不是说双击一定不行,而是刷写过程要调用底层 USB 接口、要写Image目录,权限不足时表现是点“刷机”没反应或者中途报权限错误,很难第一时间联想到权限。
3.2 首次启动要做的三件事:语言、日志、缓存
第一次打开 MiFlash 2022.05.07,界面是英文为主,按钮就那几个:选择包路径、刷新设备、刷机、以及一排选项。启动后我固定做三件事,做完再插设备。
第一件,确认日志目录可写。方法很简单,随便刷一次失败也无所谓,看log目录下有没有生成新的 txt。如果没有,说明目录权限有问题,把整个工具目录移到非系统盘再试。
第二件,清一次Image目录里的残留。上一次刷写中断留下的临时文件会导致下一次刷写报空间或校验错误,表现出来是“明明包是对的但一直失败”。清空这个目录不影响工具运行。
第三件,确认工具版本。2022.05.07 这个版本号写在主界面标题栏或关于里,某些二次打包的版本会改界面但内核还是老版,识别新机型的能力差很多,表现出来就是设备能认到、包一选就报不匹配。
# 启动前检查工具目录 writable 与剩余空间,避免刷到一半写满 $root = "D:\flash\MiFlash2022" "剩余空间(GB): " + [math]::Round((Get-PSDrive D).Free / 1GB, 1) "日志目录文件数: " + (Get-ChildItem "$root\log" -File -ErrorAction SilentlyContinue).Count # 尝试写一个临时文件验证权限,写完即删 try { "test" | Out-File "$root\log\_wtest.txt" -ErrorAction Stop Remove-Item "$root\log\_wtest.txt" -Force "日志目录可写: 是" } catch { "日志目录可写: 否,检查权限或换非系统盘" }这段脚本干的事很直白:先看磁盘剩余空间,再看日志目录能不能写。Get-PSDrive D取的是 D 盘对象,Free / 1GB换算成 GB;-ErrorAction Stop让写入失败时直接进 catch,而不是静默吞掉。刷机前跑一遍,比刷到一半发现写不进去强得多。
3.3 三个刷机选项怎么选,以及授权校验这件事
工具界面上那排选项是整套流程里最容易选错的地方,选错不是报错,而是刷完之后机器状态不对。2022.05.07 里常见的是三个:clean all、save user data、clean all and lock。我按场景列一张表,这张表基本能覆盖日常所有情况。
| 选项 | 行为 | 适用场景 | 风险 |
|---|---|---|---|
| clean all | 清空全部数据并刷入,不上锁 | 跨版本降级、系统反复重启、分区错乱 | 数据全丢,需提前备份 |
| save user data | 保留用户数据刷入 | 同版本修复、小版本升级 | 跨大版本时容易开机卡住 |
| clean all and lock | 清空数据并重新锁 bootloader | 送修、转手前恢复出厂状态 | 上锁后无法再刷非官方包 |
我的默认选择是 clean all。理由很实际:这台机器本来就是系统起不来才刷的,保留数据意义不大,而保留数据刷入在跨版本场景下极易卡开机动画,卡了还得再刷一遍,等于多花一倍时间。只有明确知道是同版本修复、且用户数据必须留,我才用 save user data。
clean all and lock要单独说。它会重新给 bootloader 上锁,上锁之后很多刷写通道就关了,机器回到完全官方状态。送修前这么干是对的,但如果你后面还想折腾,选了它就得再走一遍解锁流程,中间还有等待期。我一般把这一项当成一次性动作,刷之前先问清楚这台机器后面还要不要动。
关于授权校验,这块必须说清楚边界。MiFlash 作为官方刷机平台,部分机型和部分深度刷写通道在工具里会走账号校验,这是正规流程的一部分,工具本身没有提供跳过的开关,网上那些“改配置免校验”的说法我一次都没验证成功过,也不建议碰——改坏了工具起不来是小事,把机器的校验状态弄乱才是真麻烦。我这边的做法很固定:按官方流程登录、保证系统时间准确、用当前版本的客户端。校验失败基本是这三件事里的一件出了问题,逐项排查比找捷径快。
系统时间这一项特别容易被忽略。校验过程会看证书有效期,机器时间偏差太大就会直接失败,表现出来是账号密码都对但一直提示校验不通过。把 Windows 时间同步打开,或者手动校准到当前时间,问题基本就没了。客户端版本同理,2022.05.07 这个版本对当时的新机型支持是够的,用更老的版本去刷新机器,校验环节就过不去。
3.4 参数层面的两个小设置
除了那三个大选项,还有两个细节值得提。一是刷写超时,工具默认的超时对一些大分区偏紧,机器慢的时候会在写入阶段报超时中断,表现出来是刷到 80% 左右停住。这种情况不是包坏了,是等得不够久,重刷时把机器放在那别动,别去点取消。
二是多设备同时连接。工具刷新设备时会把当前所有处于刷写模式的设备列出来,如果你同时插了两台,刷机对象可能不是你预期的那台。我习惯刷之前把其他设备全拔掉,只留一台,这条是从一次刷错机器的血泪经验里总结的。
4. 进入刷写模式:Fastboot 与 EDL 两条路的按键、时序与包准备
4.1 Fastboot 模式:组合键、识别名和进入失败的判断
绝大多数刷写走的是 Fastboot 模式,进入方式是关机状态下按住音量下键再按电源键,看到屏幕出现特定界面(一般是固定图案加几行小字)就松手。这个动作看着简单,失败率却不低,原因集中在时序上:按早了机器还没断电,按晚了系统已经启动到一半。我的做法是先把机器完全关机、等三秒,再同时按住两个键不放,感觉到振动或看到界面再松。
进入成功后,设备管理器里会出现 Android 或 Fastboot 类设备,用 2.2 节那条Get-PnpDevice命令能查到,状态 OK。如果屏幕上进了 Fastboot 界面但工具里刷新不到设备,先看设备管理器——设备在但工具不认,是工具权限或版本问题;设备管理器里压根没有新设备,是线或口的问题。
还有一种情况:机器怎么按都进不去 Fastboot。这时候别反复试,先确认 bootloader 是否处于解锁状态。未解锁的机器有些操作会被拦,表现出来就是组合键按下后直接进系统或黑屏。解锁状态可以在 Fastboot 界面里看到,也可以在工具识别到设备后从信息里读。
# 设备进入 Fastboot 后,用 fastboot 命令确认连通性和解锁状态 # 前提:fastboot.exe 所在目录已加入 PATH,或在该目录下执行 fastboot devices # 正常输出为一串序列号加 fastboot 字样;无输出说明驱动或线材有问题 fastboot getvar unlocked # 返回 yes 表示已解锁,no 表示未解锁;未解锁时部分刷写动作会被拒绝fastboot devices无输出是最高频的问题,90% 出在驱动,剩下 10% 是线和口。getvar unlocked返回的是解锁状态,这个值决定了后面能选哪些刷机选项,别跳过。
4.2 EDL 9008 模式:什么时候必须用它
Fastboot 刷不进去的时候,才轮到 9008 深度刷写。这个模式绕过 bootloader,直接由芯片层面的下载模式接收数据,所以它能救一些 Fastboot 已经进不去的机器。代价是操作门槛高:要么短接主板上的特定测试点,要么用特定命令行触发,且部分机型在这个通道上会走授权校验。
设备管理器里的识别名是 Qualcomm HS-USB QDLoader 9008,注意端口号会变,每次插拔可能不同,但名字是固定的。如果显示的是 9006 或其他编号,说明进的不是下载模式,而是别的诊断模式,这时候刷不了,得重新进。
短接测试点这事我不建议新手自己动手,位置因机型而异,短错位置可能造成不可逆的损坏。更稳的路径是先尝试 Fastboot,实在不行再考虑找对应机型的正规维修渠道。命令行触发的方式相对安全,但同样依赖机器当前状态,不是万能的。
需要强调的是,9008 这条路上的授权校验比 Fastboot 严格得多,正规流程就是登录、校验、再刷写。任何号称能跳过这一步的做法,我都不建议尝试,风险全在机器上。
4.3 刷机包准备:校验、解压层级、脚本文件
包准备错了,前面所有步骤都白做。官方包一般是 tgz 格式,拿到手第一件事是校验哈希,官方页面通常会给 MD5 或 SHA256,对不上就别往下走,传输损坏的包解压出来可能缺文件,刷到一半报错还算好的,写坏分区更麻烦。
# 计算刷机包 SHA256,和官方给出的值逐位比对 # 大包计算需要几分钟,别中途中断 Get-FileHash -Algorithm SHA256 "D:\flash\rom\xxxx_images_xxxx.tgz" | Select-Object Algorithm, Hash, Path哈希对上之后解压。这里有个层级陷阱:官方 tgz 解压一次通常得到一个同名文件夹,文件夹里才是flash_all.bat这些脚本和一堆 img 文件。MiFlash 里选择的路径必须指到含flash_all.bat的那一层,指到上一层或下一层都会报找不到脚本。
REM 解压完成后,进入包目录确认脚本层级 REM 正确的目录里应该能看到 flash_all.bat 和一堆 .img 文件 cd /d D:\flash\rom\xxxx_images_xxxx dir /b *.bat dir /b *.img | find /c /v "" REM 输出脚本名列表和 img 文件数量,数量为 0 说明层级错了dir /b *.bat列出所有批处理脚本,正常会有flash_all.bat、flash_all_lock.bat、flash_all_except_storage.bat这几个;find /c /v ""是统计行数的老技巧,用来数 img 文件个数,数量为 0 就说明进错目录了。这一步花十秒,能省掉后面半小时的“为什么点刷机没反应”。
包和机型必须对应。工具在刷写前会做一次匹配检查,不匹配时直接拒绝,这是好事,别想着绕过去。型号对不上硬刷,轻则刷完不开机,重则分区表错乱。包文件名里一般带机型代号,选包前对照一下机器型号,比事后救砖省事得多。
5. 避坑清单:五个把机器刷成半砖的真实翻车点
5.1 现象:点刷机后秒报找不到脚本
现象很典型:设备认到了,包也选了,点刷机后几秒内就报错退出,日志里写着找不到 flash 脚本之类的话,进度条根本没动。
原因只有一个,选的路径层级不对。官方包解压后会多套一层同名文件夹,很多人选到了外层,工具进去找不到flash_all.bat就直接失败。另一种情况是解压不完整,脚本文件被杀毒软件当成可疑批处理删掉了,这种更隐蔽,目录看着是满的,就是少几个 bat。
解决办法:按 4.3 节那条dir /b *.bat核对,确认当前目录里真的有flash_all.bat。如果确实少了文件,关掉实时防护重新解压一遍,解压完再核对文件数量。我现在的习惯是每次刷机前都跑一遍这个核对,两秒钟的事。
5.2 现象:刷到一半报路径错误或乱码
现象是刷写进行到某个分区时突然中断,日志里出现一串乱码或者路径相关的报错,重刷还是停在同一个位置。
原因是路径里带了中文或空格。工具内部调用的批处理对非 ASCII 路径处理不稳,C:\Users\张三\Desktop\刷机\这种路径几乎必翻车。空格同理,Program Files下面放工具也是常见错误。
解决办法:把工具目录和刷机包目录都挪到全英文、无空格、层级浅的位置,比如D:\flash\MiFlash2022\和D:\flash\rom\。挪完重新选路径,不要用快捷方式指向原位置。这一条没有例外,我见过太多人觉得“就一个中文字而已”,最后还是得挪。
5.3 现象:9008 端口识别成未知设备或干脆不出现
现象是机器进了下载模式,设备管理器里刷新半天,要么什么都不出现,要么出现一个带感叹号的未知设备,右键属性里错误代码 28 或 52。
原因分三种:驱动没装(代码 28)、驱动签名没过(代码 52)、线材或接口不供电(什么都不出现)。代码 52 在老驱动配新系统时特别常见。
解决办法:代码 28 就按 2.2 节的 pnputil 命令装驱动;代码 52 换工具自带的新版驱动,不要去关系统的签名强制;什么都不出现就先换线、换后置 USB 2.0 口,再考虑短接方式是否正确。这三步按顺序做,别一上来就怀疑机器坏了。
5.4 现象:刷写中途断开,机器彻底不进系统也不进 Fastboot
现象最吓人:进度条走到一半,线松了或者系统休眠了,工具报设备断开,之后机器黑屏,组合键也进不去 Fastboot。
原因是写入过程中断,分区处于不完整状态,bootloader 本身可能也被写坏了。这时候 Fastboot 通常还能救,但如果连 Fastboot 都进不去,就只能走 9008。
解决办法:先试着重新进 Fastboot,能进就按正常流程重刷一遍 clean all;进不去再走 9008。预防比补救重要——刷机前插紧线、用后置口、关掉休眠、笔记本插电源,这四件事做到,基本不会遇到这种情况。我现在刷机时连屏幕保护都关掉,就是不想再经历一次。
5.5 现象:刷完开机正常,但再也刷不了别的包
现象是机器刷完能用,可下次想刷别的版本时,工具一直拒绝,提示状态不允许。
原因是上一次刷机选了 clean all and lock,bootloader 被重新上锁。上锁之后非官方通道全部关闭,这是设计如此,不是故障。
解决办法:确认机器后续还要不要折腾,要折腾就别选 lock 那一项。已经锁上的,只能按正规解锁流程重新走一遍,中间有等待期,急不来。我把这条写在工具目录的一个 txt 里,每次刷机前扫一眼,比记在脑子里靠谱。
6. 刷完怎么验证:三个地方对着看,比“能开机”可靠得多
刷完看到开机动画就开始收工,是另一个高频翻车点。有些问题要过几小时才暴露:基带没了、通话没声音、存储容量不对。我固定按三个地方对照验证,全部对上才算这次刷机结束。
第一处是 MiFlash 自己的日志。log目录下最新那份 txt,结尾必须是刷写完成类的字样,中间不能有 error 或 fail 行。如果结尾是完成但中间有失败行,那是不完整的成功,得重刷。
# 取最新一份日志,看结尾 40 行,同时统计错误行数量 $log = Get-ChildItem "D:\flash\MiFlash2022\log" -Filter *.txt | Sort-Object LastWriteTime -Descending | Select-Object -First 1 $log.FullName Get-Content $log.FullName -Tail 40 "错误行数: " + (Select-String -Path $log.FullName -Pattern 'error|fail' -SimpleMatch).CountSort-Object LastWriteTime -Descending取最新,-Tail 40只看结尾,Select-String统计错误关键词。错误行数为 0 且结尾是完成状态,这一项才算过。有错误行就回到第 5 章逐条对。
第二处是系统信息。开机后进设置看版本号、基带版本、存储总容量。版本号要对得上刷的包,基带那一栏不能是空白或未知,存储容量要和机型标称一致。基带空白是典型的“刷了不带基带分区的包”,能用但打不了电话,这种问题不主动查根本发现不了。
第三处是功能抽查。连着 Wi-Fi 走一遍、插卡看信号、拍一张照、放一段声音。这几项覆盖了无线、射频、相机、音频四个最容易出问题的模块,任何一项异常都说明对应分区没刷好。
| 验证项 | 正常表现 | 异常时的指向 |
|---|---|---|
| 日志结尾 | 刷写完成,错误行 0 | 中断或分区写入失败 |
| 版本号 | 与刷机包一致 | 选错包或刷写未生效 |
| 基带版本 | 有具体版本号 | 包内基带分区缺失 |
| 存储容量 | 与机型标称一致 | 分区表异常 |
| Wi-Fi / 信号 / 相机 / 声音 | 均可用 | 对应分区刷写不完整 |
验证这步最容易被省略,因为机器能开机给人的信心太强了。但那台卡开机动画的机器教会我一件事:能开机只是第一关,基带、存储、功能模块任何一处不对,过两天还是得重来一遍。从那以后我每次刷完都强制走完这三处对照,日志、系统信息、功能抽查,一项不落,哪怕机器看起来完全正常。希望这套流程能帮你少走一遍我走过的路。
本文还有配套的精品资源,点击获取