好咧
就这样吧

屏蔽NVIDIA独显的好方法


问题描述:本人电脑神舟K580S-i7 D0,换了高分屏,加装SSD,重新安装了Yosemite 10.10.5系统。在使用之前的DSDT以及SSDT文件时,发现在关于本机--系统报告--图形卡/显示器里面,分别有显示器与Intel HD Graphics 4000两个选项,显然是屏蔽独显不够彻底,决定重新做一下屏蔽独显。

解决步骤:具体的DSDT与SSDT文件的提取与反编译过程参考daxuexinsheng的[DSDT/SSDT综合教程]。接下来我们需要在DSDT中找到Scope (_SB.PCI0)下的Method (_INI)与Method (_WAK) 两个方法。(_INI为开机启动时调用的方法,_WAK为电脑睡眠时调用的方法),如图所示:
Scope (_SB.PCI0)下的_INI方法
4388671E-359B-4FB2-96BC-1BFE372DAFA6.png 

_WAK方法
8E913E81-FEF6-4E98-8A89-7B9FDB395ACD.png 

在这两个方法里面分别调用屏蔽独显的方法就可以了。独显的开闭方法一般对应SSDT中的*ON与*OF,在我的SSDT中对应着_ON与_OFF方法。如图所示:
6E84ACC3-2966-49D3-B09B-BAB40D647068.png 

但是经过查看帖子发现,直接调用_OFF方法来屏蔽独显有一定的副作用。在lisai9093的[解决Optimus和CPU Turbo变频冲突]帖子中,提供了一种高级的解决方式,通过_PS3来调用_OFF方法,同时将_OFF方法中的While循环代码删掉,如下所示:
_OFF中需要删除的代码
80B71CFC-519E-4154-829F-BE9A7A2B4C85.png 

分别在_WAK中与_SB.PCI0下_INI调用代码:

  1. If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._PS3))
  2.         {
  3.         \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
  4.             {
  5.         /* 0000 */    0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47, 
  6.         /* 0008 */    0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
  7.             }, 0x0100, 0x1A, Buffer (0x04)
  8.             {
  9.         0x01, 0x00, 0x00, 0x03
  10.             })
  11.         \_SB_.PCI0.PEG0.PEGP._PS3()
  12.         }
复制代码

如图所示:
(_WAK)
D2A48FA8-F69B-4DAA-A202-63BBBF6959C5.png 

(_INI)
DA2B36A1-8140-4FA6-9A3C-EC2A4AB79844.png 

经过测试,开机的时候风扇会旋转,但是经过一次睡眠唤醒之后,风扇就不再旋转。感觉这是目前比较好的处理方式,当然也可以试试1051550682帖子[神舟K580S I7 D0屏蔽独显后风扇狂转]中提到的方法

附上修改后的DSDT与SSDT文件
 DSDT&SSDT.zip (58.8 KB, 下载次数: 24) 

参考链接:
http://bbs.pcbeta.com/viewthread-1211619-1-1.html
http://bbs.pcbeta.com/viewthread-1450829-1-1.html
http://bbs.pcbeta.com/viewthread-1519779-1-1.html

重要补充:(源自daxuexinsheng[教程][授权翻译]使用补丁修改DSDT/SSDT[DSDT/SSDT综合教程]帖子)


注意:
1. \_SB_.PCI0.PEG0.PEGP ,这个作用域,不同的电脑不一样,大部分电脑是这样的,有的电脑的,PEG0 可能变成 RP05 等名字,需要自己先找找。
2. _OFF、_PS3、_ON、_PS0,这些函数的名字,不同的电脑也不一样,这几个是最常见的名字。

查找步骤:
1、一个SSDT:找定义了显卡的SSDT。这个SSDT的特点是,在MaciASL的左边栏的结构中,只有一个”\_SB.PCI0“,并且,它的下面有1个Device (GFX0)。那么,这个SSDT就是定义了显卡的。
2、另一个SSDT:找显卡包含显卡切换的SSDT。在Windows下提取的所有SSDT中,其中一个,有许多“\_SB_.PCI0.PEG0.PEGP”或者“\_SB_.PCI0.RP05.PEGP”这样的定义,在这个SSDT中,先搜索有没有"_PS3",如果有,那么再搜索有没有"_OFF",一般,有这两个了,"_ON"、"_PS0"也有了。这是一般的情况。
少数情况,只有"_PS3"和"_PS0",或者有"_PS3"和"_PS0",但没有"_OFF"和"_ON",相应的,可能是有 "SGOF"和"SGON" 或者 "OPOF"和"OPON" 。那么这两个就是替代者。
自己根据自己的文件判断。
3、可能有的SSDT:对于这个SSDT,有的电脑有,有的电脑没有。主要特点是,搜索,含有GFX0或者PEGP。或者,在MaciASL的左边栏也能直接看出来。与显卡有关的SSDT还是比较容易看出来的,其它的SSDT里,一般都是有CPU字样的。

这3个SSDT就是与屏蔽独显有关的。


相关推荐

最新回复