blog
blog copied to clipboard
精粤 bios 魔改负载曲线 loadline 实现降压记录
Allinboom
最近升级 nas 到 allinboom,计划在 pve 上面部署:
- lxc(docker) 提供简单 nas 服务
- vm0(win11 sriov hd770) 用于远程办公
- vm1(win10 passthrough rx6600) 当 pc 使用
- vm3(openwrt gateway) 用作旁路网关
- ...
cpu 是海鲜市场入的 Q0WH(13500 ES2),主要看到这个u没有13代e核电压高的bug,看到相关评测,整机功耗也比较低(后面才知道搭配精粤有坑)。
机箱是b站老鸽的见方,6盘位 matx 机箱,支持全高 pcie,allinone 理想选择,现在看来槽点是有的,atx电源貌似支持非模组,显卡散热比较坑,需要自己改造。目前箱子还没收到,等收到了看看怎么改造。
主板是精粤 B760M Snow Dream,原因也很简单--家境贫寒。
功耗测试
装机完成后,例行对整机功耗进行了测试,带上3个ssd,没装显卡的情况下,使用功率计进行测试,整机待机输入功率33w左右,单烤 fpu 整机输入功率185w+。
电压调整
着手就调整核心电压,进入 bios,对 offset 电压进行调整,调成-150 降压,重启开机后,然而没有什么效果。
查阅了一下资料,发现精粤调整电压是没用的,只能调整平台电压覆写,于是调整平台电压覆写之后,单烤 fpu 从原来的 185w 降到了 140w 左右,效果显著。然而发现待机功耗从原来的 33w 提升到了 50w 左右,这对 24/7 开机的 AIO 是不能接受的。
AC/DC loadline
有进行一番搜索,发现针对精粤主板和非k处理器,只有调整 AC/DC loadline
才能进行降压。然而,精粤的 bios 早在23年1月份开始就加入了「负载曲线」功能,且隐藏了核心 AC/DC loadline
菜单。而且 22 年的bios 不是针对 B760M Snow Dream 的,也不敢轻易刷入。
BIOS MOD
于是想到了对现在的 bios 进行修将 核心 AC/DC loadline 菜单显示回来,操作方法也不难,参照 uefi-editor 即可对隐藏的菜单显示回来。 这是个通用操作,其他 bios 有被隐藏的菜单,也可以通过这个方法取消隐藏:
-
使用 uefitool 打开 bios 文件
-
搜索关键词
ac loadline
-
双击下面搜索结果中的
ac loadline
-
右键
PE32 image section
选择extract as is..
-
使用 [ifrextractor] (https://github.com/LongSoft/IFRExtractor-RS/releases) 对 「Section_PE32_image_Setup_Setup.sct」文件进行提取
./ifrextractor Section_PE32_image_Setup_Setup.sct verbose
# windows 下使用:ifrextractor.exe "Section_PE32_image_Setup_Setup.sct" verbose
- 在当前展开部分的区域往下查找,找到
AMITSE
和setupdata
(据说有时候都在 AMISET 下面),在AMITSE
下找到并右键PE32 image section
选择Extract as is..
,保存「.sct文件」,在setupdata
下找到并右键setupdata
选择extract body..
-
此时,打开 uefi-editor 将刚刚的 4个文件导入浏览器,浏览器会进行解析并提供菜单
-
在搜索中输入
ac loadline
-
点击
Core/IA VR Settings
(因为只有核心的菜单被隐藏了),可以看到 AC/DC loadline 的菜单了,点击Suppress If
中的内容就可取消隐藏。
-
修改完成后,点击上面下载
UEFI files
,就可以得到,修改后的Section_PE32_image_Setup_Setup.sct
文件 -
使用 uefitool 0.28.0(必须使用这个版本),打开之前的精粤bios文件
-
搜索关键词
ac loadline
,就像之前一样 -
双击下面搜索结果中的
ac loadline
,就像之前一样 -
右键
PE32 image section
选择replace as is..
,打开刚刚修改完成的Section_PE32_image_Setup_Setup.sct
文件 -
点击
file -> save image file..
保存 bios,完事。
一顿操作之后,把 bios 刷入主板之后,终于看到了 AC/DC loadline 菜单,进行一番调整,重启进 bios 一看:
傻眼了,current AC/DC loadline
的值说明了修改的确生效了,但是,AC/DC loadline
的内容已经被改回了 100(由于我之前将负载曲线设置成了2)!!进入系统后发现,的确降压也生效了,待机从原来的33w降到28w左右,单烤fpu 也是从185w 降到140w。但是,重启后,current AC/DC loadline 已经变回 100 了~~
看来是有什么设置每次启动的时候将 AC/DC loadline 的值覆盖了,又是一番折腾之后,发现是「负载曲线」搞得鬼!!
精粤的「负载曲线」有 7 档:自动/1/2/3/4/5/6,就是简单的在启动的时候赋值给 AC/DC loadline:
- 自动(0): 110
- 1:90
- 2:100
- 3:120
- 4:130
- 5:140
- 6:150
这TM也太坑了,难怪加入了「负载曲线」后的 bios 都隐藏了 AC/DC loadline
菜单。。
Fuck 「负载曲线」
现在唯一的障碍就是干掉负载曲线这个功能了,我也咨询了精粤相关客服及QQ群,给到的回复都是没有办法,并给到一句期待后续更新,石沉大海。
是时候好好折腾一番了,此处省略一万字,终于搞出来了,以下操作都是在精粤B760m Snow Dream 2023-04-26 104微码 bios
为例, 下面是方法:
-
使用 uefitool 打开精粤 bios 文件
-
搜索
oemdxe
-
双击下面搜索结果中的
oemdxe
-
右键
PE32 image section
选择extract body..
-
使用 ida free 反编译导出的 「.efi文件」
-
找到
text
段0000000000000A16
位置(仅适用于精粤 B760m Snow Dream),这个位置是不一定的,每块精粤主板的 bios 甚至每个版本的 bios 位置都不同,主要是找到「负载曲线」覆写 AC/DC loadline 的那一段 -
在菜单中找到
edit->patch program->change byte
将最签名两个字节改为E9 A8
,E9
代表JMP
指令,A8
则是需要跳转的位置,需要根据 bios 内的程序自己确定,用于跳出这个程序块。修改在此处的作用,如果「负载曲线」的值为「自动」,就绕过了「负载曲线」,而如果值为「1-6」,则还是按照原来的逻辑,覆写 AC/DC loadline
。这里没有完全关闭「负载曲线」功能,是防止万一需要它。所以这样修改之后要手动调整 AC/DC loadline,「负载曲线」就必须
设置成「自动」 -
在菜单中找到
edit -> patch program -> apply patches to input file..
将「.efi文件」保存 -
使用 uefitool 0.28.0(必须使用这个版本),打开之前的精粤bios文件
-
搜索 oemdxe ,双击下面搜索结果中的 oemdxe,就跟刚才一样
-
右键
PE32 image section
选择replace body..
此处选择刚刚经 ida 修改的 「.efi文件」 -
搜索 loadline ,双击下面搜索结果中的
ac loadline
, 就跟刚才一样 -
右键
PE32 image section
选择replace as is..
此处选择刚刚 BIOS MOD中修改后将AC/DC loadline
菜单显示出来的 「Section_PE32_image_Setup_Setup.sct」 -
点击
file -> save image file..
保存 bios,完事。
刷入bios后,最好重置一下cmos,就可以愉快的调整 AC/DC loadline 来实现降压了