前言
这篇文章主要针对华为部分在硬件方面拥有TPM芯片,但在BIOS中未提供开启选项(软屏蔽)的笔记本,提供自行修改Insyde BIOS参数完美开启TPM的方法。
注意事项
- 本教程仅适用于被软屏蔽但硬件上确定存在TPM的华为笔记本。
- 本教程仅适用于有一定动手能力的人。
- 本教程所用到的工具软件均来自互联网搜集。
- 请确认完全理解本教程、备份重要数据再进行操作,造成任何数据或硬件损坏,本人不负任何责任。
准备过程
需要用到的东西
- 官方BIOS固件文件 ----- 可通过华为官网下载(防止误差,请确认当前本机安装的BIOS固件版本和下载的BIOS固件文件版本一致)
- UEFITool ----- 用于查找BIOS中相关变量(字串)导出为二进制文件的工具
- IRFExtractor ----- 将二进制文件转换成文本文档的工具
- H2OUVE ----- Windows环境下修改Insyde BIOS设定的工具
PS:如果IRFExtractor运行报错,安装微软运行库即可。
我这里已经给大家打包好了后三个大家需要用到的工具,当然,你也可以自己动手丰衣足食。
下载地址:点我
操作过程
温馨提示
教程实操用到的设备是华为荣耀MagicBook 2018。
如果你用的也是这款设备,参照教程,放心冲!
第一步
点此从华为官网下载最新的BIOS固件。(建议通过设备序列号搜索驱动)
更新BIOS固件到最新的版本,若当前机器BIOS固件版本和官网最新下载的BIOS固件版本一致,可略过此步骤。
第二步
通过压缩软件解压下载的BIOS固件安装程序(.exe)直到得到BIOS的.bin文件为止(很难阐述这个步骤,具体看我录屏吧)。
第三步
使用工具“UEFITool”打开得到的BIOS .bin文件。
通过快捷键(Ctrl+F)在搜索的Text页选项卡中搜索关键词“BIOS LOCK”。
搜索后双击下方的搜索结果,在上方跳转的结果处右键,选择菜单中的“Extract as is....”将其保存为一个.sct的文件。
第四步
打开工具“IRFExtractor”,在“Module Locatio”中选择上一步通过“UEFITool”导出的.sct的文件,随后点“Extract”按钮将其保存为.txt的文本文档文件。
第五步
通过NotePad++、浏览器或任何便于你自己浏览的工具打开上一步所保存的.txt文档。(这里选用NotePad++)
接着,我们需要在文本文档中分别找出并记录几个参数的VarOffset(偏移值)和VarStore(偏移集)。
VarOffset:偏移值,即我们随后要修改的数据地址坐标。
VarStore:偏移集,即我们随后要修改的数据所在的大项。
需要找出并记录的参数如下:
CFG Lock //配置锁定 BIOS Lock //BIOS锁定 TPM 1.2 Deactivate //停用TPM1.2 TPM/TCM, VarStoreInfo //启用TPM/TCM Current TPM Device //切换TPM到2.0 TPM Availability //启用TPM芯片 TPM Operation //激活TPM所有设置
参数是唯一的,为了方便我们查找,我们可以在参数后面加上“, VarStoreInfo”再搜索,这样定位出来就没有重复的了。
例如“CFG Lock”,我们可以搜索“CFG Lock, VarStoreInfo”,全部找到就是下面这些这样:
全部找到之后,这一块就包含了我们待会修改需要用于定位的VarOffset(偏移值)和VarStore(偏移集)。
我们将有用的部分(从参数开始到QuestionID前面都是有用的部分)先新建个文档保存下来,再对VarStore值一样的参数进行分类,方便后面的修改,例如:
CFG Lock, VarStoreInfo (VarOffset/VarName): 0x3C, VarStore: 0x3 BIOS Lock, VarStoreInfo (VarOffset/VarName): 0x17, VarStore: 0x5 TPM 1.2 Deactivate, VarStoreInfo (VarOffset/VarName): 0x6, VarStore: 0x1108 TPM/TCM, VarStoreInfo (VarOffset/VarName): 0xF0, VarStore: 0x1234 Current TPM Device, VarStoreInfo (VarOffset/VarName): 0xE3, VarStore: 0x1234 TPM Availability, VarStoreInfo (VarOffset/VarName): 0x9D, VarStore: 0x1234 TPM Operation, VarStoreInfo (VarOffset/VarName): 0x62, VarStore: 0x1234
上面的工作做完,我们紧接着来找我们VarStore(偏移集)所在大项的名称。
如何找呢?这里举两个例子:
比如参数“CFG Lock”,我们已知其VarStore对应的值为0x3,那我们就搜索“VarStoreID: 0x3”,找到它所在大项的名称“Name: CpuSetup”。
比如参数“BIOS Lock”,我们已知其VarStore对应的值为0x5,那我们就搜索“VarStoreID: 0x5”,找到它所在大项的名称“Name: PchSetup”。
总结来说,就是在我们上面得到的各个参数“VarStore: xxx”的“VarStore”上加上“ID”,再在文本文档中进行搜索,搜到的内容中的Name即是它所在大项的名称。
最后,我们得到了上述所需参数所在大项的所有名称,再次对应记录好保存起来,它有着关键性的作用。
CFG Lock —— CpuSetup BIOS Lock —— PchSetup TPM 1.2 Deactivate —— MeSetupStorage TPM/TCM —— SystemConfig Current TPM Device —— SystemConfig TPM Availability —— SystemConfig TPM Operation —— SystemConfig
最后的整理。
为了更加直观方便的让我们修改,我们最后再将4.62和4.63所记录的内容整理在一起。
主要就是将我们要修改的几个参数的“VarOffset(偏移值)”和它所在大项的名称记录一下。
VarOffset(偏移值)就是“VarStoreInfo (VarOffset/VarName)”的值。
从4.62我们记录的内容中可以清楚的得知各个参数的VarOffset(偏移值)。
例如参数“CFG Lock”:
CFG Lock, VarStoreInfo (VarOffset/VarName): 0x3C, VarStore: 0x3
那么,它的“VarOffset(偏移值)”就是0x3c。例如参数“BIOS Lock”:
BIOS Lock, VarStoreInfo (VarOffset/VarName): 0x17, VarStore: 0x5
那么,它的“VarOffset(偏移值)”就是0x17。
那我们可以这么记录好:
CFG Lock —— CpuSetup —— 0x3c BIOS Lock —— PchSetup —— 0x17 TPM 1.2 Deactivate —— MeSetupStorage —— 0x6 TPM/TCM —— SystemConfig —— 0xF0 Current TPM Device —— SystemConfig —— 0xE3 TPM Availability —— SystemConfig —— 0x9D TPM Operation —— SystemConfig —— 0x62
决战时刻
最后一步,辛苦了这么久,马上就能看到胜利的曙光了!
当然,这一步极为重要,“一失足成千古恨”,不想让你的本以后只能“盖泡面”,就打起一万分的精神来操作。
打开工具“H2OUVE”,先管理员运行一下“WDFInst.exe”安裝WDFinst驱动程序,再打开“H2OUVE-W-GUIx64.exe”。
点击软件中的“File” - “Load Runtime”,加载机器的BIOS配置数据。
再点击软件左侧的绿色按钮“Variable”,读取BIOS的设置,准备进行修改。
最后的修改
最后,我们只需要在软件中找到需要修改的坐标将其内容修改即可。
如何寻找?
我们参照4.6.4记录的“VarOffset(偏移值)”和它所在大项的名称,换成它在软件中的位置。
例如:
CFG Lock —— CpuSetup —— 0x3c = 左侧栏命名为“CpuSetup”的项目,横为30,竖为0C的方块。 BIOS Lock —— PchSetup —— 0x17 = 左侧栏命名为“PchSetup”的项目,横为10,竖为07的方块。 TPM 1.2 Deactivate —— MeSetupStorage —— 0x6 = 左侧栏命名为“MeSetupStorage”的项目,横为00,竖为06的方块。 TPM/TCM —— SystemConfig —— 0xF0 = 左侧栏命名为“SystemConfig”的项目,横为F0,竖为00的方块。 Current TPM Device —— SystemConfig —— 0xE3 = 左侧栏命名为“SystemConfig”的项目,横为E0,竖为03的方块。 TPM Availability —— SystemConfig —— 0x9D = 左侧栏命名为“SystemConfig”的项目,横为90,竖为0D的方块。 TPM Operation —— SystemConfig —— 0x62 = 左侧栏命名为“SystemConfig”的项目,横为60,竖为02的方块。
PS:SystemConfig = Setup,如果左侧栏找不到命名为“SystemConfig”的项目,那就修改“Setup”项目中的对应坐标内容。
修改成什么?
例图为本文开头提及的实操设备,其它型号、不同固件版本可能会有所出入,请参照实际情况谨慎操作。
到这就全部改完了!检查一遍没什么问题就点击软件上的“File” - “Save”,把我们刚刚修改的都给它保存咯。
最后直接重启电脑,一起见证奇迹。
涅槃重生Windows 11。
尾声
结束了,其实别看字这么多,操作起来要不了几分钟,只是苦了我码这保姆级教程几个钟头...
对了,理论上所有版本的Insyde BIOS均可使用此方法修改隐蔽参数的。
好了,希望大家都能成功,不过折腾这个好像也只能成功...
型号一样是不是可以跳过看偏移值的那一项
多谢楼主的分享!另外,请问如果修改错误会导致无法开机等严重过后吗?有办法在修改之前备份,以及在失败之后恢复吗?提前谢谢了!
H2OUVE修改完后保存不了是什么原因啊
我的是能保存,但是重启进入bios没变化
肯定有哪个步骤没做对,等大神回复吧
我搞定了 已经升级win11了
你是怎么搞定的?我弄完重启没反应,重新查看发现数值又变回原来的了
抱歉啊~
最近实在太忙,没能够及时回复你的issues,您的问题具体体现在哪呢?
这边看您最新更楼内容是已经解决了,您或许也可以简述一下您的解决方法,方便我们及时更进文章内容,感谢。
搜了一圈就您这个解释的很明白
但是
用H2OUVE改了save之后电脑没变化。。。在bios里面改动之后,win下用load runtime出来的参数并没有相应改变。
不知道怎么回事
抱歉啊~
最近实在太忙,没能够及时回复你的issues。
针对您所述的问题,我想我需要先询问您几个问题:
您是否按照文章4.7.1所述正确的去运行“H2OUVE”这个软件的呢?
您通过软件save的时候有提示成功或与其相似的信息吗?
现在是否解决了呢?或许您可以通过私密评论的方式留下您的联系方式,让我协助您解决这个问题。
非常感谢您回复!
H2OUVE软件运行正常,可以保存。没有提示,但再次load runtime可以看到上次的修改。但是电脑并没有变化。
为了测试,我进入bios将摄像头关掉,进入windows后用h2ouve来load runtime,发现摄像头对应的那个偏移值并没有变化,但是之前用h2ouve做出的更改依然还在。也就是说似乎h2ouve修改的bios和电脑的bios似乎并不是同一个东西。
另外,h2ouve软件中,variables功能正常,但切换到setup就会报错(虽然貌似并不需要用到setup)。
PS
其实我不是升级win11,是华为matebook 16,amd处理器+集显,想要修改的是iGPU、UMA buffer size(共享显存容量)两个选项,在h2ouve中找到了并修改了,只是显存并没有变化。
b站上有个视频是acer的同款bios解锁后,修改上述两个选项就能更改显存容量。知乎上也有yoga 14s修改上述两个选项来修改显存的例子,所以应该修改上述两个选项这件事本身应该是没错的。
不过您提到的BIOS Lock和CFG Lock两个选项我没有更改,因为找不到这两项,可能是因为amd的原因,并没有这两项?其中BIOS Lock所在的Pch Setup这一项在h2ouve中也没有。
再次感谢!
load image一直加载不出来,等半天了都没用。。。求解救。。。 ̄﹃ ̄
额,不是“load image”喔,参照教程4.7.2,是“File” - “Load Runtime”。
我的load runtime点击没反应
这样修改开机会小概率出现 no boot device
没有碰到你说的问题,按照教程修改只是将BIOS中TPM相关的选项开启,理论来说和“no boot device”错误没有直接的联系,有可能是您修改错误导致的。
烦请标明出处
教程内所有文字、图片、视频均为原创。
其中有关Insyde BIOS隐藏参数的修改有参考自百度经验《如何解锁Insyde的BIOS隐藏设置》:https://jingyan.baidu.com/article/63f236286163d30209ab3d63.html
这原创跟我写的贴子一摸一样我就觉得很神奇了,从翻译偏好,写作结构,用词喜好,这么雷同也真是一个奇迹。
https://club.huawei.com/forum.php?mod=viewthread&tid=28415872
哈哈,这么看来是有部分有所相似呢,但是和你的原帖对比,并不一样哈。
你说的用词喜好和写作结构什么的,可以参考我其它的博文,你应该可以看出就是这样的风格,条条框框的都写的很清楚。
没错,什么“TPM支援版本” “TPM可用性”都是我瞎翻译的。
另外你所说的TPM支援版本和TPM可用性,BIOS的编译文件中已经有相关的注释,通过百度翻译后面的结果就是这样的。(文章4.6.2)
谢谢大佬!想了解一下如此修改会影响以后升级bios嘛?以后升级bios是否还需要再次修改?
不客气!这个修改不会影响BIOS固件以后升级的喔,以后升级BIOS理论来说是会保存我们的修改的,如果被恢复了也没关系,按照这个教程再次修改一遍就好。不过我觉得,待Windows11逐渐普及后,官方那边也应该会推送出新的BIOS固件把TPM的相关选项给放出来的。
了解了,十分感谢!!
H2OUVE LOAD runtime没反应是怎么回事儿
点击“Load Runtime”后软件就开始加载本机BIOS数据了,可能需要等待一段时间,并非无响应。
等待很久还是没有反应……
大佬硬核!这个tpm非常有需要!留个微信或者支付宝,请您喝杯coffee!