前言
最近忽然心血来潮,掏出了吃灰已久的小米Pro,倒腾黑果;但不幸的是,BIOS 在折腾的过程中损坏了。
准备工作
- TM1707 BIOS
- InsydeImageExtractor
- CH341A/NeoProgrammer
- CH341A 可以到某宝自行购入,需要带转接卡及烧录夹
- 价格参考:18 RMB(可能更便宜
获取 BIOS 二进制文件
- 下载 InsydeImageExtractor 及 TM1707 BIOS
- 在虚拟机运行TM1707 BIOS可执行文件,会出现报错,但不要点击确认
- 打开任务管理器并找到
H2OFFT-Wx64.exe
进程,并打开文件所在的位置 - 找到目录下的
XMAKB5RRP0C05.fd
文件,然后使用InsydeImageExtractor对文件进行转换
以下是
InsydeImageExtractor
的帮助信息。
InsydeFlashExtractor v0.2
Usage: ./extractor INFILE OUTFILE
- 参考以上信息可知,执行
extractor XMAKB5RRP0C05.fd XMAKB5RRP0C05.bin
,即可得到可烧录的二进制文件
组装 CH341A
具体操作可以参考知乎文章
上夹子 嘤嘤嘤
-
开始操作之前首先把电池连接断开!
-
怎么夹
-
夹好的参考
刷入 BIOS
- 注意:根据这个方法刷入BIOS,将会丢失设备序列号信息
不过既然机子都废了,序列号已经无所谓了,估计是与擦除IC的步骤有关;如果需要保留序列号,可以对新旧BIOS文件进行二进制比对,找到关于设备序列号的差异部分进行修改即可。
- 接入 CH341A 并 启动 NeoProgrammer
- 对原始BIOS进行备份
- 点击“读取IC”按钮
- 将读取后的二进制文件保存即可
- 擦除原始BIOS(不擦除会导致CRC校验不一致
- 点击“擦除IC”按钮
- 写入并校验BIOS
- 在“写入/编程IC”项选中校验
- 点击“写入/编程IC”按钮
Tips:写入完之后第一次开机时间会比较长,会触发一次重启,并清空以前的BIOS设置。
后记:为什么我会倒腾坏BIOS
因为我使用了 TM1701 的DVMT设置脚本,即DVMT_set.cmd
。
尽管 README 中已提及仅支持 MX150 机型,但是记得以前有进行过同样的操作但BIOS并未造成损坏,而且重要数据并没有保存于这台机器,所以就放开折腾了。
经过验证,已知下列脚本在 TM1707 可用,并不会造成损坏:
- bios_unlock.cmd
- CFG_unlock.cmd
- speedshift_unlock.cmd
- voltage_unlock.cmd
本人使用OC引导,确认
AppleXcpmCfgLock
取消后可以正常工作,也就是说至少CFG_unlock.cmd
是可用的;可以通过在BIOS设置页按F9重置设置,验证以上脚本是否工作正常。
不过DVMT_set.cmd
不行,原因应该是GTX机型相较于MX150机型在图形设置方面的地址有差异。
具体的BIOS修改逻辑可以在patchscript_dvmt.ps1
中找到,不过分析BIOS是个复杂的工作我就不再深入了;
有兴趣的可以使用 UEFITool
及 Universal IFR Extractor
进行深入分析。