NoobsPlanet

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics, posts and unlimited download to our resources, as well as connect with other members through your own private inbox!

How To Disable Unsupported Nvidia or Radeon Graphics in hackintosh for better stability?

noobsplanet

Well-known member
Staff member
Administrator
Moderator
Hello Hackintosh users, Today I will you in this guide how you can disable your discrete graphics in your hackintosh machine. Before following this guide make sure proper SSDT.aml is in your /Clover/ACPI/patched/ , If you don't have yet created your SSDT one, then you can create here with SSDT-PR-Gen.sh. Click here for the guide. The first thing you need to do is restart your computer and at the clover boot screen [Image Attached Above] Press F4 and Fn+F4 (with some laptop if confused press all those 2 keys one after another) and boot MacOS. [Forget to Mention in video below]


1) Download Macisal from the resources and then install it. (Move to Application Folder)
2)Download iasl
now, you need to install iasl script to do this open Terminal from Applications > Utilities > Terminal and type following command one after another:
Bash:
cd ~/Downloads
unzip iasl.zip
sudo cp iasl /usr/bin/ #(Give your computer password if asked)
sudo cp /usr/bin/iasl /Applications/MaciASL.app/Contents/MacOS/iasl61
You just install the required files, now mount your EFI with EFI Mounter or Clover Configurator or Terminal with single command : sudo diskutil mount EFI, Now, Open Terminal and Type Following Command:
Bash:
cp -R /Volumes/EFI/EFI/Clover/ACPI/origin ~/Desktop
cd ~/Desktop/origin/
ls #(You should see files below like attached Picture [1] if return blank you have not Press F2 and F4 keys at clover screen we talked before Goback and do it)
ls-terminal-origin.png_OFF_INI.png
Then, copy the following text
Code:
External(MDBG, MethodObj, 1)
External(_GPE.MMTB, MethodObj, 0)
External(_SB.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)
External(_SB.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)
External(_SB.PCI0.LPCB.H_EC.ECMD, MethodObj, 1)
External(_SB.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)
External(_SB.PCI0.GFX0.DD02._BCM, MethodObj, 1)
External(_SB.PCI0.SAT0.SDSM, MethodObj, 4)
External(_GPE.VHOV, MethodObj, 3)
External(_SB.PCI0.XHC.RHUB.TPLD, MethodObj, 2)
In previous opened terminal type
Bash:
pbpaste>refs.txt
cat refs.txt #This should print above mentioned code.
iasl -da -dl -fe refs.txt DSDT.aml SSDT*.aml
grep -l Method.*_OFF *.dsl
grep -l Method.*_INI *.dsl
Note : The output may be different from mine and yours!!

Notice the output for last two commands grep -l Method.*_OFF*.dsl and grep -l Method.*_INI*.dsl like in above attached Picture[2]
[In my case] Output for grep -l Method.*_OFF*.dsl was DSDT.dsl, SSDT-3.dsl, SSDT-5.dsl, SSDT-7.dsl, SSDT-8.dsl and Output for grep -l Method.*_INI*.dsl was DSDT.dsl, SSDT-5.dsl, SSDT-7.dsl and the common between them are :
Code:
DSDT.dsl
SSDT-5.dsl and
SSDT-7.dsl
Now, we will only look to the DSDT.dsl, SSDT-5.dsl and SSDT-7.dsl as the output above. We know that the _INI and _OFF Method are on either SSDT-5.dsl or SSDT-7.dsl

Patching BEGINS
Open DSDT.dsl with MaciASL and click on "MaciAsl" from Toolbar and click Preferences (CTRL + ,) Click on Sources and (+) Button and Name as : RehabMan_Laptop_DSDT and URL as http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master [Screenshot Attached Below Picture[1]] then close the popup screen and click compile. You may get errors but don't worry do the following patches from RehabMan_Laptop_DSDTif not proceed further else follow error handle guide:


Rehab_man_dsdt_patch.pngparse_zero.png

The errors may be one of the followings!!
"Fix _WAK Arg0 v2"
"HPET Fix"
"SMBUS Fix"
"IRQ Fix"
"RTC Fix"
"OS Check Fix"
"Fix Mutex with non-zero SyncLevel"
"Parse_OP_Zero (Aggressive)"
"Fix PNOT/PPNT" (use only if you're dropping CPU related SSDTs)
"Add IMEI" (do not use if your DSDT or SSDTs already have IMEI/HECI/MEI device)

The last two above patches need to be careful when using, if you're not sure don't use them.

While you compile might get one or more errors but the following kinds of errors are common and easy to fix :

Swift:
If (LEqual (PM6H, One))

                {

                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status

                    Store (Zero, ECRW (If (PM0H)

                            {

                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length

                                Store (Zero, F0LN)

                            }))

                }
Changed To : (If you observe carefully I have only changed If(PMOH) function from being Nested.)

Swift:
If (LEqual (PM6H, One))

                {

                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status

                    Store (Zero, ECRW)
               }

If (PM0H)
               {

                    CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length

                    Store (Zero, F0LN)

                }
Again, Compile the DSDT again this time I get only two errors with Parse_OP_Zero. This is the one of the error above as RehabMan ask to fix us. Parse_OP_Zero (Aggressive) from the list. So, we can fix this by clicking on Patches then Select RehabMan_Laptop_DSDT that we've just added, find Parse_OP_Zero (Aggressive) from drop down menu and click on Apply then Close. Now, once more, you compile this time no errors only warnings and you can ignore those warnings. Save the DSDT with File > Save.

Check SSDT-5.dsl and SSDT-7.dsl for errors by compiling if it shows errors you can fix it by patching "Cleanup/Fix Errors (SSDT)", Again compile and File > Save once errors are gone.

Open SSDT-5.dsl with Macisal and find the _INI method in above Picture[1]. Now click on each _INI and look at it's Method if it looks like below that is not what we are looking for:
Swift:
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (LTRX, LTRS)
            Store (OBFX, OBFS)
        }
Now open SSDT-7.dsl with Macisal and find the _INI method like in above Picture[2]. Now click on each _INI and look at it's Method if it looks like below then that is what we're looking for:
Swift:
//Note down the following output code in TextEdit (if Different)
Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
        }
Now find the _OFF method like we did above for _INI. The Method should look like below:
Swift:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
            {
                If (LNotEqual (OSYS, 0x07D9))
                {
                    \_SB.PCI0.RP01.PEGP.HGOF ()
                    Store (Zero, _STA)
                }
            }
Now, In SSDT-7.dsl click on Patch and and paste [See Picture 1 below] the following code:
[Note : Some system have different output of _INI like instead of \_SB.PCI0.RP01.PEGP to \_SB.PCI0.RP05.PEGP, Those users please change in following code while inserting]
Swift:
into method label _INI parent_label \_SB.PCI0.RP01.PEGP insert
begin
//added to turn nvidia/radeon off\n
External(\_SB.PCI0.RP01.PEGP._OFF, MethodObj)\n
_OFF()\n
end;
Click Apply.

Do File > Save then Again File > Save As > Select File Format Binary : ACPI Machine Language Binary , Choose Desktop > Save [See Picture[2] below]

patch_to_ini.pngSSDT-7_Aml.pngpatch_to_reg.pngsaving_aml.png

Open DSDT.dsl and Click on Patch and insert the following code : [See Picture [3] Attached Above]
Swift:
into method label _REG parent_hid PNP0C09 insert
begin
//added to turn nvidia/radeon off\n
If (LAnd(LEqual(Arg0,3),LEqual(Arg1,1)))\n
{\n
    External(\_SB.PCI0.PEG0.PEGP._OFF, MethodObj)\n
    \_SB.PCI0.PEG0.PEGP._OFF()\n
}\n
end;
Click Apply.

Do File > Save then Again File > Save As > Select File Format Binary : ACPI Machine Language Binary , Choose Desktop > Save [See Picture[4] below]

Now Goto /EFI/Clover/ACPI/Patched/ and remove all files you've used before and copy and paste the DSDT.aml and SSDT-7.aml from Desktop to /ACPI/Patched/
Shutdown and Turn on (For best notice turn on after 20-30 minutes)
Hight Sierra Users Removing DSDT-DiscreteSpoof.aml is compulsory from /ACPI/Patched/

26degree.pnggraphics_display.png

High Sierra(10.13) Users, If you're able to turn on laptop without DSDT-DiscreteSpoof.aml in /ACPI/Patched/ then congralutations you've just disabled your AMD/Nvidia Card.
Sierra(10.12) and Below can determine with the intel® power Gadget tool to monitor the temperature and cpu usage. Also can check from Apple Logo > About This Mac > System Report > Graphics/Display Tab.

Fixing Sleep/Wake Problems
Some laptop will face issue on sleeping laptop and wake problem and this is common in laptop which has discrete graphics card. Now, the fix here is after we have completely disabled our discrete graphics card by following above guide, we need to enable discrete card before going to sleep and disable on wake. so, as per in our DSDT.dsl we have to patch into two more methods i.e. _PTS for sleep and _WAK method for wake .

Copy the following code and patch it and beside to replace RP01 with your card.

Code:
into method label _PTS code_regex ([\s\S]*) replace_matched
begin
External(\\_SB.PCI0.RP01.PEGP._ON, MethodObj)\n
If (CondRefOf(\\_SB.PCI0.RP01.PEGP._ON)) { \\_SB.PCI0.RP01.PEGP._ON() }\n
%1
end;

into method label _WAK code_regex (Return\s+\(.*) replace_matched
begin
External(\\_SB.PCI0.RP01.PEGP._OFF, MethodObj)\n
If (CondRefOf(\\_SB.PCI0.RP01.PEGP._OFF)) { \\_SB.PCI0.RP01.PEGP._OFF() }\n
%1
end;
If your laptop doesn't have problems with sleep/wake/restart/shutdown with the discrete device disabled, then you do not need this patch. You need to test your laptop first to determine if it is needed.

Note : Keep DSDT.dsl and SSDT-7.dsl in safe place to patch in future. Thank's if you're getting any problems let be know in comment section below. Thanks!!

For an sample purpose you can look at my DSDT.aml and SSDT-7.aml.

Thanks @RehabMan moderator of tonymacx86 without your guide I will never be able to disable my discrete graphics.
Orginal Post: https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772

You May Like :
1) What is DSDT / SSDT Explained
2) Audio DSDT Patch
3) Brightness DSDT Patch
4) Sleep / Wake Patch
5) Things to do before changes
6) [Hackintosh] Stay Up-to-date
7) Changing SMBIOS
 
Last edited:

nikkpap

New member
hi thanks for your great tutorial and other good stuff you have ... i will watch you from now on... for sure ...

1. why dont you make a telegram group to give your help too other members.
2. can i post you my original acpi files to turn off the nvdia card on my laptop Dell Inspiron 7720 SE... thanks in advance
 

noobsplanet

Well-known member
Staff member
Administrator
Moderator
hi thanks for your great tutorial and other good stuff you have ... i will watch you from now on... for sure ...

1. why dont you make a telegram group to give your help too other members.
2. can i post you my original acpi files to turn off the nvdia card on my laptop Dell Inspiron 7720 SE... thanks in advance
You're welcome.. I've written guide above on detail as I can, so hope everyone can understand how to do it. If you've any question regarding on any steps you may ask me here below. At least you can try as above, it's not hard,, for validation and correction of your step you may request @ALiveVam (Moderator) on his post. See here.
 

nikkpap

New member
thanks for your quick response really appreciate it... i will give it a try but it will fail as i see we have a lot of deference's... anyway i will ask alivevam too...
 

nikkpap

New member
Bash:
Parsing completed
Disassembly completed
ASL Output:    SSDT-x2_2-ApCst.dsl - 2928 bytes
Dellbook:eek:rigin nikkpap$ grep -l Method.*_OFF *.dsl
Dellbook:eek:rigin nikkpap$ grep -l Method.*_INI *.dsl
DSDT.dsl
SSDT-3-NvOptTbl.dsl
Dellbook:eek:rigin nikkpap$
 
Last edited by a moderator:

nikkpap

New member
Dellbook:eek:rigin nikkpap$ grep -l Method.*_OFF *.dsl
give me no file
and
Dellbook:eek:rigin nikkpap$ grep -l Method.*_INI *.dsl
gives me

DSDT.dsl


SSDT-3-NvOptTbl.dsl
 

noobsplanet

Well-known member
Staff member
Administrator
Moderator
Parsing completed


Disassembly completed


ASL Output: SSDT-x2_2-ApCst.dsl - 2928 bytes


Dellbook:eek:rigin nikkpap$ grep -l Method.*_OFF *.dsl


Dellbook:eek:rigin nikkpap$ grep -l Method.*_INI *.dsl


DSDT.dsl


SSDT-3-NvOptTbl.dsl


Dellbook:eek:rigin nikkpap$
Seems like your ACPI files are wrong.. please delete all the files from /EFI/Clover/ACPI/ and /EFI/Clover/patched/ then follow this guide and generate SSDT.aml for your system and move it to /ACPI/patched/ and generate a ACPI files. Please read this guide carefully.

Hello Hackintosh users, Today I will you in this guide how you can disable your discrete graphics in your hackintosh machine. Before following this guide make sure proper SSDT.aml is in your /Clover/ACPI/patched/ , If you don't have yet created your SSDT one, then you can create here with SSDT-PR-Gen.sh. Click here for the guide. The first thing you need to do is restart your computer and at the clover boot screen [Image Attached Above] Press F4 and Fn+F4 (with some laptop if confused press all those 2 keys one after another) and boot MacOS.
 

jyowell

New member
I have a problem with my Quad Boot Lenovo Y50. I have Sierra installed on one partition, works great, IntelHD 4600 graphics loads fine, QE/CI works.

On another partition, I have Mojave. Everything works except I have video problems. I cannot get QE/CI to work.

Can anyone help?
 

noobsplanet

Well-known member
Staff member
Administrator
Moderator
I have a problem with my Quad Boot Lenovo Y50. I have Sierra installed on one partition, works great, IntelHD 4600 graphics loads fine, QE/CI works.

On another partition, I have Mojave. Everything works except I have video problems. I cannot get QE/CI to work.

Can anyone help?
Hey, please create a new thread instead, this post is only for DSDT patch for disabling discrete graphics.
 
S

stevemoretz

Guest
Hi I don't have _OFF and _INI:

[email protected] origin % ls
DSDT.aml SSDT-5-CB-01.aml SSDT-x8_1-ApIst.aml
DSDT.dsl SSDT-5-CB-01.dsl SSDT-x8_1-ApIst.dsl
SSDT-0-CB-01.aml SSDT-6-CB-01.aml SSDT-x8_2-Cpu0Cst.aml
SSDT-0-CB-01.dsl SSDT-6-CB-01.dsl SSDT-x8_2-Cpu0Cst.dsl
SSDT-1-CB-01.aml SSDT-7-CB-01.aml SSDT-x8_3-ApCst.aml
SSDT-1-CB-01.dsl SSDT-7-CB-01.dsl SSDT-x8_3-ApCst.dsl
SSDT-2-CB-01.aml SSDT-8-CB-01.aml SSDT-x8_4-Cpu0Hwp.aml
SSDT-2-CB-01.dsl SSDT-8-CB-01.dsl SSDT-x8_4-Cpu0Hwp.dsl
SSDT-3-CB-01.aml SSDT-9-CB-01.aml SSDT-x8_5-ApHwp.aml
SSDT-3-CB-01.dsl SSDT-9-CB-01.dsl SSDT-x8_5-ApHwp.dsl
SSDT-4-CB-01.aml SSDT-x8_0-Cpu0Ist.aml SSDT-x8_6-HwpLvt.aml
SSDT-4-CB-01.dsl SSDT-x8_0-Cpu0Ist.dsl SSDT-x8_6-HwpLvt.dsl
[email protected] origin % grep -l Method.*_OFF *.dsl
zsh: no matches found: Method.*_OFF
[email protected] origin % grep -l Method.*_INI *.dsl
zsh: no matches found: Method.*_INI
[email protected] origin %

here's a list of my files:
 

noobsplanet

Well-known member
Staff member
Administrator
Moderator
Hi I don't have _OFF and _INI:

[email protected] origin % ls
DSDT.aml SSDT-5-CB-01.aml SSDT-x8_1-ApIst.aml
DSDT.dsl SSDT-5-CB-01.dsl SSDT-x8_1-ApIst.dsl
SSDT-0-CB-01.aml SSDT-6-CB-01.aml SSDT-x8_2-Cpu0Cst.aml
SSDT-0-CB-01.dsl SSDT-6-CB-01.dsl SSDT-x8_2-Cpu0Cst.dsl
SSDT-1-CB-01.aml SSDT-7-CB-01.aml SSDT-x8_3-ApCst.aml
SSDT-1-CB-01.dsl SSDT-7-CB-01.dsl SSDT-x8_3-ApCst.dsl
SSDT-2-CB-01.aml SSDT-8-CB-01.aml SSDT-x8_4-Cpu0Hwp.aml
SSDT-2-CB-01.dsl SSDT-8-CB-01.dsl SSDT-x8_4-Cpu0Hwp.dsl
SSDT-3-CB-01.aml SSDT-9-CB-01.aml SSDT-x8_5-ApHwp.aml
SSDT-3-CB-01.dsl SSDT-9-CB-01.dsl SSDT-x8_5-ApHwp.dsl
SSDT-4-CB-01.aml SSDT-x8_0-Cpu0Ist.aml SSDT-x8_6-HwpLvt.aml
SSDT-4-CB-01.dsl SSDT-x8_0-Cpu0Ist.dsl SSDT-x8_6-HwpLvt.dsl
[email protected] origin % grep -l Method.*_OFF *.dsl
zsh: no matches found: Method.*_OFF
[email protected] origin % grep -l Method.*_INI *.dsl
zsh: no matches found: Method.*_INI
[email protected] origin %

here's a list of my files:
Seems like your DSDT generation is incorrect. Did you use your own SSDT.aml in your /ACPI/patched/?
 
Top