本帖最后由 雾瞑 于 2013-8-31 20:19 编辑
笔记本电脑的CPU和GPU是共用散热模组的,所以在温度上会互相影响。而Optimus技术在mac下就是个蛋疼的玩意 ,只会使双显卡增加多余的热量。尽管双显卡实际驱动的是hd3000/hd4000但因n卡也是内置的所以热量问题无法排除,那就需要通过一些方法去屏蔽这个蛋碎的玩意。
屏蔽独显的前提条件
目前已知的仅限华硕笔记本可以参考下 根据原作者机型N53SV推断 基本上基于k53系列主板的应该可以通用
屏蔽独显的实施方法 dsdt+NoNvidia.kext禁用N卡
DSDT修改部分:
是否需要修改DSDT,视下面几种情况而定:
1. 如果你的dsdt里面的独立显卡设备代码(比如原作者的dsdt中是 Device(GFX0))里面包含有DOFF方法( Method(DOFF) ),那么你的dsdt不用做任何修改,直接用修改过的NoNvidia.kext就可以实现禁用N卡,缺点是Optimus状态指示灯是白色的。
2.如果你的dsdt中没有 DOFF 方法,或者你想要让Optimus状态指示灯变蓝色,那么你就需要修改DSDT。
3.也许同样功能的方法在你的DSDT可能不是以DOFF的名字出现,比如:GPUOFF。那么是可以用DOFF方法来取代之(贴上原文,不知翻译是否有误 :If your disabling function is not DOFF but i.e. GPUOFF is enough to replace any occurrence of GPUOFF with DOFF. 如果翻译有误,希望大家指正哦!)
4.如果你想要完全禁用N卡,并让Optimus状态指示灯变蓝色(原作者机型是N53sv)。那么就需要修改DSDT。
以原作者的N53sv的dsdt代码为例:首先用DSDT Editor打开你的dsdt,并搜索DOFF,看看哪里调用了DOFF方法。然后对dsdt做下述修改。 (原作者LCDD设备中的_PS3方法调用了DOFF方法)
- Method (_PS3, 0, NotSerialized)
- {
- If (LEqual (^^^GFX0.P3MO, 0x03))
- {
- DOFF ()
- SGPL (0x23, One, Zero)
- Store (0x03, ^^^GFX0._PSC)
- Store (One, ^^^GFX0.DGPS)
- Store (0x02, ^^^GFX0.P3MO)
- }
- }
复制代码
将上述DOFF()后面的代码,也就是上述的第 6~9 行,剪切出来,贴到DOFF方法的后面,也就是Method (DOFF, 0, NotSerialized)后面。修改后的代码,变成下述这个样子:(注意下面第19~22行代码是从_PS3方法里面剪切过来的) - Method (_PS3, 0, NotSerialized)
- {
- If (LEqual (^^^GFX0.P3MO, 0x03))
- {
- DOFF ()
- }
- }
- […省略....]
- Method (DOFF, 0, NotSerialized)
- {
- If (LNotEqual (MFTM, One))
- {
- _OFF ()
- If (LEqual (CTBO, One))
- {
- OBCP (Zero)
- }
- }
- SGPL (0x23, One, Zero)
- Store (0x03, ^^^GFX0._PSC)
- Store (One, ^^^GFX0.DGPS)
- Store (0x02, ^^^GFX0.P3MO)
- }
复制代码
NoNvidia.kext修改部分:
下载文章末尾的附件,解压出来后,显示NoNvidia.kext的包内容,找到info.plist,用文本编辑,或者PlistEditPro打开,找到下面字段。 - <key>IOPCIPrimaryMatch</key>
- <string>
- 0x0df410de&0xfff0ffff
- </string>
复制代码
然后将上面的0df4字段改为你的设备ID,设备ID可以从硬件ID知道。比如我的GT540M的硬件ID是VEN 10de DEV 0df4 ,DEV 后面的0df4就是16进制的设备ID(Device ID)。硬件ID可以从Windows下的设备管理器得到。
修改好info.plist保存后,将NoNvida.kext放入/S/L/E。DSDT放回/E/E。然后修复权限,重建缓存。重启电脑,用-v -f模式启动,是不是出现了文章开头说的nvidia card successfully disabled代码了啊~~
屏蔽独显温度下降图
原先温度50多度 屏蔽独显后40多度
HWmonitor显示如下图
系统的Kernel.log日志显示为:
- localhost kernel[0]: NoNvidia: NoNvidia by michyprima, init
- localhost kernel[0]: NoNvidia: got the ACPI device
- localhost kernel[0]: NoNvidia: disabling nvidia card
- localhost kernel[0]: NoNvidia: nvidia card successfully disabled
复制代码
看到这里坛友们应该清楚怎么做了
声明以上实施过程是joyjeo大大提供的 这是原作者的帖子出处 https://bbs.pcbeta.com/viewthread-1038282-1-1.html
我只是做了些整理 发给需要的坛友做个参考
PS:本人的机型是k53系列 所以在编译器里搜索了DOFF方法 和_PS3关键字 很容易就发现了独显的位置和独显开关代码 也就是说本机是不需要修改dsdt代码的,只需要放置补丁即可。
附上屏蔽独显所需的补丁如下
NoNvidia.kext.zip
(13.38 KB, 下载次数: 45)
其他品牌主板参考这篇文章中的方法看看https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1326849
效果如何请坛友自行测试后反馈下 造福更多的后来人
|