关于蓝天NP5x_6x_7x_SNx1不刷BIOS限制CPU核心电压的方法

目的

记录修改的过程,同时希望对路过的有所帮助

背景

本人使用的将星X15 AT 23H2曾出现过黑屏,打游戏卡屏然后自动重启的问题,黑屏的Windows日志显示是NVIDIA显卡报错,卡屏重启的报错完全看不懂。考虑到最近13代14代酷睿处理器不稳定问题,而i7-13650HX本质是桌面13代阉割而来,我怀疑之前出现的问题,可能和这个问题有关。

通过结合Intel自身承认和网上的说法,应该是核心供电电压太高导致的,通过HWINFO软件监控,我的CPU VID可以最高达到1.347V,结合网上的说法,这个电压有点高了,我怀疑之前出现黑屏和重启问题可能就是这个问题。而网上说法最简单的方法便是设置VR Voltage Limit来限制电源提供的电压来防缩肛。而笔记本BIOS选项及其简陋,没有这种选项,便着手研究不解锁BIOS情况下限制电压的方法。

结果

成功限制VID电压,我设置的限制值为1300,实际效果VID一天内最高只达到过1.295V。大多数时候在1.290V以下。

步骤

要用到的工具

UEFItool:Releases · LongSoft/UEFITool (github.com)

Universal IFR Extractor来自:工具整合:https://pan.baidu.com/s/11HbLIylEecluXYowqlgQXA?pwd=6666

提取码:6666 作者:lwyx2017 https://www.bilibili.com/read/cv16477736/ 出处:bilibili

modGRUBShell.efi: Releases · datasone/grub-mod-setup_var (github.com)

DiskGenius:DiskGenius – 正式版下载|免费下载

1、先备份BIOS

工具:https://download.csdn.net/download/zhutuizhi/88658387

用法

解压出来后以管理员打开CMD进入到目录下,执行

 .\FPTW64.exe  -d bios_all.bin 

该方法读取整个32M的flash内容,包含了BIOS和ME固件。

如果只读取BIOS区

可以执行

 .\FPTW64.exe  -d x15bios.bin -bios

这将读取16M内容的BIOS。不过,Windows下没法把读出来的写回去,因为BIOS存在保护。

写不了的提示如下

2、分析要修改的地方

用UEFItool打开提取的BIOS,搜索setuputility

选中PE32 image section 然后右键Extract as is导出为Section_PE32_image_SetupUtility_SetupUtility.sct,

用Universal IFR Extractor反编译,选中要导出的地址,点击Extact得到Section_PE32_image_SetupUtility_SetupUtility IFR.txt

然后打开该文本文件,搜索VR Voltage Limit,可以搜到3个,确保其上级菜单为Core/IA VR Settings,

0x1864A3 			Numeric: VR Voltage Limit, VarStoreInfo (VarOffset/VarName): 0x1BE, VarStore: 0x3, QuestionId: 0x154, Size: 2, Min: 0x0, Max 0x1F3F, Step: 0x1 {07 94 65 02 66 02 54 01 03 00 BE 01 10 11 00 00 3F 1F 01 00}
0x1864B7 				Default: DefaultId: 0x0, Value (16 bit): 0x0 {5B 07 00 00 01 00 00}
0x1864BE 			End {29 02}

可知该变量存储地址为0x1BE,大小是2个字节,最大值0x1F3F,存储在id为0x3的变量区,而0x3对应的名字是CpuSetup

0x181917 	VarStoreEFI: VarStoreId: 0x3 [B08F97FF-E6E8-4193-A997-5E9E9B0ADB32], Attrubutes: 7, Size: 3DF, Name: CpuSetup {26 23 03 00 FF 97 8F B0 E8 E6 93 41 A9 97 5E 9E 9B 0A DB 32 07 00 00 00 DF 03 43 70 75 53 65 74 75 70 00}

0x1BE默认值为0,代表VR电压没有限制,我们需要修改到要限制的值,比如1.3V的话,值就是1300,因为是16进制存储,就0x514,因为以小端存储,低位字节在前,故0x1BE代表的1个字节存储0x14,0x1BF地址代表的1个字节存储0x05.

3、用setup_var工具修改变量

知道了要修改的内容,接下来就是动手修改了,用一个U盘,将U盘转换为GPT格式,并建立ESP分区

将modGRUBShell.efi重命名为bootx64.efi,然后拷贝到ESP分区efi/boot目录下,目录自己创建

然后重启,进入BIOS,要重U盘的这个文件进入,需要先到Secure Boot中设置密码,然后将这个文件设置为可信任文件,然后才能用BIOS Boot From File启动。

启动后进入grub>提示

可以先输入些指令,看看有值的区域是否符合设想来确保修改的是正确的区域,比如0x32A的地址存储的是0x2EC

0x186482 					Numeric: Fast Vmode Itrip ICC Limit, VarStoreInfo (VarOffset/VarName): 0x32A, VarStore: 0x3, QuestionId: 0x10C6, Size: 2, Min: 0x0, Max 0x7F8, Step: 0x1 {07 94 57 02 58 02 C6 10 03 00 2A 03 14 11 00 00 F8 07 01 00}
0x186496 						Default: DefaultId: 0x0, Value (16 bit): 0x2EC {5B 07 00 00 01 EC 02}
0x18649D 					End {29 02}

故可以输入

setup_var_cv CpuSetup 0x32a

查看0x32a是否是0x2EC的低位字节值0xec

setup_var_cv CpuSetup 0x32b

查看0x32b是否是0x2EC高位字节0x02

确定没问题之后便可以就可以开始设置了,注意setup_var命令设置的是setup变量区内的变量,要修改CPUSetup区的变量,要使用setup_var_cv,然后紧跟变量区名,要修改的地址,要修改的字节数,以及要修改的值,怕出错最好一次修改一个字节,然后读取2个字节。

即需输入

setup_var_cv CpuSetup 0x1be 0x01 0x14
setup_var_cv CpuSetup 0x1bf 0x01 0x05
setup_var_cv CpuSetup 0x1be 0x02

效果如图

缺点:

修改完成后再读出来的BIOS,如果用InsydeH2OUVE工具打开,将看不到整个CpuSetup变量区。不知道会有什么影响,但确实起到了限制电压的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值