Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,028
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
MacBook Air
Mobile Phone
iOS
added to Clover AutoMerge=true, SSDT/DropOem=false

didn't work
AutoMerge=true, DropOem=false is default in guide plists.

But that is not the problem identified in post #2144.
Go back and read it again. Carefully.
 
Joined
Aug 5, 2016
Messages
44
Motherboard
ASUS K501UB
CPU
i5-6200U
Graphics
HD 520
Mobile Phone
iOS
Thank you so much. Turns out, I just need 1 line of code to make it work. Much appreciated
 
Last edited:
Joined
Feb 15, 2013
Messages
5
Motherboard
MacMini
CPU
Intel Core 2 Duo 2.4 GHz
Graphics
NVIDIA GeForce 320M
Mac
Classic Mac
Mobile Phone
Hello,
Please help me with disabling internal graphics, because Mojave refuses to install.
Though it is not a laptop, but a large Xeon server board with 2D graphics engine integrated in BMC controller.
There is no option to disable it in BIOS. So I'd like to give it a try with ACPI patching.
So I extracted aml files with Clover. The only SSDT was SSDT-0-CpuPm.aml, so I suppose all fixes should go to DSDT.
I decompiled it, but not sure how to find the device I'm going to disable. The only I know, it is VGA class with ID 1A03:2000.
Maybe there are easier means of hiding PCI device?
 

Attachments

Joined
Feb 15, 2013
Messages
5
Motherboard
MacMini
CPU
Intel Core 2 Duo 2.4 GHz
Graphics
NVIDIA GeForce 320M
Mac
Classic Mac
Mobile Phone
Looks like I found Clover feature which sound exactly what I need: DisableFunctions
But it is totally undocumented, not sure which numbers to set there. Any clue?
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,028
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Hello,
Please help me with disabling internal graphics, because Mojave refuses to install.
Though it is not a laptop, but a large Xeon server board with 2D graphics engine integrated in BMC controller.
There is no option to disable it in BIOS. So I'd like to give it a try with ACPI patching.
So I extracted aml files with Clover. The only SSDT was SSDT-0-CpuPm.aml, so I suppose all fixes should go to DSDT.
I decompiled it, but not sure how to find the device I'm going to disable. The only I know, it is VGA class with ID 1A03:2000.
Maybe there are easier means of hiding PCI device?
Off-topic. This guide is for laptops.
 
Joined
Nov 3, 2013
Messages
107
Motherboard
Dell Inspiron 7567
CPU
Intel i7 7700HQ
Graphics
Intel 630 + NVIDIA 1050TI
Hello @RehabMan, I hope you can help me out. I am not good with DSDT/SSDT patching as I have been using the hot patch method using files provided by @Nihhaar (slightly modified by me) for our Dell Inspiron 7567 and have an issue.

When I first boot up the laptop, using Intel Power Gadget shows Power PKG when idle being 0.50. Whenever I put the computer to sleep and resume, the Power PKG never goes below 1.50 and it affects battery life. My dGPU is disabled, but researching I found this thread which says to patch the dGPU for _PTS and _WAK, but I don't know how? I did try looking at your Hotpatch files and found the PTSWAK.dsl file and I've tried to apply your patch for sleep/wake problems to fix, but still have the same issue, so not sure what the issue is. Here is my debug files before I tried the SSDT-PTSWAK.dsl mentioned above as want to know what I can do?

Edit: I was able to look at source files for other people who have a Dell laptop and found they used SSDT-config combined with a SSDT-PTSWAKE.aml so was able to get dGPU to stay disabled after sleep.

Thanks for your time!
 

Attachments

Last edited:
Joined
Jul 24, 2016
Messages
17
Motherboard
Lenovo E550
CPU
i7-5500u
Graphics
HD5500, 1928x1080; AMD Radeon R7 M260
Picking up trying to disable my DGPU on Broadwell E550 again.

All _OFF are located in DSDT, as well as the the _INI for the DGPU seems to be at \_SB.PCIO.PEG.VID._INI
Code:
Device (VID)
                {
                    Name (_ADR, 0x00)  // _ADR: Address
                    Method (ISOP, 0, NotSerialized)
                    {
                        Return (LAnd (VDSP, LAnd (VIGD, VDSC)))
                    }

                    OperationRegion (VPCG, PCI_Config, 0x00, 0x0100)
                    Field (VPCG, DWordAcc, NoLock, Preserve)
                    {
                        Offset (0x18), 
                        BADR,   32, 
                        Offset (0x2C), 
                        VSID,   32, 
                        Offset (0x40), 
                        VIDS,   32, 
                        Offset (0x70), 
                        VPWR,   8
                    }

                    OperationRegion (GPPB, PCI_Config, 0xB4, 0x14)
                    Field (GPPB, ByteAcc, NoLock, Preserve)
                    {
                        PBCI,   8, 
                        PBNP,   8, 
                        PBLS,   8, 
                        PBCC,   8, 
                        PBCR,   32, 
                        PBDI,   32, 
                        PBDO,   32, 
                        PBMR,   32
                    }

                    Method (VRSI, 0, NotSerialized)
                    {
                        Store (0x502117AA, VIDS)
                    }

                    Method (_INI, 0, NotSerialized)  // _INI: Initialize
                    {
                        \VHYB (0x04, 0x01)
                    }
The only _OFF that I can find that seems to be related is in a Power Resource Macro:
Code:
PowerResource (AMD3, 0x00, 0x0000)
                {
                    Name (_STA, One)  // _STA: Status
                    Method (_ON, 0, Serialized)  // _ON_: Power On
                    {
                        If (\_SB.PCI0.PEG.VID.ISOP ())
                        {
                            If (LEqual (0x01, DGOS))
                            {
                                \VHYB (0x00, 0x01)
                                Sleep (0x7D)
                                \VHYB (0x02, 0x01)
                                Sleep (0x01)
                                \VHYB (0x08, 0x01)
                                \VHYB (0x08, 0x03)
                                While (LEqual (\LCHK (0x01), 0x00))
                                {
                                    Store (0x20, Local0)
                                    While (Local0)
                                    {
                                        If (LEqual (\LCHK (0x01), 0x00))
                                        {
                                            Stall (0x64)
                                            Decrement (Local0)
                                        }
                                        Else
                                        {
                                            Break
                                        }
                                    }

                                    If (LEqual (Local0, Zero))
                                    {
                                        Store (0x01, \_SB.PCI0.PEG.RTLK)
                                        Stall (0x64)
                                    }
                                }

                                If (VMSH)
                                {
                                    \VHYB (0x0D, 0x00)
                                }

                                Store (0xC8, Local1)
                                While (Local1)
                                {
                                    Sleep (0x01)
                                    If (\VHYB (0x0C, 0x00))
                                    {
                                        Break
                                    }

                                    Decrement (Local1)
                                }

                                \VHYB (0x04, 0x00)
                                Store (Zero, DGOS)
                                If (\_SB.PCI0.LPC.DSPS)
                                {
                                    Store (One, \_SB.PCI0.LPC.EC.ASBF)
                                }
                            }
                        }

                        Store (One, _STA)
                    }

                    Method (_OFF, 0, Serialized)  // _OFF: Power Off
                    {
                        If (\_SB.PCI0.PEG.VID.ISOP ())
                        {
                            If (LEqual (0x00, DGOS))
                            {
                                If (\_SB.PCI0.LPC.DSPS)
                                {
                                    Store (Zero, \_SB.PCI0.LPC.EC.ASBF)
                                }

                                \VHYB (0x04, 0x01)
                                \VHYB (0x08, 0x00)
                                Store (0x0A, Local0)
                                Store (0x32, Local1)
                                While (Local1)
                                {
                                    Sleep (Local0)
                                    If (\LCHK (0x00))
                                    {
                                        Break
                                    }

                                    Decrement (Local1)
                                }

                                \VHYB (0x08, 0x02)
                                \VHYB (0x02, 0x00)
                                \VHYB (0x00, 0x00)
                                Store (One, DGOS)
                            }
                        }

                        Store (Zero, _STA)
                    }
                }
I've tried googling ISOP to see what that could mean as far as whether it's the right _OFF, but can't really find anything and it's the only _OFF that seems to be related. Empty _PS3. I've looked at other Lenovo DGPU patches and in this thread and can't find anything that's similar -- at least not similarities that I can pick out with my non-existent coding skills.
 

Attachments

Joined
Oct 11, 2012
Messages
84
Motherboard
Asus N552VX-FW131T
CPU
i7-6700HQ
Graphics
HD 530 + GT 950m, 1920x1080
Followed the guide but I keep having an heavy battery drain, can anyone check my config?
 

Attachments

Joined
Apr 2, 2012
Messages
9
Motherboard
Asus ROG STRIX 390-I GAMING
CPU
i7-8700K
Graphics
RTX 2080
Mobile Phone
Android, iOS
Hello, I'm trying to do something like this on a dual-boot desktop system (Gigabyte Z370N-Wifi) with OSX Mojave (that as you know better than me, doesn't support Nvidia cards in any way). The mobo has a BIOS option that lets you choose to which card (IGFX or PCI-Ex) give priority. So if I give priority to the PCI-Ex GPU, OSX boots fine, but when I switch the monitor to the input port connected to the IGFX I only get a noisy image of what should be the login screen (I can see the mouse pointer as a box of pixels and hear sounds). Otherwise if I give priority to the IGFX, OSX loads the graphics interface fine, but with this option, I get a huge performance hit in games on Windows for some unknown reason.
So I was considering setting the BIOS to PCI-Ex priority and then disabling the card in OSX via ACPI, but I can't follow this guide because my disassembled ACPI files don't contain the correct methods (as far as I can tell).

EDIT: Finally managed to disable discrete GPU. Gave up the DSDT-SSDT procedure explained here and, googling around, I stumbled into this on another site.

So, following the hint given in the first comment, I just had to add in my config.plist, under "Devices":

Code:
<key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>disable-external-gpu</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>
Now the system boots on PCI-Ex and when it seems to hang on the Apple logo, I just have to switch the monitor to the input connected to the IGFX to show the login screen.
 

Attachments

Last edited:
Joined
May 7, 2019
Messages
1
Motherboard
E5-575G
CPU
i5-6200
Graphics
GeForce 940MX+HD 520
I'm a Newbie.Please Help me.I tried to edit DSDT and SSDT files as the guide.But when I put them to acpi\patched the machine is not booting up.It gets stuck in middle of the process. Can anyone please help me with the editing. I attached the origin files with dsls.
 

Attachments

Top