Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

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

  • debug_15558.zip
    5.5 MB · Views: 116
Last edited:
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

  • LenovoE550.zip
    821.7 KB · Views: 151
Followed the guide but I keep having an heavy battery drain, can anyone check my config?
 

Attachments

  • debug_5120.zip
    5.8 MB · Views: 140
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

  • origin.zip
    253.1 KB · Views: 126
Last edited:
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

  • origin.zip
    207.8 KB · Views: 149
Hi Community,
I'm trying to accomplish this (disabling the GPU) on an Desktop Server (HP Data Vault X510) running El Captain on an Pentium E5200 (probably patched Mojave on an Intel Core 2 Duo E8600 soon). While the OS altogether is running flawlessly vanilla (except Realtek ethernet drivers, NullCPUPowerManagment) it does not sleep, advertising .Display-boot after running (pmset -g assertions) as the culprit (so not NullCPUPowerManagment related, I think).
Obviously the available Intel G33/G31 chipset is not supported at all, but nor do I need it, as it's a headless server (read: actually no external monitor port whatsoever - well an internal GPIO one, no PCI slot).
As I used to run an actual Mac Pro 4,1 (5,1) without any GPU, I know that macOS can run and sleep without any Graphics. This is why I do want to disable it (the G33/G31) altogether. (Which also should give some thermal headroom.)
However taking this guide as an inspiration (not same usecase) I'm running into an issue quiet early. I cannot even create the .dsl files, as the iasl -da -dl *.aml fails with the following output (.aml files extracted using Clover BIOS 4920):
Code:
$ iasl -da -dl *.aml

Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20180427(RM)
Copyright (c) 2000 - 2018 Intel Corporation

Input file APIC.aml, Length 0x6C (108) bytes
Illegal instruction: 4


EDIT 5-17-19: I forgot to mention, that it doesn't make any difference to inject Intel or not. Also the BIOS understandably does not provide an option to disable it, as there isn't any alternative. As well toggling GFX0/iGPU doesn't make a difference.

EDIT 2: Disabling the entire PCI device does not seem to be an option, as other devices reside on the same bus (USB…). Would this rule-out this method altogether?

EDIT 3, 5-19-19: I did somewhat get along. With another tool I got to decompile the .aml files. However as there wasn't any _OFF method at all (neither any _INI one), so I instead opted to use an alternation of this great @RehabMan guide.
The result is somewhat strange (see the About_this_Mac screenshot), but working non the less. BTW the result is identically to deleting IONDRVSupport.kext (on my non-GPU system), but it's update proof.
 

Attachments

  • origin.zip
    13.3 KB · Views: 144
  • PCI-Tree.png
    PCI-Tree.png
    198.8 KB · Views: 255
  • About_this_Mac.png
    About_this_Mac.png
    72.1 KB · Views: 198
Last edited:
How to even check if the card has been successfully disabled?

Edit: Nevermind, this can be seen in IOregisteryExplorer.
 
Last edited:
I had my laptop working perfectly under High Sierra (with thanks to Rehabman) but since I upgraded to Mojave I can not boot. It goes into a reboot loop. I was finally able to get a panic report which mentions Intel GPU so I though this might ne a GPU issue? (attached). I have also attached my Clover folder.

I have no idea why this is happening.
 

Attachments

  • CLOVER.zip
    4.5 MB · Views: 201
  • 19-06-24 Problem Report.zip
    3.6 KB · Views: 91
Hi @RehabMan,
Hope you are fine and doing well.

Below is the configuration of my laptop:

Dell Precision M3800 Workstation
i7-4712HQ (Quad Core 2.30GHz, 3.3GHz)
16GB (2x8GB) 1600MHz DDR3
Dual GPU Intel 4600 + Nvidia® Quadro® K1100M
15.6" UltraSharp™ UHD Touch (3840x2160) 4K LED
M.2 512gb
Crucial MX-300 1TB 2.5" SSD (using as external drive)

I have successful setup of macOS Mojave by reading your posts and guidelines. All works well but:

1. Graphics with acceleration
2. No WiFi through integrated Intel WiFi Adapter

If I use WhateverGreen's boot argument -wegnoegpu, should I still need this patching to disable discrete graphics Nvidia K1100M?

Well, I installed Mojave on Crucial 1TB SSD.

Tried to follow this guide and patched below two files but got no success to disable Nvidia and get accelerated display.

DSDT.dsl
SSDT-9-SgPeg.dsl

_OFF was in DSDT.dsl and _INI was in SSDT9.

Attached, herewith please find the relevant files and config.plist for your kind review.

UPDATE (2019-AUG-03):
I found a config.plist (config_HD4600_4400_4200.plist) from here:

With this, all works fine but:
- nothing shows on Laptop display (only on my Samsung TV through HDMI).

Screenshots and this new config.plist (named updated_config.plist) is attached for your kind review.

Thanks.
 

Attachments

  • config.plist
    8.5 KB · Views: 165
  • origin.zip
    115 KB · Views: 117
  • patched.zip
    24.2 KB · Views: 138
  • Screenshot 2019-08-03 at 15.18.23.png
    Screenshot 2019-08-03 at 15.18.23.png
    199.3 KB · Views: 138
  • Screenshot 2019-08-03 at 15.24.45.png
    Screenshot 2019-08-03 at 15.24.45.png
    84.4 KB · Views: 161
  • Screenshot 2019-08-03 at 15.25.00.png
    Screenshot 2019-08-03 at 15.25.00.png
    38 KB · Views: 144
  • Screenshot 2019-08-03 at 16.01.26.png
    Screenshot 2019-08-03 at 16.01.26.png
    87.6 KB · Views: 146
  • Screenshot 2019-08-03 at 16.02.29.png
    Screenshot 2019-08-03 at 16.02.29.png
    2.4 MB · Views: 130
  • updated_config.plist
    14.2 KB · Views: 159
Last edited:
I've tried the guide still my Nvidia GFX is not disabled.
Please check and help.

Code:
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac8c6d0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/FakeSMC.kext/", ID = "org.netkas.driver.FakeSMC" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac97e40 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext/", ID = "org.rehabman.voodoo.driver.PS2Mouse" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac76750 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/", ID = "org.rehabman.voodoo.driver.PS2Controller" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac7dd50 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext/", ID = "org.rehabman.voodoo.driver.PS2Keyboard" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac956c0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext/", ID = "org.rehabman.voodoo.driver.PS2Trackpad" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac498e0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/FakePCIID.kext/", ID = "org.rehabman.driver.FakePCIID" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ac4a7c0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/AppleBacklightFixup.kext/", ID = "com.hieplpvip.AppleBacklightFixup" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa426d03680 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/Lilu.kext/", ID = "as.vit9696.Lilu" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42abc3010 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/USBInjectAll.kext/", ID = "com.rehabman.driver.USBInjectAll" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa429295230 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/NullCPUPowerManagement.kext/", ID = "org.tgwbd.driver.NullCPUPowerManagement" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa4292962a0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/FakePCIID_XHCIMux.kext/", ID = "org.rehabman.driver.FakePCIID.XHCIMux" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ab62490 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/WhateverGreen.kext/", ID = "as.vit9696.WhateverGreen" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ab8ad50 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/AtherosE2200Ethernet.kext/", ID = "com.insanelymac.AtherosE2200Ethernet" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa426d076d0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/AppleALC.kext/", ID = "as.vit9696.AppleALC" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fa42ab404c0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/ACPIBatteryManager.kext/", ID = "org.rehabman.driver.AppleSmartBatteryManager" }
KernelCache ID: ACF768DF93623C3CDFBCF93EA244EFB4
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac3007a0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/ACPIBatteryManager.kext/", ID = "org.rehabman.driver.AppleSmartBatteryManager" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac302250 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/Lilu.kext/", ID = "as.vit9696.Lilu" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac3061e0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/AppleALC.kext/", ID = "as.vit9696.AppleALC" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac31d5d0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/AtherosE2200Ethernet.kext/", ID = "com.insanelymac.AtherosE2200Ethernet" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac32c900 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/WhateverGreen.kext/", ID = "as.vit9696.WhateverGreen" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac3df3e0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/FakePCIID_XHCIMux.kext/", ID = "org.rehabman.driver.FakePCIID.XHCIMux" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac3e03c0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/NullCPUPowerManagement.kext/", ID = "org.tgwbd.driver.NullCPUPowerManagement" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac3e21c0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/USBInjectAll.kext/", ID = "com.rehabman.driver.USBInjectAll" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac4317a0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/AppleBacklightFixup.kext/", ID = "com.hieplpvip.AppleBacklightFixup" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac474a40 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/FakePCIID.kext/", ID = "org.rehabman.driver.FakePCIID" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac46e6d0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/", ID = "org.rehabman.voodoo.driver.PS2Controller" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac450250 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext/", ID = "org.rehabman.voodoo.driver.PS2Trackpad" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac45bff0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext/", ID = "org.rehabman.voodoo.driver.PS2Keyboard" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac484ac0 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext/", ID = "org.rehabman.voodoo.driver.PS2Mouse" }
Kext with invalid signatured (-67062) allowed: <OSKext 0x7fadac476a00 [0x7fff8fd588e0]> { URL = "file:///Library/Extensions/FakeSMC.kext/", ID = "org.netkas.driver.FakeSMC" }
Niteshs-MacBook-Pro:untitled folder 2 n1tesh$

Mobo: MSI GE60 2QE APACHE PRO (Clover)
CPU: i7-4720HQ
Graphics: HD46000
 

Attachments

  • problem_reporting.zip
    7.3 MB · Views: 129
Back
Top