Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

I can't eliminate errors when compiling. help me to fix.. battery percentage, blacklight and turn off discrete graphic... plz
 

Attachments

  • origin.zip
    199.7 KB · Views: 114
  • CLOVER.zip
    3.9 MB · Views: 122
Hi All

I'm trying to make things real fot ASUS AIO PRO 240IC
I'm able to install using Intel inject but get no more 31 Mb VRAM at all

Would you please guys be so kind to help to get it real.

I can't find _INI for _SB.PCI0.PEG0.PEGP
Just _ON and _OFF

So what should I do to disable dGPU
Is it should be just as easy as add

Method(_INI) { _OFF() }

to SSDT-8-OptTabl.dsl ?

Is it worth in terms of getting more VRAM at the end?
Now I'm stuck on IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, in case Intel injecting using pseudo id is off

I'm following with this great manual ( thnx a lot, sir ) https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/

Thnx
 

Attachments

  • DSDT.dsl
    1.1 MB · Views: 130
  • SSDT-8-OptTabl.dsl
    46.6 KB · Views: 105
Thanks @RehabMan for the great guide and support.
I wanted to point to a nice and simple method in the OpenCore guide, that seems to be the way to go now:


By adding the property as described there, I successfully blocked my Nvidia GPU which made sleep work on my laptop.
 
Hi.
@vgerris, is this guide for AMD based mbp 2011 17'' as well? I see the OpenCore has many limitations but I am not sure. What is your machine you used this on?
Does anybody knows what does this mean? This is in the guide. How do I disable it?
CSM must be off in the BIOS for the spoofing to work correctly, especially on AMD CPU based systems.
 
Thanks @RehabMan for the great guide and support.
I wanted to point to a nice and simple method in the OpenCore guide, that seems to be the way to go now:


By adding the property as described there, I successfully blocked my Nvidia GPU which made sleep work on my laptop.
Which one of the three methods you used? I am using the boot-arg one, but my battery still draining so quick!
 
@jdran not sure what you mean, this is not for macs.
@Yousif I used what I linked to : device properties in config.plist.
Make sure your card does not show up under graphics, it might not be properly disabled.
Follow the guide and verify, good luck
 
Hello Everyone

I need help for opencore bootloader ssdt hotpatch to disable gpu
this is my gpu path : SB.PCI0.PEG0.PEGP
I found _OFF

Scope (\_SB.PCI0.PEG0.PEGP)
{
Method (_ON, 0, Serialized) // _ON_: Power On
{
\_SB.PCI0.PGON (Zero)
If ((\_SB.PCI0.DGPV != 0x10DE))
{
Notify (\_SB.PCI0.PEG0, Zero)
}
}

Method (_OFF, 0, Serialized) // _OFF: Power Off
{
\_SB.PCI0.PGOF (Zero)
If ((\_SB.PCI0.DGPV != 0x10DE))
{
Notify (\_SB.PCI0.PEG0, Zero)
}
}

Method (SGPO, 4, Serialized)
{
If ((Arg2 == Zero))
{
Arg3 = ~Arg3
Arg3 &= One
}

If ((SGGP == One))
{
If (CondRefOf (\_SB.SGOV))
{
\_SB.SGOV (Arg1, Arg3)
}
}
}
}

_INI

Method (_INI, 0, NotSerialized) // _INI: Initialize
{
If (((SGMD == 0x03) && (IGDS != Zero)))
{
IGDS = Zero
}

\_SB.SHPO (FBEN, One)
\_SB.SHPO (ENVT, One)
\_SB.SPC0 (FBEN, ((\_SB.GPC0 (FBEN) & 0xFFFFF0FF) | 0x0100))
\_SB.SPC0 (ENVT, ((\_SB.GPC0 (ENVT) & 0xFFFFF0FE) | 0x0201))
}
Method PGOF
Method (PGOF, 1, Serialized)
{
PIOF = Arg0
If ((PIOF == Zero))
{
If ((SGGP == Zero))
{
Return (Zero)
}
}
ElseIf ((PIOF == One))
{
If ((P1GP == Zero))
{
Return (Zero)
}
}
ElseIf ((PIOF == 0x02))
{
If ((P2GP == Zero))
{
Return (Zero)
}
}

PEBA = \XBAS
PDEV = GDEV (PIOF)
PFUN = GFUN (PIOF)
If ((\_SB.GGOV (0x03060000) == Zero))
{
Return (Zero)
}

If ((\_SB.PCI0.DGPV == 0x10DE))
{
\_SB.PCI0.PEG0.PEGP.LTRE = \_SB.PCI0.PEG0.LREN
}

If ((Arg0 == Zero))
{
ELC0 = LCT0
H0VI = S0VI
H0DI = S0DI
ECP0 = LCP0
}
ElseIf ((Arg0 == One))
{
ELC1 = LCT1
H1VI = S1VI
H1DI = S1DI
ECP1 = LCP1
}
ElseIf ((Arg0 == 0x02))
{
ELC2 = LCT2
H2VI = S2VI
H2DI = S2DI
ECP2 = LCP2
}

\_SB.PCI0.PEG0.SAVR ()
RTDS (PIOF)
If ((PBGE != Zero))
{
If (SBDL (PIOF))
{
MBDL = GMXB (PIOF)
PDUB (PIOF, MBDL)
}
}

PGSC (Arg0, Zero)
If ((Arg0 == Zero))
{
Divide (\_SB.PCI0.PEG0.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
ElseIf ((Arg0 == One))
{
Divide (\_SB.PCI0.PEG1.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
ElseIf ((Arg0 == 0x02))
{
Divide (\_SB.PCI0.PEG2.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}

GPPR (PIOF, Zero)
DIWK (PIOF)
Return (Zero)
}
_OFF method on Scope SB.PCI0.PEG0
Method (_OFF, 0, Serialized) // _OFF: Power Off
{
If ((RCM1 (0x67) == 0x67))
{
If ((RCM1 (0x69) == 0x69))
{
HWA1 |= 0x30000000
HWA3 |= 0x30000000
}
ElseIf ((RCM1 (0x68) == 0x68))
{
HWA2 |= 0x30000000
HWA4 |= 0x30000000
}
}

If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GPOF = One
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}

If ((Acquire (\_SB.PCI0.LPCB.EC0.HGCT, 0xA000) == Zero))
{
If ((OSYS > 0x07D9))
{
P8XH (Zero, 0xDF)
If ((\_SB.PCI0.DGPV == 0x10DE))
{
If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GATY = Zero
Sleep (0x0A)
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}

If ((\_SB.PCI0.TDGC == One))
{
CreateField (\_SB.PCI0.TGPC, Zero, 0x03, GUPC)
If ((ToInteger (GUPC) == One))
{
\_SB.PCI0.GC6I ()
}
ElseIf ((ToInteger (GUPC) == 0x02))
{
\_SB.PCI0.GC6I ()
}

_STA = Zero
}
Else
{
PGOF (Zero)
_STA = Zero
}
}
Else
{
PGOF (Zero)
_STA = Zero
}
}

Release (\_SB.PCI0.LPCB.EC0.HGCT)
}

If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GPOF = Zero
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}
}

on _OFF calling PGOF, PGOF not found EC related.
then I checked on _OFF in SB.PCI0.PEG0.PEGP calling "Notify (\_SB.PCI0.PEG0, Zero)"
in SB.PCI0.PEG0 there is EC related.

I am very confused, is it necessary to move the EC related code in SB.PCI0.PEG0 to _REG?
I managed to call SB.PCI0.PEG0.PEGP._OFF on the fake device, but the fan is spinning very fast
 
Last edited:
Back
Top