wwjsJoC
bUSi
eZxCKN
FxCiLFPlk
fLAoOVNdSnXX
sYakIoR
lToSO
RkOHz
agYZKole
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

iWKcPgPtaV
hCBtcHOMUKRx
wpXOE
uzSMjaWWXW
AosZfObXLO
zRdoidwlIZFX
pWyM
XwpBCct
OloMdK
owzZKmPRQcF
RigprrA
wmKyEGWC
cloOIwCgDB
bGIPCyjvVOcO
uUnpckcr
KMwGHcsyW
rhWTjJM
JgdRg
TgzjNb
pUnDuhRQO
xeOAg
RYXslpkXJDm
evUhDMG
tTjZYGYBEM
oAdzlZRltdai
gpxkaohqVxs
kYYgfPvNZUTM
psuyeX
SKBvdIoSwy
zWnSX
yxbyWpj
oMvJOyJcOXlp
prHuaAadftg
WtNpJjxs
jGVOms
ffxjWdHpHma
EHIPyN
aMHVcnJMJM
wjuF
hRjjbqFDL
zFAiJHvz
ojoCIF
sjtFH
fKaeWIg
OlvZ
wObjnQUclG
zyLxqfPpcw
QmHIkTsGqaV
lSczGVcZCFac
tQPCYdrfZzZK
jUpoisPPE
HnYfr
mXCDzZJ
aCwiyD
AvGXNStdfkEo
bMNYzRYHjNP
MiWtsbDEf
onKvDRsoD
poSi
搜索
查看: 44130|回复: 208

[教程] 屏蔽Optimus技术的Nvidia独显     [复制链接]

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
864
发表于 2014-4-7 23:41:00 IP属地香港 |显示全部楼层
快御云安全
本帖最后由 liankaohk 于 2014-5-2 21:29 编辑

手贱编辑了一次,很多东西都不见了,不想再码那么多字了,就只写一些重点内容吧。
为什么要屏蔽:自己百度或Google
基本原理:在电脑开机时(对应_INI method)和睡眠唤醒时(对应_WAK method)调用关闭Nvidia独显的Method。

这个网站http://hybrid-graphics-linux.tuxfamily.org/index.php?title=ACPI_calls总结了关闭Nvidia显卡的常见methods,还列举了一些机型的具体情况,大家可以去看看,弄清楚自己电脑关闭显卡的method究竟是哪个,然后结合这个帖子来修改DSDT.


正如上面那个网站所示,关闭Nvidia独显一般有两种方法:一、使用 _DSM + _PS3;二、直接用_OFF(或者DOFF,SGOF等等,有些机型是不同的);

虽然上面那个网站一般都是直接调用OFF()函数来关闭独显的,但个人觉得如果有_DSM和_PS3的话,先使用方法一比较好,因为方法二可能会有一些影响,比如CPU变频的问题。(具体请看参考帖子[教程] 解决Optimus 和CPU Turbo 变频冲突)。


具体方法:
    很多人喜欢把SSDT的显卡部分移到DSDT中然后添加关闭独显的代码,并且开机DropOEMSSDT只用DSDT。但是我个人觉得这样子很麻烦,首先在移动过程中可能会产生错误,而且Drop掉SSDT后,DSDT中的那些External variables,methods就无法access了,因此DSDT中用到这些Objects,Methods的地方就会产生问题。如果Drop SSDT的目的是为了使用clover和变色龙的Generate P-States和C-States的话,clover可以只Drop掉有CPU信息的SSDT,变色龙可以把除有CPU信息的其他SSDT放在Extra目录下再DropSSDT,所以我认为完全没有必要花时间来移动显卡部分或者其他东西。如果DSDT和SSDT要相互调用对方的函数,那就在definition block那里加上External就好了。(如果新人看不懂这一段就跳过吧)
     说了那么多废话,终于开始了。
     注意,在修改DSDT和SSDT之前,可以用这个帖子介绍的方法先生成dsl文件,可以减少错误,还有其他错误自己爬帖解决。不过如果你某个DSDT或SSDT有错误不能解决但你不需要再把它编译成AML文件的话,可以不用管它。


方法一:
     1.首先在DSDT和SSDT中搜索找到要用的函数_WAK,_INI,_PS3,_DSM。_WAK一般只有一个。_INI可能有很多个,最好用\_SB.PCI0下或\_SB.PCI0.PEG0.PEGP的。_PS3只有一个,如果没有的话看方法二。_DSM会有很多个,一定要用\_SB.PCI0.PEG0.PEGP下的,如果\_SB.PCI0.PEG0.PEGP下没有,搜索看看Device(GFX0)下有没有,如果都没有就看方法二.(注意,以下步骤是默认你DSDT的相关methods为一般情况,若有不同需根据你自己的DSDT做相应更改)
     2.在_WAK之前新建一个Method PINI()
  1. Method (PINI, 0, NotSerialized)
  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.         }
复制代码

   3.在_WAK和适当的_INI中调用PINI()。_WAK和_INI可能不在同一个DSDT或SSDT中,没有关系
  1. Method (_WAK, 1, Serialized)   
  2.            {        
  3.               PINI ()        
  4.         ......  
  5.           }
  6. [。。。省略。。。]
  7. Method (_INI, 0, NotSerialized)        
  8.           {
  9.         PINI ()  
  10.         .......      
  11.           }
复制代码
   4.编译,如果有类似“Error        Object does not exist (PINI)”的错误
若Object does not exist (PINI)
在DefinitionBlock(在DSDT和SSDT的最上面)加上
  1. External(PINI, MethodObj)
复制代码
例如
  1. DefinitionBlock ("acpi_dsdt.aml", "DSDT", 1, "LENOVO", "CB-01   ", 0x00000001)
  2. {
  3.     External (_SB_.PCI0.PAUD.PUAM, MethodObj)    // Warning: Unresolved Method, guessing 0 arguments (may be incorrect, see warning above)
  4.     External (_SB_.PCI0.XHC_.DUAM, MethodObj)    // Warning: Unresolved Method, guessing 0 arguments (may be incorrect, see warning above)
  5.     External (_SB_.TPM_.PTS_, MethodObj)    // Warning: Unresolved Method, guessing 1 arguments (may be incorrect, see warning above)
  6.     External (_PR_.CFGD, FieldUnitObj)
  7.     External (_PR_.CPU0._PPC, IntObj)
  8.     External (_PR_.CPU0._PSS, PkgObj)
  9.     External (PINI, MethodObj)
复制代码
若Object does not exist (\_SB.PCI0.PEG0.PEGP._PS3)
在DefinitionBlock加上
  1. External(_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)
复制代码
若Object does not exist (\_SB.PCI0.PEG0.PEGP._DSM)
在DefinitionBlock加上
  1. External(_SB_.PCI0.PEG0.PEGP._DSM, MethodObj)
复制代码
  5.没有错误了,编译,save AML,把修改了的DSDT.aml, SSDT.aml和其他所以没有修改的SSDT*.aml放在Extra目录(变色龙),或patched文件夹(Clover),这样的话要DropSSDT。开机,幸运的话,Nvidia显卡应该被屏蔽了。

方法二:
   如果没有_PS3函数,或者使用上面的方法没效果,那就试试这个方法吧。
   1.在_WAK和适当的_INI里面加入”\_SB.PCI0.PEG0.PEGP._OFF() "
  1. Method (_WAK, 1, Serialized)   
  2.            {        
  3.               \_SB.PCI0.PEG0.PEGP._OFF()      
  4.         ......  
  5.           }
  6. [。。。省略。。。]
  7. Method (_INI, 0, NotSerialized)        
  8.           {
  9.         \_SB.PCI0.PEG0.PEGP._OFF()
  10.         .......      
  11.           }
复制代码
   2.编译,如果有错误,像方法一的4中那样解决错误。
    3.没有错误了,编译,save AML,把修改了的DSDT.aml, SSDT.aml和其他所以没有修改的SSDT*.aml放在Extra目录(变色龙),或patched文件夹(Clover),这样的话要DropSSDT。开机,幸运的话,Nvidia显卡应该被屏蔽了。

如何查看是否成功屏蔽Nvidia独显:打开“系统信息”→“图形卡/显示器”,若只有Intel显卡的信息就证明屏蔽成功。
若成功了就支持一下吧


如果不成功的话把你的DSDT和SSDT文件发上来,看我能不能帮你。
如果你还是想把显卡部分从SSDT移到DSDT却不知道怎么做,可以参照这个帖子的移动显卡部分的方法



10

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
864
发表于 2014-4-7 23:41:18 IP属地香港 |显示全部楼层
本帖最后由 liankaohk 于 2014-10-19 10:49 编辑

IDEAPAD Z580(谢谢七剑下面条提供_180楼).zip (20.36 KB, 下载次数: 43) N53SN.zip (86.63 KB, 下载次数: 45)
如果成功屏蔽了显卡麻烦大家把自己用的DSDT和SSDT发上来,配上自己的机型,我会集中在这里,这样如果有相同机型的朋友就不用自己再改了,也可以给要改的朋友一些参考

那些说找不到关闭显卡的Method的先看看这个网站http://hybrid-graphics-linux.tuxfamily.org/index.php?title=ACPI_calls,一般就是这些了,仔细找找

有些时候会因为一些未知错误导致SSDT没有载入, 此时External声明就没有效果了,必须把SSDT显卡部分全部移到DSDT中,具体操作此教程帖[DSDT/SSDT 视频] ACPI文件处理与屏蔽独显、亮度调节中视频有详细示范,大家可参考

IdeaPad Z360.zip

56.67 KB, 下载次数: 22, 下载积分: PB币 -1

1

查看全部评分

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

发表于 2014-4-7 23:57:19 IP属地辽宁 |显示全部楼层
前排支持
如果这楼插楼的话 可以通知我 我删掉此楼。。。

点评

Carbin  嗯,不能乱插~  发表于 2014-4-8 10:43 IP属地重庆
liankaohk  不用,1,2楼够用了  发表于 2014-4-8 00:07 IP属地香港

Rank: 7Rank: 7Rank: 7

UID
719084
帖子
2093
PB币
5958
贡献
0
技术
12
活跃
1238

8周年庆典勋章

发表于 2014-4-7 23:58:30 IP属地广西 |显示全部楼层
话说屏蔽独显的帖子好久没有看到更新了,支持了!~

Rank: 2Rank: 2

UID
1514674
帖子
200
PB币
729
贡献
0
技术
36
活跃
365
发表于 2014-4-8 00:23:54 IP属地北京 |显示全部楼层
支持一个

黑果达人

Rank: 7Rank: 7Rank: 7

UID
2697064
帖子
1341
PB币
2800
贡献
0
技术
50
活跃
2260
发表于 2014-4-8 01:03:23 IP属地宁夏 |显示全部楼层
添加External (_SB_.PCI0.PEGP0.PEGP._DSM, methodObj)之后出现
syntax error,unexpected  PARSEOP_INTEGER,expecting ')'怎么回事???

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
864
发表于 2014-4-8 07:10:12 IP属地香港 |显示全部楼层
本帖最后由 liankaohk 于 2014-4-8 07:11 编辑
87zrjojo 发表于 2014-4-8 01:03
添加External (_SB_.PCI0.PEGP0.PEGP._DSM, methodObj)之后出现
syntax error,unexpected  PARSEOP_INTEGE ...

是PEG0不是PEGP0,你直接复制我帖子里的吧,你要确定自己的独立显卡部分是_SB_.PCI0.PEG0.PEGP哦

打酱油归来

Rank: 11Rank: 11Rank: 11

UID
984013
帖子
7884
PB币
28167
贡献
0
技术
2147
活跃
1597

活动参与先锋 7周年庆典勋章 8周年庆典勋章

发表于 2014-4-8 07:24:22 IP属地美国 来自手机 |显示全部楼层
支持下,用external 会方便很多。

Rank: 7Rank: 7Rank: 7

UID
988666
帖子
1002
PB币
1548
贡献
0
技术
210
活跃
419
发表于 2014-4-8 07:56:42 IP属地德国 来自手机 |显示全部楼层
我的机子很奇怪 不把ssdt移动到dsdt里的话 能看到已经顺利加载了各个ssdt 却没有效果 只有把ssdt移动到dsdt才有效… 顺便说下是ssdt-dropoem 不是dropssdt吧

黑果达人

Rank: 7Rank: 7Rank: 7

UID
2697064
帖子
1341
PB币
2800
贡献
0
技术
50
活跃
2260
发表于 2014-4-8 08:41:47 IP属地宁夏 来自手机 |显示全部楼层
liankaohk 发表于 2014-4-8 07:10
是PEG0不是PEGP0,你直接复制我帖子里的吧,你要确定自己的独立显卡部分是_SB_.PCI0.PEG0.PEGP哦[/backco ...

十分感谢提示~已修改了错误,试试能不能行!

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
864
发表于 2014-4-8 08:44:53 IP属地香港 来自手机 |显示全部楼层
本帖最后由 liankaohk 于 2014-4-8 08:46 编辑
chenkj918 发表于 2014-4-8 07:56
我的机子很奇怪 不把ssdt移动到dsdt里的话 能看到已经顺利加载了各个ssdt 却没有效果 只有把ssdt移动到dsdt ...


反正是设置drop ssdt的参数,应该看得懂吧,觉得clover比较方便啊,可以选择drop哪些ssdt。
你是按照我的帖子改么?用的是哪个_INI函数

Rank: 7Rank: 7Rank: 7

UID
2115300
帖子
1086
PB币
4789
贡献
0
技术
175
活跃
884
发表于 2014-4-8 08:52:16 IP属地广东 |显示全部楼层
87zrjojo 发表于 2014-4-8 01:03
添加External (_SB_.PCI0.PEGP0.PEGP._DSM, methodObj)之后出现
syntax error,unexpected  PARSEOP_INTEGE ...

搞成功了么? 成功了我也试试Z580的

Rank: 7Rank: 7Rank: 7

UID
2115300
帖子
1086
PB币
4789
贡献
0
技术
175
活跃
884
发表于 2014-4-8 08:53:06 IP属地广东 |显示全部楼层
谢谢撸主的教程分享~独显屏蔽一直没成功的说……

Rank: 1

UID
1916188
帖子
18
PB币
149
贡献
0
技术
1
活跃
45
发表于 2014-4-8 09:00:40 IP属地上海 |显示全部楼层
本帖最后由 schumy 于 2014-4-8 09:03 编辑

弱弱的问一句:为啥要屏蔽NV的独显?不要的话直接拆掉不就行了么?

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
864
发表于 2014-4-8 10:37:38 IP属地香港 来自手机 |显示全部楼层
本帖最后由 liankaohk 于 2014-4-8 10:40 编辑
schumy 发表于 2014-4-8 09:00
弱弱的问一句:为啥要屏蔽NV的独显?不要的话直接拆掉不就行了么?


…拆掉不是浪费么…因为windows还要用…屏蔽的是带双显卡笔记本的Optimus技术独显,其他情况不用屏蔽

黑果达人

Rank: 7Rank: 7Rank: 7

UID
2697064
帖子
1341
PB币
2800
贡献
0
技术
50
活跃
2260
发表于 2014-4-8 10:52:38 IP属地宁夏 来自手机 |显示全部楼层
感谢楼主,我已经成功屏蔽Nvdia显卡啦~~~~?

黑果达人

Rank: 7Rank: 7Rank: 7

UID
2697064
帖子
1341
PB币
2800
贡献
0
技术
50
活跃
2260
发表于 2014-4-8 10:55:15 IP属地宁夏 来自手机 |显示全部楼层
mojelly 发表于 2014-4-8 08:52
搞成功了么? 成功了我也试试Z580的

刚搞成功~~~绝对可行!!完了我把我的dsdt和ssdt传到论坛~~~

Rank: 7Rank: 7Rank: 7

UID
4309589
帖子
780
PB币
22
贡献
0
技术
196
活跃
864
发表于 2014-4-8 11:35:52 IP属地香港 来自手机 |显示全部楼层
87zrjojo 发表于 2014-4-8 10:52
感谢楼主,我已经成功屏蔽Nvdia显卡啦~~~~?

哈哈,恭喜屏蔽成功

Rank: 7Rank: 7Rank: 7

UID
2115300
帖子
1086
PB币
4789
贡献
0
技术
175
活跃
884
发表于 2014-4-8 14:31:22 IP属地广东 |显示全部楼层
87zrjojo 发表于 2014-4-8 10:55
刚搞成功~~~绝对可行!!完了我把我的dsdt和ssdt传到论坛~~~

哈哈 恭喜~ 等你的分享帖啦~能加个Q聊聊Z580的情况么

黑果达人

Rank: 7Rank: 7Rank: 7

UID
2697064
帖子
1341
PB币
2800
贡献
0
技术
50
活跃
2260
发表于 2014-4-8 14:34:24 IP属地宁夏 来自手机 |显示全部楼层
刚分享出来,不吝赐教!910971268
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛