applejunle 发表于 2016-4-23 16:09

屏蔽NVIDIA独显的好方法

本帖最后由 applejunle 于 2016-4-24 01:10 编辑

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

解决步骤:具体的DSDT与SSDT文件的提取与反编译过程参考daxuexinsheng的。接下来我们需要在DSDT中找到Scope (_SB.PCI0)下的Method (_INI)与Method (_WAK) 两个方法。(_INI为开机启动时调用的方法,_WAK为电脑睡眠时调用的方法),如图所示:
Scope (_SB.PCI0)下的_INI方法


_WAK方法


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


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


分别在_WAK中与_SB.PCI0下_INI调用代码:
If (CondRefOf(\_SB_.PCI0.PEG0.PEGP._PS3))
      {
      \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
            {
      /* 0000 */    0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
      /* 0008 */    0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
            }, 0x0100, 0x1A, Buffer (0x04)
            {
      0x01, 0x00, 0x00, 0x03
            })
      \_SB_.PCI0.PEG0.PEGP._PS3()
      }如图所示:
(_WAK)


(_INI)


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

附上修改后的DSDT与SSDT文件


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

重要补充:(源自daxuexinsheng的[教程][授权翻译]使用补丁修改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就是与屏蔽独显有关的。

dlhonghan 发表于 2016-4-23 17:42

学习了 谢谢分享

applejunle 发表于 2016-4-23 21:12

自己顶一下,屏蔽独显后风扇狂转的可以试试这个方法。

limurphy 发表于 2016-4-23 21:20

Thank you !

loonyeo 发表于 2016-4-23 21:27

谢谢楼主分享

123456是线段 发表于 2016-4-23 21:29

本帖最后由 123456是线段 于 2016-4-23 21:32 编辑

正好,我也想看屏蔽独显代码的效果哦.而且我也可以练习屏蔽独显的DSDT哦.

fx9600 发表于 2016-4-23 22:17

绝对的神帖 能帮到好多人。

我不要用户名 发表于 2016-4-23 22:55

好帖
。。少见的屏蔽独显的详细帖

lilovemo520 发表于 2016-4-23 23:09

唉,同是神舟K580,开机风扇狂转,必须睡眠一次,真恶心。找了两个月没好的解决方法。。。

applejunle 发表于 2016-4-23 23:11

lilovemo520 发表于 2016-4-23 23:09 https://www.pcbeta.com/static/image/common/back.gif
唉,同是神舟K580,开机风扇狂转,必须睡眠一次,真恶心。找了两个月没好的解决方法。。。

试试我的方法,电脑好像正常了。

azb1262006 发表于 2016-4-23 23:36

lilovemo520 发表于 2016-4-23 23:09 https://www.pcbeta.com/static/image/common/back.gif
唉,同是神舟K580,开机风扇狂转,必须睡眠一次,真恶心。找了两个月没好的解决方法。。。

直接用_OFF在SSDT屏蔽,屏蔽之前先用ssdt cleanup把这个SSDT中的所有多余方法清理

其它DSDT,SSDT的DSM不需要动。

然后回到BIOS直接重新保存下BIOS设置。


你试试看我说的?

请叫我官人 发表于 2016-4-24 00:00

很有技术含量谢谢楼主分享!

lilovemo520 发表于 2016-4-24 07:38

azb1262006 发表于 2016-4-23 23:36 https://www.pcbeta.com/static/image/common/back.gif
直接用_OFF在SSDT屏蔽,屏蔽之前先用ssdt cleanup把这个SSDT中的所有多余方法清理

其它DSDT,SSDT的DS ...

可以, 谢谢,不过ssdt cleanup没听说过啊,哪里的功能{:5_597:}

lilovemo520 发表于 2016-4-24 11:56

azb1262006 发表于 2016-4-23 23:36 https://www.pcbeta.com/static/image/common/back.gif
直接用_OFF在SSDT屏蔽,屏蔽之前先用ssdt cleanup把这个SSDT中的所有多余方法清理

其它DSDT,SSDT的DS ...

我重新在WIN下提取DSDT和SSDT,然后一顿操作,现在好了{:5_278:}

377172423 发表于 2016-4-24 12:08


谢谢楼主分享

LiuJiangshan 发表于 2016-4-24 12:30

远景因你们而精彩

applejunle 发表于 2016-4-24 12:36

lilovemo520 发表于 2016-4-24 11:56 https://www.pcbeta.com/static/image/common/back.gif
我重新在WIN下提取DSDT和SSDT,然后一顿操作,现在好了

推荐在Linux系统上面提取。

li5462987 发表于 2016-4-24 14:39

lilovemo520 发表于 2016-4-24 15:35

applejunle 发表于 2016-4-24 12:36 https://www.pcbeta.com/static/image/common/back.gif
推荐在Linux系统上面提取。

之前在LINUX上提取的,怎么搞都有问题。。。。

icefiregx 发表于 2016-4-25 19:10

学习一下,收藏了。多谢分享!
页: [1] 2 3
查看完整版本: 屏蔽NVIDIA独显的好方法