BIOS/EC/ME/eMMC

刷BIOS工具分享(白名单,高级菜单,电源管理

2019-12-29 21:37:19 冯必正 8344

一,BIOS备份
1. 使用第二部分对应版本的fptw。以管理员身份打开命令提示符,去到fptw所在路径,输入命令

  1. fptw64.exe -d bios.bin -bios

复制代码

其中fptw64.exe是64位系统用的(Windows64目录),32位用Windows目录下的fptw.exe,DOS环境用DOS目录下的fpt.exe。bios.bin是输出bios备份的文件名

2. 使用Universal BIOS Backup ToolKit 2.0


二,刷BIOS工具:Flash Programming Tool
命令,64位Windows

  1. fptw64.exe -f bios.bin -bios

复制代码


三,BIOS解包打包工具
Phoenixtool 2.6.6(修改白名单必备,具体教程请自行搜索)

四,16进制文件修改器:winhex

五,电源管理补丁,UEFIPatch(pmpatch升级版)

如果你只是为了给BIOS打这个补丁,不推荐刷BIOS,clover的kernel PM更安全方便
把bios放在UEFIPatch.exe目录下, 输入命令

  1. uefipatch.exe bios.bin

复制代码

其中bios.bin为bios文件名
注意,有时UEFIPatch会无法patch官网下载的bios(解压exe得到fd或是rom后缀的文件),至少Z410的BIOS就不行,需要用fptw或者universal bios backup toolkit备份的才行。

六,如果用fpt工具刷时遇到错误
错误代码28
进入DOS环境(很多PE工具都有提供),先运行prr2.exe,然后在用DOS版本的fpt刷。如果还不行可以再试试先运行prr.exe,再用DOS版本fpt刷

错误代码280
使用睡眠bug:先让电脑进入睡眠模式,过几秒后唤醒,再尝试刷。如果还不行,用下面的方法。

以下内容不适合小白
六,falseclock方法
需要Linux环境或OSX环境,因为要运行perl文件,也可以安装bash on ubuntu on windows 10)。在bios-mods有一个专门的帖子讲这个方法,可以不用解锁高级菜单来设置CPU频率,开启AHCI,设置显存等,也可以用于关闭Secure Flash。不过那个帖子提供的grub shell有bug,导致有些机型修改不了nvram的值(具体表现为输入setup_var命令会一直停留在setting offset xxxx to xxxx,需要按Ctrl+Alt+Del重启)。我这个帖子提供一个修复了这个bug的版本,并且简单说一下这个方法。



1. 首先用fptw备份bios,然后用phoenixtool解包bios,在bios文件同一目录下会出现DUMP文件夹,在DUMP文件夹里面找到一个以FE3542FE开头的文件(可能有几个,需要最大的那个),然后在Linux或OSX环境下,打开终端,把找到的FE3542FE开头的文件和parser.pl放在同一目录,输入命令

  1. perl parser.pl ./FE3542FE* > result.txt

复制代码

打开生成的result.txt,寻找诸如flash, lock, protection,比如我的BIOS

  1. 省略很多内容

  2. Select option: 'Me Fw Image Re-Flash'           [ VarStore: '0x1ee', QuestionId: '0x109',   Help: 'Enable /Disable Me Fw Image Re-Flash function']

  3.   Option: 'Disabled'                            [ Value: '0'   Default: 'true'     Type: 'int8'  ]

  4.   Option: 'Enabled'                             [ Value: '1'   Default: 'false'    Type: 'int8'  ]

  5. ┌- Grayout IF:

  6. |    Question [ ID: '0x550' ] == 0x01

  7. |    Question [ ID: '0x0f' ] == 0x02

  8. |    Question [ ID: '0x0e' ] == 0x01

  9. |    AND expression

  10. |    OR expression

  11. └- END IF Grayout;

  12. Select option: 'BIOS Lock'                      [ VarStore: '0x4ab', QuestionId: '0x11a',   Help: 'Enable/Disable BIOS Lock']

  13.   Option: 'Disabled'                            [ Value: '0'   Default: 'false'    Type: 'int8'  ]

  14.   Option: 'Enabled'                             [ Value: '1'   Default: 'true'     Type: 'int8'  ]

  15. ┌- Suppress IF:

  16. |    EQ == TRUE

  17. |    └- END IF Suppress;

  18. ┌- Suppress IF:

  19. |    EQ == TRUE

  20. |    └- END IF Suppress;

  21. 省略很多内容

复制代码


可以看到,Me Fw Image Re-Flash(ME Firmware Re-flash)默认是Disabled关闭的,BIOS Lock(BIOS锁定)是打开的。

当然可能有些BIOS名称不同,比如下面SPI,TXE什么的(这两个其实我不懂是什么意思),

  1. 0x21067    Setting: LPSS SPI Support, Variable: 0x163

  2. 0x2108D     Option: Disabled, Value: 0x0

  3. 0x210A9     Option: Enabled, Value: 0x1

  4. 0x210C5    End of Options


  5. 0x2179D Setting: BIOS Read/Write Protection, Variable: 0x1FC

  6. 0x217C3 Option: Enabled, Value: 0x1

  7. 0x217DF Option: Disabled, Value: 0x0 (default)

  8. 0x217FB End of Options


  9. 0x21A25     Setting: TXE HMRFPO , Variable: 0x170

  10. 0x21A4B      Option: Disabled, Value: 0x0 (default)

  11. 0x21A67      Option: Enabled, Value: 0x1

  12. 0x21A83     End of Options

复制代码



2. 这些值是储存在nvram的,用falseclock的方法可以改这些值,于是你的BIOS就可以重刷了。
新建一个Fat32分区,把下面的bootx64.efi放进新建分区的EFI/Boot文件夹下,然后用easyuefi新建一个一次性启动项来启动这个bootx64.efi,重启。
比如我的BIOS需要开启Me Fw Image Re-Flash, 地址(看VarStore)为0x1ee,需要改为Enabled(后面的Value: '1'),
同时需要关闭BIOS Lock,地址为0x4ab,需要改为Disabled(Value: '0'),
所以依次输入命令
以下命令只适用于Z410的BIOS!请从你自己的result.txt中找到正确的地址和值!直接复制执行会使你的电脑变砖!

  1. setup_var 0x1ee 0x1

  2. setup_var 0x4ab 0x0

复制代码


然后输入reboot重启。进入Windows后就可以用睡眠bug刷bios了。


用以上方法,楼主备份了自己的bios,给bios打上了电源管理补丁,移除了白名单,所以楼主的Clover不用勾选Kernel PM,并且换上了苹果免驱的网卡(其实这个才是最重要的)。


https://kirainmoe.com/blog/post/hasee-laptop-change-uefi-bios-logo/