郭鹏飞 发表于 2020-3-15 23:06

软件修改BIOS中DVMT等设置-针对Insyde BIOS-联想YOGA系列亲测可用无需拆机

本帖最后由 郭鹏飞 于 2020-3-16 22:25 编辑

第一次发帖,如有描述不确切之处,还请各路大神指正。
特别提醒:对BIOS进行修改属于高风险操作,可能会造成变砖、不开机等现象,请三思而后行,本教程恕不承担相关责任!!!
特别提醒:对BIOS进行修改属于高风险操作,可能会造成变砖、不开机等现象,请三思而后行,本教程恕不承担相关责任!!!
特别提醒:对BIOS进行修改属于高风险操作,可能会造成变砖、不开机等现象,请三思而后行,本教程恕不承担相关责任!!!


一、前言

       笔者有一台美帝良心想YOGA 4 PRO(YOGA-900),3K屏,核显为HD520,可以通过修改DVMT Pre-Allocated为96M实现免驱启动,奈何BIOS中相关设置被隐藏,且无法通过grub命令行中setup_var方法进行修改(有写保护)。爬帖无数,综合了贴吧和国外论坛的方法,终于找到一种通过纯软件修改BIOS中相关参数的方法,相对于硬刷,操作简单且风险相对较小。以此类推还可以实现其他参数修改,如解锁CFG Lock、SATA模式改AHCI等。


本教程理论上InsydeH2O系列BIOS均可参考,但目前仅在联想YOGA3PRO,YOGA4PRO机型上进行过测试,若是其他厂商BIOS可借鉴本文思路,自行查找类似工具

      在此,感谢两位原贴主的辛勤奉献,链接如下
Insyde BIOS 提取修改刷入全
How to Unlock the NVMe Performance on the Lenovo Y700

话不多说,下面直接开整

二、实现方法(以联想YOGA 4 Pro为例,WIN10x64/WIN10x64PE环境均可)

       1、通过官网下载BIOS升级文件后解压或使用Flash Programming Tool直接提取等方法获取本机BIOS镜像文件
             (1)官网下载后解压(推荐)


使用压缩软件将下载的exe文件解压,可得到下图所示的BIOS镜像文件


             (2)若第一种方法无法实现,可采用以下方法,打开合适版本的Flash Programming Tool文件夹,右键以管理员身份运行“读取BIOS镜像.bat”,读取当前BIOS芯片内容,读取成功将生成backup.fd文件,若运行失败出现error.log文件,可查看具体错误信息并更换Flash Programming Tool版本后再试,路径为Intel CSME System Tools\Flash Programming Tool\WIN64,将bat文件拷入即可使用。


下图为正在读取BIOS芯片内容


       2、利用H2OEZE工具打开获取到的.fd镜像文件,按图示方法提取出其中的SetupUtility模块,并使用Universal IFR Extractor进行翻译


如下图,我们将SetupUtility模块保存为su.ffs文件

如下图,使用Universal IFR Extractor对su.ffs进行翻译,得到一个su IFR.txt文件


       3、打开上面得到的su IFR.txt文件,搜索要修改的参数值,并记录下要修改的地址和要修改的值(以修改DVMT为96M为例)

搜索到相关内容如下:
0x78DB8               Setting: DVMT Pre-Allocated, Variable: 0x180 {05 91 33 0D 57 0D 00 0A 34 12 80 01 10 10                                       00 FE 00}0x78DC9                         Option: 0M, Value: 0x0 {09 07 34 0D 00 00 00}0x78DD0                         Option: 32M, Value: 0x1 {09 07 35 0D 30 00 01}0x78DD7                         Option: 64M, Value: 0x2 {09 07 36 0D 00 00 02}0x78DDE                         Option: 96M, Value: 0x3 {09 07 37 0D 00 00 03}0x78DE5                         Option: 128M, Value: 0x4 {09 07 38 0D 00 00 04}0x78DEC                         Option: 160M, Value: 0x5 {09 07 39 0D 00 00 05}0x78DF3                         Option: 192M, Value: 0x6 {09 07 3A 0D 00 00 06}Variable: 0x180表示该参数存储地址为180(16进制)

Option: 96M, Value: 0x3 表示96MDVMT显存对应参数值为3(16进制)

          4.打开H2OUVE文件夹,右键以管理员身份运行“读取参数表.bat”,提取当前BIOS的参数表,保存为vars.txt



          6.用文本编辑器打开vars.txt,搜索Setup区,注意,该区名称只含Setup,如下面所示
Setup
      GUID: A04A27F4-DF00-4D42-B552-39511302113D
      Attributes: 0x7
      DataSize: 0xFA0
      Data:
            00000000: 00 00 00 00 00 00 00 00 01 00 00 03 04 00 00 00
......
      找到刚刚记录的DVMT设置的地址(本例为180),可以看到,读取的值为01——对应32M,然后将该地址的值改为96M对应的Value值(本例应改为03),如需修改其他参数,以此类推,修改完成后,保存

         7.右键以管理员身份运行“写入参数表.bat”,把参数表写回BIOS芯片

因为BIOS中部分区域是不可写,所以会出现一些错误提示,直接忽略就好



写完后可以再读取出来看看是否成功修改



至此,修改已经完成了,下面是需要用到的文件:


本教程使用的相关软件:


如果Flash Programming Tool、IFR Extractor需要更换其他版本的,可从以下链接获取:


其他版本工具   https://pan.baidu.com/s/1lIAAN_hGVytgRTovgx8fDQ提取码t6fk



loveqp 发表于 2020-3-16 00:05

学习一下

zytiger 发表于 2020-3-16 01:05

谢谢共享感谢

2017你可安好 发表于 2020-3-16 01:11

巧了,暗影骑士3也是这个BIOS,如果能直接开隐藏选项就好了,不然每次修改BIOS设置都要刷一次

stion 发表于 2020-3-16 16:24

谢谢共享感谢

qyga 发表于 2020-3-16 16:28

谢谢分享有新方法试下

我不要用户名 发表于 2020-3-16 16:31

这个很久了吧。。

zfk999 发表于 2020-3-16 16:32

mark,联想ideapad 710S困扰好久,等有空再试试.

1170430429 发表于 2020-3-16 17:52

感觉很高级,不敢尝试

nextming 发表于 2020-3-16 18:54

楼主没有提取码啊

nextming 发表于 2020-3-16 19:24

Universal IFR Extractor 报错,无法转换txt,卡这里了,需要装什么插件才能用吗?

xiaosen0317 发表于 2020-3-16 22:09

我是小米proefi里有国外大佬写的bin脚本,dvnt为64mb用了显示成功,但是mac下用 hackintool查看动态现存显示34,帧缓存为0

郭鹏飞 发表于 2020-3-16 22:19

nextming 发表于 2020-3-16 19:24 https://www.pcbeta.com/static/image/common/back.gif
Universal IFR Extractor 报错,无法转换txt,卡这里了,需要装什么插件才能用吗?

获取到SetupUtility对应的ffs文件了吗,你是什么机型,可以贴一下截图

lgh07711 发表于 2020-3-16 22:39

用这个方法怎么修改CFG Lock锁定啊,要在vars.txt中修改什么选项啊,没有看懂哎。我的CFG Lock信息如下,要怎么修改vars.txt中的信息呢,要搜索什么选项修改呢。谢谢!!(这个最重要,我也是无法通过grub命令行中setup_var方法进行修改)0x15E3DF         Setting: CFG Lock, Variable: 0x3E {05 91 69 03 6A 03 74 01 03 00 3E 00 10 10 00 01 00}
0x15E3F0                 Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x15E3F7                 Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x15E3FE         End of Options {29 02}



DVMT Pre-Allocated信息:(我这个是不是代表默认的已经是最大值64M了呢?还有没有可能在大呢。这个值和DVMT Total Gfx Mem值有什么区别呢)
0x161053         Setting: DVMT Pre-Allocated, Variable: 0x107 {05 91 71 11 84 11 78 02 02 00 07 01 10 10 00 FE 00}
0x161064                 Default: 8 Bit, Value: 0x2 {5B 06 00 00 00 02}
0x16106A                 Option: 0M, Value: 0x0 {09 07 72 11 00 00 00}
0x161071                 Option: 32M, Value: 0x1 {09 07 73 11 00 00 01}
0x161078                 Option: 64M, Value: 0x2 {09 07 74 11 00 00 02}
0x16107F                 Option: 4M, Value: 0xF0 {09 07 75 11 00 00 F0}
0x161086                 Option: 8M, Value: 0xF1 {09 07 76 11 00 00 F1}
0x16108D                 Option: 12M, Value: 0xF2 {09 07 77 11 00 00 F2}
0x161094                 Option: 16M, Value: 0xF3 {09 07 78 11 00 00 F3}
0x16109B                 Option: 20M, Value: 0xF4 {09 07 79 11 00 00 F4}
0x1610A2                 Option: 24M, Value: 0xF5 {09 07 7A 11 00 00 F5}
0x1610A9                 Option: 28M, Value: 0xF6 {09 07 7B 11 00 00 F6}
0x1610B0                 Option: 32M/F7, Value: 0xF7 {09 07 7C 11 00 00 F7}
0x1610B7                 Option: 36M, Value: 0xF8 {09 07 7D 11 00 00 F8}
0x1610BE                 Option: 40M, Value: 0xF9 {09 07 7E 11 00 00 F9}
0x1610C5                 Option: 44M, Value: 0xFA {09 07 7F 11 00 00 FA}
0x1610CC                 Option: 48M, Value: 0xFB {09 07 80 11 00 00 FB}
0x1610D3                 Option: 52M, Value: 0xFC {09 07 81 11 00 00 FC}
0x1610DA                 Option: 56M, Value: 0xFD {09 07 82 11 00 00 FD}
0x1610E1                 Option: 60M, Value: 0xFE {09 07 83 11 00 00 FE}
0x1610E8         End of Options {29 02}


0x1610EA         Setting: DVMT Total Gfx Mem, Variable: 0x108 {05 91 85 11 86 11 79 02 02 00 08 01 10 10 01 03 00}
0x1610FB                 Default: 8 Bit, Value: 0x3 {5B 06 00 00 00 03}
0x161101                 Option: 128M, Value: 0x1 {09 07 87 11 00 00 01}
0x161108                 Option: 256M, Value: 0x2 {09 07 88 11 00 00 02}
0x16110F                 Option: MAX, Value: 0x3 {09 07 89 11 00 00 03}

nextming 发表于 2020-3-17 00:08

郭鹏飞 发表于 2020-3-16 22:19 https://www.pcbeta.com/static/image/common/back.gif
获取到SetupUtility对应的ffs文件了吗,你是什么机型,可以贴一下截图

我是AMI的bios,华硕s300ca,bios已经提取了,就是提取部分无法转换成TXT文件,Universal IFR Extractor 报错。难道机器有写保护

郭鹏飞 发表于 2020-3-17 11:09

nextming 发表于 2020-3-17 00:08 https://www.pcbeta.com/static/image/common/back.gif
我是AMI的bios,华硕s300ca,bios已经提取了,就是提取部分无法转换成TXT文件,Universal IFR Extractor...

你可以下载最下面的链接中的IFR的其他版本试试,如果不行的话就只能去搜搜AMI相关的帖子了,我这个只在Insyde的BIOS测试过

郭鹏飞 发表于 2020-3-17 11:19

lgh07711 发表于 2020-3-16 22:39 https://www.pcbeta.com/static/image/common/back.gif
用这个方法怎么修改CFG Lock锁定啊,要在vars.txt中修改什么选项啊,没有看懂哎。我的CFG Lock信息如下,要 ...

对,你这个DVMT预分配最大应该就是64M,DVMT Total Gfx Mem是指可分配的最大动态显存,分配的意思是划出来专用的.vars.txt存储的就是参数值,你的CFG lock地址是3E,也就是Setup参数区00000030那一行的倒数第二个(十六进制0-F),把1改成0就可以了,或者说01改成00

BRYANT2009 发表于 2020-3-17 11:57

有人知道,怎么刷xps13 戴尔那个开机的logo吗?又大又圆,主要是丑

lgh07711 发表于 2020-3-17 12:00

郭鹏飞 发表于 2020-3-17 11:19 https://www.pcbeta.com/static/image/common/back.gif
对,你这个DVMT预分配最大应该就是64M,DVMT Total Gfx Mem是指可分配的最大动态显存,分配的意思是划出来专 ...

好的我试一下,我电脑自己换了4K屏,64M是不是还不能达到要求啊。

lgh07711 发表于 2020-3-17 12:25

郭鹏飞 发表于 2020-3-17 11:19 https://www.pcbeta.com/static/image/common/back.gif
对,你这个DVMT预分配最大应该就是64M,DVMT Total Gfx Mem是指可分配的最大动态显存,分配的意思是划出来专 ...

我的00000030这一行没有01啊
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
地址0x3E找00000030这一行是怎么换算的啊。
我的MSR Lock是在0x2B应该是哪一行啊。
我改了000002B0这一行,然后重启查看还是锁着的。
提示CFG Lock............................. : 1 (MSR locked until next reset)
页: [1] 2 3 4
查看完整版本: 软件修改BIOS中DVMT等设置-针对Insyde BIOS-联想YOGA系列亲测可用无需拆机