前言

最近忽然心血来潮,掏出了吃灰已久的小米Pro,倒腾黑果;但不幸的是,BIOS 在折腾的过程中损坏了。

准备工作

获取 BIOS 二进制文件

  • 下载 InsydeImageExtractorTM1707 BIOS
  • 在虚拟机运行TM1707 BIOS可执行文件,会出现报错,但不要点击确认
  • 打开任务管理器并找到H2OFFT-Wx64.exe进程,并打开文件所在的位置
  • 找到目录下的XMAKB5RRP0C05.fd文件,然后使用InsydeImageExtractor对文件进行转换

以下是InsydeImageExtractor的帮助信息。

InsydeFlashExtractor v0.2
Usage: ./extractor INFILE OUTFILE
  • 参考以上信息可知,执行extractor XMAKB5RRP0C05.fd XMAKB5RRP0C05.bin,即可得到可烧录的二进制文件

组装 CH341A

具体操作可以参考知乎文章

上夹子 嘤嘤嘤

  • 开始操作之前首先把电池连接断开!

  • 怎么夹
    p1

  • 夹好的参考
    p2
    p3

刷入 BIOS

  • 注意:根据这个方法刷入BIOS,将会丢失设备序列号信息

不过既然机子都废了,序列号已经无所谓了,估计是与擦除IC的步骤有关;如果需要保留序列号,可以对新旧BIOS文件进行二进制比对,找到关于设备序列号的差异部分进行修改即可。

  • 接入 CH341A 并 启动 NeoProgrammer
  1. 对原始BIOS进行备份
    • 点击“读取IC”按钮
    • 将读取后的二进制文件保存即可
  2. 擦除原始BIOS(不擦除会导致CRC校验不一致
    • 点击“擦除IC”按钮
  3. 写入并校验BIOS
    • 在“写入/编程IC”项选中校验
    • 点击“写入/编程IC”按钮

Tips:写入完之后第一次开机时间会比较长,会触发一次重启,并清空以前的BIOS设置。

后记:为什么我会倒腾坏BIOS

因为我使用了 TM1701DVMT设置脚本,即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是个复杂的工作我就不再深入了;

有兴趣的可以使用 UEFIToolUniversal IFR Extractor 进行深入分析。