Jump to content
Whit3Spirit

Disabling NVIDIA Optimus card on all laptops

343 posts in this topic

Recommended Posts

 

 

I would call it at the end of _INI. If still not working, post ioreg (use IORegistryExplorer v2.1). 

 

i called it at the end of the _INI, but no success.

 

please find attached my ioreg.

 

thank you very much!

Share this post


Link to post
Share on other sites
Advertisement

Yes, this is a fix for restart/sleep problems. Do this part only if necessary. Based on what we found with the HP ProBook. Your machine/DSDT may vary.

 

And I would suggest calling _ON from the beginning of _PTS, and _OFF from the end of _WAK. Of course, this assumes your _WAK/_PTS are executing from beginning to end, which everyone should verify by using ACPIDebug.kext.

 

cool. and in which position should the _OFF() method be injected into the _INI()? at the END would be better i assume.

 

and one more question, is it same to insert the _OFF method into \_SB.PCI0._INI or into \_SB.PCI0.RP0*.PEGP._INI ()? which is better

Share this post


Link to post
Share on other sites

i called it at the end of the _INI, but no success.

 

please find attached my ioreg.

 

thank you very much!

Couple of problems that I see from ioreg:

#1) SSDT2 and SSDT3 both have an _SB.PCI0.IGPU._DSM defined. This is an error and causes one of the two SSDTs to be thrown away.

#2) _SB.PCI0.PEG0.PEGP looks to be renamed to _SB.PCI0.PEG0.GFX0, but only in SSDT2 not SSDT3. If a rename is done in one file, it must be done in all -- it is like keeping two sides of an equation balanced.

 

To keep track of #1, I like to remove all _DSM methods from all files before starting to patch. The OEM _DSM methods are not useful for OSX, so no reason to keep them. This patch accomplishes that:

into_all method label _DSM remove_entry;
For #2, always check other files when you rename an identifier in one place (eg. in your case PEGP -> GFX0).

 

As a sanity check, you should always verify you can disassemble all the files you have in ACPI/patched with 'iasl -da *.aml'. If iasl gives you an error, chances are OS X will have issues loading your concoction as well.

 

Note: ioreg ssdts correspond to the load order, not the file names you chose to use.

cool. and in which position should the _OFF() method be injected into the _INI()? at the END would be better i assume.

 

and one more question, is it same to insert the _OFF method into \_SB.PCI0._INI or into \_SB.PCI0.RP0*.PEGP._INI ()? which is better

I like to put it at the end... (the idea: do my extra stuff after normal initialization, just in case the _OFF method depends on it).

 

Both _SB.PCI0._INI and _SB.PCI0.PEG0.PEGP._INI (for example) work. But usually _SB.PCI0._INI is in DSDT and _OFF is in an SSDT so an External declaration would be necessary, whereas if you put it directly into _SB.PCI0.PEG0.PEGP._INI you need no External and you don't need to explicitly use the full path.

 

BTW, there is another (rare) consideration. When _OFF accesses EC fields, you must wait until _REG (at EC device) is called with Arg0==3 and Arg1==1 which indicates the EC driver is ready. Otherwise the _OFF method may fail. Since _REG is usually in DSDT, it requires an External and explicit path. In addition, you must insert it in the logic correctly so it executes only when the Arg0/Arg1 conditions are met.

Share this post


Link to post
Share on other sites

dear rehabman,

 

thanks to your kindness and prompt support, my nvidia card is now disabled, and now i have a better power efficient laptop hackintosh

 

from now on, i'll try to follow your advices to the letter

 

if anyone wants to take my files as examples, please find them attached.

 

they belong to the following laptop setup:

 

HP Envy 17t-J100 1080p, i7 4702mq 2.2GHz, 16Go RAM, Nvidia GT 740 2Go, Intel HD 4600, 120Go SSD Windows 8.1, 120Go SSD OS X 10.9.3, Broadcom BCM94352 HMB, IDT 92HD91BXX Audio

 

file description:

 

DSDT.aml => various patches

SSDT.aml => ssdtPRGen.sh generated

SSDT-0.aml => BCM94352 HMB WiFi dualband enabler

SSDT-14.aml => Brightness fix

SSDT-15.aml => Nvidia disabler

lufeig patched dsdt ssdt.zip

Share this post


Link to post
Share on other sites

Couple of problems that I see from ioreg:

#1) SSDT2 and SSDT3 both have an _SB.PCI0.IGPU._DSM defined. This is an error and causes one of the two SSDTs to be thrown away.

#2) _SB.PCI0.PEG0.PEGP looks to be renamed to _SB.PCI0.PEG0.GFX0, but only in SSDT2 not SSDT3. If a rename is done in one file, it must be done in all -- it is like keeping two sides of an equation balanced.

 

To keep track of #1, I like to remove all _DSM methods from all files before starting to patch. The OEM _DSM methods are not useful for OSX, so no reason to keep them. This patch accomplishes that:

into_all method label _DSM remove_entry;
For #2, always check other files when you rename an identifier in one place (eg. in your case PEGP -> GFX0).

 

As a sanity check, you should always verify you can disassemble all the files you have in ACPI/patched with 'iasl -da *.aml'. If iasl gives you an error, chances are OS X will have issues loading your concoction as well.

 

Note: ioreg ssdts correspond to the load order, not the file names you chose to use.

 

I like to put it at the end... (the idea: do my extra stuff after normal initialization, just in case the _OFF method depends on it).

 

Both _SB.PCI0._INI and _SB.PCI0.PEG0.PEGP._INI (for example) work. But usually _SB.PCI0._INI is in DSDT and _OFF is in an SSDT so an External declaration would be necessary, whereas if you put it directly into _SB.PCI0.PEG0.PEGP._INI you need no External and you don't need to explicitly use the full path.

 

BTW, there is another (rare) consideration. When _OFF accesses EC fields, you must wait until _REG (at EC device) is called with Arg0==3 and Arg1==1 which indicates the EC driver is ready. Otherwise the _OFF method may fail. Since _REG is usually in DSDT, it requires an External and explicit path. In addition, you must insert it in the logic correctly so it executes only when the Arg0/Arg1 conditions are met.

 

 

hi Rehabman,

 

when i integrate my SSDT (all graphic parts) into my DSDT, and call the _OFF method. it works. the graphic card is shutdown successfully.

 

but if i don't do the integration, but only call the _OFF with a external method in separate DSDT/SSDTs, then it wouldn't work... what's that reason probably?

 

 

could you have a look at my DSDT/SSDTs Modified.zip

 

the _OFF method is in SSDT-1, and i called _OFF in DSDT in _SB.PCI0._INI

 

have i done something wrong?

 

---------------------------------------------

 

and i found,

 

the DSDT.aml which is compiled from integrated DSDT.dsl(with all SSDTs intergrated), has no errors.

 

but the SSDTs.aml compiled from separated SSDT.dsl(0 error), exists many errors...

 

so it's probably the reason, that the SSDT with to many errors is thrown away?

Share this post


Link to post
Share on other sites

hi Rehabman,

 

when i integrate my SSDT (all graphic parts) into my DSDT, and call the _OFF method. it works. the graphic card is shutdown successfully.

 

but if i don't do the integration, but only call the _OFF with a external method in separate DSDT/SSDTs, then it wouldn't work... what's that reason probably?

 

 

could you have a look at my DSDT/SSDTs attachicon.gifModified.zip

 

the _OFF method is in SSDT-1, and i called _OFF in DSDT in _SB.PCI0._INI

 

have i done something wrong?

 

---------------------------------------------

 

and i found,

 

the DSDT.aml which is compiled from integrated DSDT.dsl(with all SSDTs intergrated), has no errors.

 

but the SSDTs.aml compiled from separated SSDT.dsl(0 error), exists many errors...

 

so it's probably the reason, that the SSDT with to many errors is thrown away?

Read post #156 carefully. Your files have many OEM _DSM methods which may conflict with your own (I didn't check). And SSDT-3.dsl has a GFX0->IGPU rename that was not done on the other files (DSDT/SSDT-2).

 

Also, the call to _OFF from _WAK is unreachable. Execution of a method stops at the end or when Return is encountered:

    Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
...
        Return (Package (0x02)
        {
            Zero, 
            Zero
        })
        \_SB.PCI0.RP05.PEGP._OFF ()
    }

Share this post


Link to post
Share on other sites

Read post #156 carefully. Your files have many OEM _DSM methods which may conflict with your own (I didn't check). And SSDT-3.dsl has a GFX0->IGPU rename that was not done on the other files (DSDT/SSDT-2).

 

Also, the call to _OFF from _WAK is unreachable. Execution of a method stops at the end or when Return is encountered:

    Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
...
        Return (Package (0x02)
        {
            Zero, 
            Zero
        })
        \_SB.PCI0.RP05.PEGP._OFF ()
    }

 

removing _DSM doesn't work for me. thx for your remind of return, i haven't noticed that :P

 

but finally i found that it was caused by the order how the SSDTs were loaded. 

 

as you see, SSDT-1 is the part of Geforce Graphic card, and SSDT-3 is the part of Intel integrated graphic card. that is the original default order when i extract from ACPI...

 

but when i change the SSDT-1 to SSDT-4, then it works! i think the SSDT-1(Geforce Graphic) must have some reference from SSDT-3(Intel Graphic) and depend on it!

and the vendor of my laptop may made a mistake...

 

PS: i found that because when i integrated all the SSDTs into DSDT, the SSDT-3(Intel Graphic) codes must be above the SSDT-1(Geforce Graphic) codes, otherwise it will cause many many errors in DSDT...

Share this post


Link to post
Share on other sites

removing _DSM doesn't work for me. thx for your remind of return, i haven't noticed that :P

 

but finally i found that it was caused by the order how the SSDTs were loaded. 

 

as you see, SSDT-1 is the part of Geforce Graphic card, and SSDT-3 is the part of Intel integrated graphic card. that is the original default order when i extract from ACPI...

 

but when i change the SSDT-1 to SSDT-4, then it works! i think the SSDT-1(Geforce Graphic) must have some reference from SSDT-3(Intel Graphic) and depend on it!

and the vendor of my laptop may made a mistake...

 

PS: i found that because when i integrated all the SSDTs into DSDT, the SSDT-3(Intel Graphic) codes must be above the SSDT-1(Geforce Graphic) codes, otherwise it will cause many many errors in DSDT...

The order affects which SSDT is ignored when there are conflicts. Better to resolve the conflicts so order does not matter.

 

You should not be merging any SSDTs.

Share this post


Link to post
Share on other sites

The order affects which SSDT is ignored when there are conflicts. Better to resolve the conflicts so order does not matter.

 

You should not be merging any SSDTs.

 

i also don't want to merge them, it's really annoying , and editing the SSDTs separately is much more briefly and neatly!

 

but i still don't know how to resolve the conflicts... because my SSDTs.dsl seem really okay without any errors. but when they are compiled into .aml, then the errors appear...especially the part of Geforce graphic

Share this post


Link to post
Share on other sites

i also don't want to merge them, it's really annoying , and editing the SSDTs separately is much more briefly and neatly!

 

but i still don't know how to resolve the conflicts... because my SSDTs.dsl seem really okay without any errors. but when they are compiled into .aml, then the errors appear...especially the part of Geforce graphic

By definition, there are no errors if you created an AML successfully. Any errors that appear when you open the AMLs are a result of incorrect disassembly. Remember when you had to disassemble with iasl -da? That requirement does not change after patching.

 

I think the problem is your files are incorrectly/incompletely patched. I've mentioned two of the issues I found (incomplete rename to GFX0, and presence of OEM _DSM methods). I suggest you resolve those two issues and try again. You can always post ioreg if you want further comments from me. Don't expect that resolving only one of the issues will make a difference.

Share this post


Link to post
Share on other sites

i have followed all you said. (rename GFX0 and remove _DSM in DSDT-1) and i also used "./iasl -da *.aml" to dissemble the DSDT/SSDTs

 

but SSDTs still should be ordered so that the graphic can be shutdown successfully.

 

that's my new modified files:  Archive.zip (ioreg included)

 

as i said, the .aml file still have many errors after the compiling. 

 

PS: the IOREG is extracted as now i reorder the SSDTs.

 

Thx for your continued help!

Share this post


Link to post
Share on other sites

i have followed all you said. (rename GFX0 and remove _DSM in DSDT-1) 

 

but SSDTs still should be ordered so that the graphic can be shutdown successfully.

 

that's my new modified files:  attachicon.gifArchive.zip (ioreg included)

 

as i said, the .aml file still have many errors after the compiling. 

 

PS: the IOREG is extracted as now i reorder the SSDTs.

 

Thx for your continued help!

 

Always remember this:

 

By definition, there are no errors if you created an AML successfully. Any errors that appear when you open the AMLs are a result of incorrect disassembly. Remember when you had to disassemble with iasl -da? That requirement does not change after patching.

The thing you see with errors is a decompiled version of AML you opened, not the AML itself. AML content is machine language binary code, and you can't edit it. When you open .aml file by MacIASL, MacIASl will auto decompile the AML file, and this DECOMPILING process produces errors.

Share this post


Link to post
Share on other sites

i have followed all you said. (rename GFX0 and remove _DSM in DSDT-1) and i also used "./iasl -da *.aml" to dissemble the DSDT/SSDTs

 

but SSDTs still should be ordered so that the graphic can be shutdown successfully.

 

that's my new modified files:  attachicon.gifArchive.zip (ioreg included)

 

as i said, the .aml file still have many errors after the compiling. 

 

PS: the IOREG is extracted as now i reorder the SSDTs.

 

Thx for your continued help!

It will be some time before I can look at your files... No time right now.

Share this post


Link to post
Share on other sites

Always remember this:

The thing you see with errors is a decompiled version of AML you opened, not the AML itself. AML content is machine language binary code, and you can't edit it. When you open .aml file by MacIASL, MacIASl will auto decompile the AML file, and this DECOMPILING process produces errors.

 

yeah i got it, so the errors we see are not the errors actually, it's only caused by decompiling right?

 

but as Rehabman said, the order of SSDTs doesn't matter if the SSDTs are correct. 

 

now i got the correct SSDTs.asl (at least seem to be correct), my the order of my SSDTs matters indeed. the geforce graphic part of SSDT should be loaded after the Intel graphic part...

It will be some time before I can look at your files... No time right now.

 

no problem. at least it works now problem-free. i just want to figure out what's the problem with my SSDTs...

Share this post


Link to post
Share on other sites

@demonbane,

 

SSDT-2.dsl has not had GFX0->IGPU rename. Also notice the same thing about your DSDT as loaded in ioreg. Also the rename you're attempting can be tricky and I may be getting confused (because I think you're also renaming PEGP->GFX0?). Since your focus is on disabling nvidia, I would leave the name PEGP.

 

You might want to cleanup the _DSM methods prior to patching.

 

And you might need to call from _REG instead as your _OFF method accesses EC registers and so you should be certain the EC is ready.

 

Note: I will also do some tests to see if I can find any order dependencies by testing with small examples. I haven't seen any, but then again, I tend to keep everything in the original order.

Share this post


Link to post
Share on other sites

Note: I will also do some tests to see if I can find any order dependencies by testing with small examples. I haven't seen any, but then again, I tend to keep everything in the original order.

OK, check this out. I did a simple test to see whether an order dependency was possible. One thing I thought might be order dependent is inserting a method into a scope defined in an SSDT loaded later.

 

So, I created two SSDTs...

 

SSDT-10.aml:

DefinitionBlock ("SSDT-10.aml", "SSDT", 1, "RM", "T1", 0x00013400)
{
    Scope (_SB)
    {
        Device (TEST)
        {
        }
    }
}
And SSDT-11.aml:

DefinitionBlock ("iASL2bgx4o.aml", "SSDT", 1, "RM", "T2", 0x00013400)
{
    External (_SB_.TEST, DeviceObj)

    Scope (_SB.TEST)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            \RMDT.P1 ("_SB.TEST._INI entry")
            \RMDT.P1 ("_sB.TEST._INI exit")
        }
    }

    Device (RMDT)
    {
        Name (_HID, "RMD0000")  // _HID: Hardware ID
        Name (RING, Package (0x0100) {})
        Mutex (RTMX, 0x00)
        Name (HEAD, Zero)
        Name (TAIL, Zero)
        Method (PUSH, 1, NotSerialized)
        {
            Acquire (RTMX, 0xFFFF)
            Add (HEAD, One, Local0)
            If (LGreaterEqual (Local0, SizeOf (RING)))
            {
                Store (Zero, Local0)
            }

            If (LNotEqual (Local0, TAIL))
            {
                Store (Arg0, Index (RING, HEAD))
                Store (Local0, HEAD) /* \RMDT.HEAD */
            }

            Release (RTMX)
            Notify (RMDT, 0x80) // Status Change
        }

        Method (FTCH, 0, NotSerialized)
        {
            Acquire (RTMX, 0xFFFF)
            Store (Zero, Local0)
            If (LNotEqual (HEAD, TAIL))
            {
                Store (DerefOf (Index (RING, TAIL)), Local0)
                Increment (TAIL)
                If (LGreaterEqual (TAIL, SizeOf (RING)))
                {
                    Store (Zero, TAIL) /* \RMDT.TAIL */
                }
            }

            Release (RTMX)
            Return (Local0)
        }

        Method (COUN, 0, NotSerialized)
        {
            Acquire (RTMX, 0xFFFF)
            Subtract (HEAD, TAIL, Local0)
            If (LLess (Local0, Zero))
            {
                Add (Local0, SizeOf (RING), Local0)
            }

            Release (RTMX)
            Return (Local0)
        }

        Method (P1, 1, NotSerialized)
        {
            PUSH (Arg0)
        }

        Method (P2, 2, Serialized)
        {
            Name (TEMP, Package (0x02) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            PUSH (TEMP)
        }

        Method (P3, 3, Serialized)
        {
            Name (TEMP, Package (0x03) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            PUSH (TEMP)
        }

        Method (P4, 4, Serialized)
        {
            Name (TEMP, Package (0x04) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            PUSH (TEMP)
        }

        Method (P5, 5, Serialized)
        {
            Name (TEMP, Package (0x05) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            Store (Arg4, Index (TEMP, 0x04))
            PUSH (TEMP)
        }

        Method (P6, 6, Serialized)
        {
            Name (TEMP, Package (0x06) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            Store (Arg4, Index (TEMP, 0x04))
            Store (Arg5, Index (TEMP, 0x05))
            PUSH (TEMP)
        }

        Method (P7, 7, Serialized)
        {
            Name (TEMP, Package (0x07) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            Store (Arg4, Index (TEMP, 0x04))
            Store (Arg5, Index (TEMP, 0x05))
            Store (Arg6, Index (TEMP, 0x06))
            PUSH (TEMP)
        }
    }
}
Note that SSDT-11 is really pretty simple... Just an _INI method injected into _SB.TEST with the ACPIDebug patch applied, and a few debug messages to verify the _INI method runs.

 

I then copied SSDT-10.aml and SSDT-11.aml to ACPI/patched and rebooted. As expected, ACPIDebug.kext loaded and _INI was executed causing ACPIDebug to output the expected messages. But when I reversed the two SSDTs by renaming SSDT-10.aml->SSDT-11.aml SSDT-11.aml->SSDT-10.aml, ACPIDebug no longer loaded and the messages were not present from TEST._INI because it didn't load/execute.

 

So... new gotcha/rule. Any insertions into a scope/device must insert into an already existing scope/device defined in SSDTs that were loaded previously. In other words, the original order of SSDTs should be maintained.

 

Nice find ... and thanks for convincing me to verify it.

Share this post


Link to post
Share on other sites

OK, check this out. I did a simple test to see whether an order dependency was possible. One thing I thought might be order dependent is inserting a method into a scope defined in an SSDT loaded later.

 

So, I created two SSDTs...

 

SSDT-10.aml:

DefinitionBlock ("SSDT-10.aml", "SSDT", 1, "RM", "T1", 0x00013400)
{
    Scope (_SB)
    {
        Device (TEST)
        {
        }
    }
}
And SSDT-11.aml:

DefinitionBlock ("iASL2bgx4o.aml", "SSDT", 1, "RM", "T2", 0x00013400)
{
    External (_SB_.TEST, DeviceObj)

    Scope (_SB.TEST)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            \RMDT.P1 ("_SB.TEST._INI entry")
            \RMDT.P1 ("_sB.TEST._INI exit")
        }
    }

    Device (RMDT)
    {
        Name (_HID, "RMD0000")  // _HID: Hardware ID
        Name (RING, Package (0x0100) {})
        Mutex (RTMX, 0x00)
        Name (HEAD, Zero)
        Name (TAIL, Zero)
        Method (PUSH, 1, NotSerialized)
        {
            Acquire (RTMX, 0xFFFF)
            Add (HEAD, One, Local0)
            If (LGreaterEqual (Local0, SizeOf (RING)))
            {
                Store (Zero, Local0)
            }

            If (LNotEqual (Local0, TAIL))
            {
                Store (Arg0, Index (RING, HEAD))
                Store (Local0, HEAD) /* \RMDT.HEAD */
            }

            Release (RTMX)
            Notify (RMDT, 0x80) // Status Change
        }

        Method (FTCH, 0, NotSerialized)
        {
            Acquire (RTMX, 0xFFFF)
            Store (Zero, Local0)
            If (LNotEqual (HEAD, TAIL))
            {
                Store (DerefOf (Index (RING, TAIL)), Local0)
                Increment (TAIL)
                If (LGreaterEqual (TAIL, SizeOf (RING)))
                {
                    Store (Zero, TAIL) /* \RMDT.TAIL */
                }
            }

            Release (RTMX)
            Return (Local0)
        }

        Method (COUN, 0, NotSerialized)
        {
            Acquire (RTMX, 0xFFFF)
            Subtract (HEAD, TAIL, Local0)
            If (LLess (Local0, Zero))
            {
                Add (Local0, SizeOf (RING), Local0)
            }

            Release (RTMX)
            Return (Local0)
        }

        Method (P1, 1, NotSerialized)
        {
            PUSH (Arg0)
        }

        Method (P2, 2, Serialized)
        {
            Name (TEMP, Package (0x02) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            PUSH (TEMP)
        }

        Method (P3, 3, Serialized)
        {
            Name (TEMP, Package (0x03) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            PUSH (TEMP)
        }

        Method (P4, 4, Serialized)
        {
            Name (TEMP, Package (0x04) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            PUSH (TEMP)
        }

        Method (P5, 5, Serialized)
        {
            Name (TEMP, Package (0x05) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            Store (Arg4, Index (TEMP, 0x04))
            PUSH (TEMP)
        }

        Method (P6, 6, Serialized)
        {
            Name (TEMP, Package (0x06) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            Store (Arg4, Index (TEMP, 0x04))
            Store (Arg5, Index (TEMP, 0x05))
            PUSH (TEMP)
        }

        Method (P7, 7, Serialized)
        {
            Name (TEMP, Package (0x07) {})
            Store (Arg0, Index (TEMP, Zero))
            Store (Arg1, Index (TEMP, One))
            Store (Arg2, Index (TEMP, 0x02))
            Store (Arg3, Index (TEMP, 0x03))
            Store (Arg4, Index (TEMP, 0x04))
            Store (Arg5, Index (TEMP, 0x05))
            Store (Arg6, Index (TEMP, 0x06))
            PUSH (TEMP)
        }
    }
}
Note that SSDT-11 is really pretty simple... Just an _INI method injected into _SB.TEST with the ACPIDebug patch applied, and a few debug messages to verify the _INI method runs.

 

I then copied SSDT-10.aml and SSDT-11.aml to ACPI/patched and rebooted. As expected, ACPIDebug.kext loaded and _INI was executed causing ACPIDebug to output the expected messages. But when I reversed the two SSDTs by renaming SSDT-10.aml->SSDT-11.aml SSDT-11.aml->SSDT-10.aml, ACPIDebug no longer loaded and the messages were not present from TEST._INI because it didn't load/execute.

 

So... new gotcha/rule. Any insertions into a scope/device must insert into an already existing scope/device defined in SSDTs that were loaded previously. In other words, the original order of SSDTs should be maintained.

 

Nice find ... and thanks for convincing me to verify it.

 

 

hell yeah!  i saw that with ACPIDebug it's really convictive!

 

and i have done all you said but yeah, it's obviously due to the order actually...

 

so my problem might be the fault by the bios vendor? they might make SSDTs tables in a wrong order...

Share this post


Link to post
Share on other sites

hell yeah!  i saw that with ACPIDebug it's really convictive!

 

and i have done all you said but yeah, it's obviously due to the order actually...

 

so my problem might be the fault by the bios vendor? they might make SSDTs tables in a wrong order...

It is possible that OS X implementation of ACPI is order dependent and Windows isn't. Or it is possible you have other issues with your setup. I created the simple example just to demonstrate/verify the order dependency.

Share this post


Link to post
Share on other sites

...

but as Rehabman said, the order of SSDTs doesn't matter if the SSDTs are correct. 

 

now i got the correct SSDTs.asl (at least seem to be correct), my the order of my SSDTs matters indeed. the geforce graphic part of SSDT should be loaded after the Intel graphic part...

 

no problem. at least it works now problem-free. i just want to figure out what's the problem with my SSDTs...

I was looking at the files you posted in post #164.

 

I assume that ssdt-1.dsl and ssdt-3.dsl are representative of their original order when extracted via Linux?

 

OK... so we can see that ssdt-1.dsl contains some IGPU declarations:

    Scope (\_SB.PCI0.IGPU)
    {
        Method (MXMX, 1, Serialized)
        {
            If (LEqual (Arg0, Zero))
            {
                \_SB.PCI0.RP05.PEGP.SGPO (\_SB.PCI0.RP05.PEGP.ESEL, Zero)
                P8XH (One, 0x77, One)
                P8XH (Zero, Zero, One)
                Return (One)
            }

            If (LEqual (Arg0, One))
            {
                P8XH (One, 0x77, One)
                P8XH (Zero, One, One)
                Return (One)
            }

            If (LEqual (Arg0, 0x02))
            {
                P8XH (One, 0x77, One)
                P8XH (Zero, 0x02, One)
                Return (LNot (\_SB.PCI0.RP05.PEGP.SGPI (\_SB.PCI0.RP05.PEGP.ESEL)))
            }

            Return (Zero)
        }

        Method (MXDS, 1, Serialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (LNot (\_SB.PCI0.RP05.PEGP.SGPI (\_SB.PCI0.RP05.PEGP.DSEL)))
            }

            If (LEqual (Arg0, One))
            {
                \_SB.PCI0.RP05.PEGP.SGPO (\_SB.PCI0.RP05.PEGP.DSEL, Zero)
            }

            Return (Zero)
        }

        Name (TLPK, Package (0x20)
        {
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C
        })
        
    }
Basically an injection of MXMX MXDS and TLPK objects into Scope (\_SB.PCI0.IGPU). And \_SB.PCI0.IGPU is defined in SSDT-3.aml... an SSDT that is loaded later than SSDT-1.aml. And your fix, so far, is to change the order, renaming SSDT-1.aml to SSDT-4.aml so it loads later, correct?

 

As a test, see what happens if you eliminate this entire section from SSDT-1.aml.

 

eg, patch SSDT-1.aml as such:

 

into scope label \_SB.PCI0.IGPU remove_entry;
into device label WMI1 remove_entry;
These items are not needed for OS X anyway.

 

Then load them in the original order... does it fix the issue?

Share this post


Link to post
Share on other sites

I was looking at the files you posted in post #164.

 

I assume that ssdt-1.dsl and ssdt-3.dsl are representative of their original order when extracted via Linux?

 

OK... so we can see that ssdt-1.dsl contains some IGPU declarations:

    Scope (\_SB.PCI0.IGPU)
    {
        Method (MXMX, 1, Serialized)
        {
            If (LEqual (Arg0, Zero))
            {
                \_SB.PCI0.RP05.PEGP.SGPO (\_SB.PCI0.RP05.PEGP.ESEL, Zero)
                P8XH (One, 0x77, One)
                P8XH (Zero, Zero, One)
                Return (One)
            }

            If (LEqual (Arg0, One))
            {
                P8XH (One, 0x77, One)
                P8XH (Zero, One, One)
                Return (One)
            }

            If (LEqual (Arg0, 0x02))
            {
                P8XH (One, 0x77, One)
                P8XH (Zero, 0x02, One)
                Return (LNot (\_SB.PCI0.RP05.PEGP.SGPI (\_SB.PCI0.RP05.PEGP.ESEL)))
            }

            Return (Zero)
        }

        Method (MXDS, 1, Serialized)
        {
            If (LEqual (Arg0, Zero))
            {
                Return (LNot (\_SB.PCI0.RP05.PEGP.SGPI (\_SB.PCI0.RP05.PEGP.DSEL)))
            }

            If (LEqual (Arg0, One))
            {
                \_SB.PCI0.RP05.PEGP.SGPO (\_SB.PCI0.RP05.PEGP.DSEL, Zero)
            }

            Return (Zero)
        }

        Name (TLPK, Package (0x20)
        {
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C, 
            Ones, 
            Ones, 
            0x2C
        })
        
    }
Basically an injection of MXMX MXDS and TLPK objects into Scope (\_SB.PCI0.IGPU). And \_SB.PCI0.IGPU is defined in SSDT-3.aml... an SSDT that is loaded later than SSDT-1.aml. And your fix, so far, is to change the order, renaming SSDT-1.aml to SSDT-4.aml so it loads later, correct?

 

As a test, see what happens if you eliminate this entire section from SSDT-1.aml.

 

eg, patch SSDT-1.aml as such:

 

into scope label \_SB.PCI0.IGPU remove_entry;
into device label WMI1 remove_entry;
These items are not needed for OS X anyway.

 

Then load them in the original order... does it fix the issue?

 

 

yeah! it works now! i have also noticed that, thx for your reminding. and i am a little bit worried about if deleting this section may affect how the system runs. or is it even better to transplant this part into the SSDT-3? 

Share this post


Link to post
Share on other sites

yeah! it works now! i have also noticed that, thx for your reminding. and i am a little bit worried about if deleting this section may affect how the system runs. or is it even better to transplant this part into the SSDT-3?

Like I said, all that stuff is not used by OS X as it is Windows specific. You can re-order the SSDTs or you can remove that section. Either way works around the OS X limitation on SSDT order. OS X ACPI implementation is definitely gimped compared to Windows...

Share this post


Link to post
Share on other sites

HELLO

can someone help me to disable my optimus card in my laptop RC530 samsung

i test some method but never work for me

i send acpi files from aida and the dsdt that i use with clover

 

thank you

acpi dump RC530.zip

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By rtke333
      Hi!

      Could anyone help me installing High Sierra on this system?
      I succesfully installed Sierra before on this system with help of Jake Lo (thanks!!), I just wondering if could High sierra possible to installed on this system?
      Boot stopped at this. I'll attach my Clover folder and a picture from boot.
      UEFI enabled, and for skylake I used IntelGraphicsDVMTfixup and IntelGraphicsFixup kexts. My bios is very limited and does not have any option to change dvmt prealloc or anything else.
      Everything works fine on Sierra.
      Here is my system:
       
      THIS TOPIC IS OUTDATED AND WILL NO LONGER UPDATED.
      PLEASE GO TO THIS LINK FOR GUIDE & UPDATED FILES:
      https://www.insanelymac.com/forum/topic/338103-guide-acer-aspire-v-15-v5-591g-mojave-windows/
       


      Acer Aspire V15 V5-591G-55TU
       
      (Note: Bootpack works fine with another versions of 591G, for example: V5-591G-71K2, -764Z, -59PU, etc.)

      Mobo: Skylake USOPP_SLS
      Bios: Insyde corp latest version
      CPU: Intel Core i5-6300HQ 2.30 GHz (Skylake)
      GPU: Geforce GTX 950M 2 GB (optimus, disabled), Intel HD 530
      Ram: 8 GB DDR4 (4+4 GB)
      Wifi: Qualcomm Atheros QCNFA344A, Replaced to BCM94352Z
      Ethernet: Realtek 8168B/8111B
      Audio: ALC 255 (layout-3 fix)
      Card Reader: Realtek
      HDD: 1 TB
      Dual-boot with Windows 10

      Any help appreciated!

      UPDATE! (2017.10.30)
      UPDATE! (2017.11.09)
      UPDATE! (2018.02.01)

      Successfully installed High Sierra 10.13, 10.13.1, 10.13.3
      SEE THIS POST: #49 IF YOU THINK YOUR CPU IS HOT (60+°C) OR NOT GOING UNDER 1.3GHz FREQUENCY WHEN IDLE
      (Original OSXLatitude post link: http://forum.osxlatitude.com/index.php?/topic/10077-success-acer-aspire-v-15-v5-591g-55tu-high-sierra-dual-boot-windows/)
      Working:
      Wi-Fi and Bluetooth with BCM94352z: (enabled with BrcmFirmwareRepo.kext, BrcmPatchRAM2, FakePCIID.kext, FakePCIID_Broadcom_WiFi.kext, install them with Kext Utility or another kext installer) (Original WiFi is Qualcomm Atheros, unsupported but BT works) Hand-off with BCM94352z Full Graphics enabled on HD 530, HDMI, VGA. ALC 255 Audio: (Internal Speakers, Internal Microphone, Headphone jack (microphone not tested) with layout-3 fix (you can use AppleHDAPatcher) Ethernet Realtek 8168B/8111B App Store, Messages, FaceTime, Siri, iCloud (native) Integrated webcam (native) 3.0 USB (native) Touchpad and Keyboard: Fn keys are good, the weird thing is the Brightness key. On my keyboard it's Pause Break:Br-up, Fn+F12:Br-dwn. (VoodoPS2Controller.kext) Battery info: Install ACPIBatteryManager.kext with kext utility or other installer. Sleep Mode: In High Sierra sleep mode not worked for me natively. Inject custom EDID to fix the blank screen after wake from sleep
      See here for instruction (thanks black.dragon74 and Jake Lo !!) Please add these 2 patches to ACPI\DSDT\Patches in your config.plist in order to avoid not responding applications after sleep: (added in "v5_591g_55tu_updated_CLOVER.zip") HECI to IMEI 48454349 494d4549 EC0 to EC 4543305f 45435f5f Before updating to a new version of High Sierra please update kexts to new versions to avoid kernel panics Note: No need for "IntelGraphicsDVMTFixup.kext" so you should delete it. Not working:
      Original Wi-Fi: Qualcomm Atheros QCNFA344A unsupported, you need switch to BCM94352Z or just use a mini usb wifi dongle. NVIDIA GTX 950M: Optimus not supported. Card Reader: Unsupported For WiFi:
      You can choose an external USB wifi dongle (I used tp-link Archer T1U (5GHz support), Tp-link have official macOS drivers, you just need to install it (OR)Replace your M.2 Qualcomm Card with a compatible BCM94352Z card (you will have hand-off Bluetooth too), just install the kext I wrote above I'll attach my EFI folder for anyone who want to install High Sierra (acer_aspire_v5_591g_55tu_hs.zip).
      *REUPLOADED updated CLOVER folder, attached as "v5_591g_55tu_updated_CLOVER.zip" (uploaded to OSXLatitude forum, can't upload here).
       
      I'm using High Sierra in Dual-boot with Windows 8.1. To do this in a clean install or with Windows installed first try my little minimal guide:
       
      Dual-boot clean install (on one drive):
      1. Boot into your Mac installer, Create 2 partitions in GUID table (1 for Win (I used FAT32 but I think it's no matter what), 1 for Mac), 
      2. Install Mac, boot with your USB, *mount your EFI partition (use terminal or an EFI mounter app), create an EFI folder, copy the CLOVER folder I attached to the EFI folder, restart,
      3. Boot into your Win installer, Format the partition you created for Win, install. 
      4. Now, it's automatically booting into Windows. To use Clover open cmd in administrator, type:
      bcdedit /set {bootmgr} path \EFI\CLOVER\CLOVERX64.efi 5. You're done! It will booting into Clover when you start the system, and you can select Win or Mac (or another OS if installed on a 3rd partition).
       
      Dual-boot with Windows installed first (on one drive):
      If you already have Windows and you don't want to lose all your data there is a hope:
      You need bootable Mac Installer and a full system restore image (you can search for it).
      (You may see errors if your EFI partition is not 200 MB)
      1. Boot into your Windows, resize your partition or create one for Mac.
      2. Boot into your Mac installer and in Disk Utility format the partition you created.
      3. Restore from image: select your full system restore image.
      4. When it's finished restoring you just need to restart, then boot to the system with your usb.
      5. Do Step 2. from "*" from clean install dual-boot above. but KEEP "Microsoft" FOLDER IN IT!
      6. Do Step 4. from clean install dual-boot above.
      7. You're done! You can select your old Windows and your new macOS!
      (I only tried with Windows 8/8.1/10. I don't know Windows 7,etc.)
       
      IF YOU GETTING ERRORS DURING MAC RESTORE:
      Make sure you have partitions in GPT The best version for restore method is Windows 8.1. It's using 200 MB EFI. Windows 10 using 100 MB EFI and will annoy the Mac restore. You can use with Windows 10, just ignore the errors IF YOU GETTING ERRORS DURING WINDOWS INSTALLATION (could not be formatted, etc):
      Make sure you have GPT partitions, and GPT installer IF YOU USED RESTORE METHOD THEN CAN'T MOUNT YOUR EFI PARTITION (No EFI partition found)
      It's because your EFI is not 200 MB or not an "Apple" original EFI,  but do not worry, try another EFI mounter, or mount from terminal (I used EFI mounter v3: Getting errors, but you can mount and use without problem) You also could "mount" the EFI from windows, for that open cmd and type: diskpart list vol (Now select the "System" volume,(FAT 32) For example I select 4) sel vol 4 list part (Select System type partition, for example 2) sel part 2 assign letter=b (This will "mount" your EFI partition, to manage files download totalcmd or explorer++ (run as admin)) remove letter=b (This will "unmount" your EFI) Here is a video from dual-boot with Windows installed first (on one drive):
      https://www.youtube.com/watch?v=0_Q8uPkwcWQ
      Here some pictures:




    • By rtke333
      Acer Aspire V15 V5-591G - Mojave 10.14.4
       
      (Note: mine is 55TU version, but the bootpack will work fine with another versions of 591G, for example: V5-591G-71K2, -764Z, -59PU, etc.)
      Specifications:
      - Motherboard: USOPP_SLS (Skylake-H PCH)
      - BIOS:Insyde Corp. v 1.15
      - CPU:Intel Core i5-6300HQ 2.3 GHz (Skylake)
      - GPU: NVIDIA GeForce GTX 950M 2 GB (Optimus) & Intel HD Graphics 530
      - RAM:SK hynix 4 GB DDR4 (Later I bought + KINGSTON 4 GB) 2133 MHz
      - WiFi + Bluetooth:Qualcomm Atheros QCNFA344A 5 GHz (Later -> Broadcom BRCM94352Z M.2 5 GHz WiFi + 4.0 Bluetooth)
      - Audio:Realtek HD Audio: ALC 255 
      - Ethernet: Realtek RTL8168/8111
      - Card Reader:Realtek USB 2.0 Card Reader (USB2.0-CRW)
      - Webcam:HD Webcam
      - HDD:TOSHIBA MQ01ACF032 320 GB HDD
      - SSD:SPCC M.2 230 GB SSD
      - Display:1366x768 (15.6", Matte)
      - Battery: 6 cell 56Wh / 5040mAh
      - Connectors: 
      1x SD Card Reader 2x USB 3.0 (1x USB Charging), 1x USB 2.0 1x VGA 1x HDMI 1x 3.5mm microphone/audio combined jack connector 1x Ethernet (Rj-45) - Keyboard & Touchpad:Multi-Touch & Multi-gestures ELAN 501 Touchpad, Backlight Keyboard.
      Working:  
      - Wi-Fi (with BCM94352Z)
      - Bluetooth hand-off (With BCM94352Z)
      -Full Graphics enabled on HD 530: ig-platform-id: 0x191b0000 (HD 530 Mobile)
      - Display: if default colour profile is corrupted (blue is not actual blue but purplish) Use "Rec. ITU-R BT. 709-5" Color Profile (System Pref. -> Displays -> Color)
      -HDMI & VGA Outputs: AppleGraphicsDevicePolicy.kext Clover patch
      - Audio (ALC 255):(Internal Speakers, Internal Microphone, Headphone jack with AppleALC, ALCPlugFix -> layout-id=17)
      - Ethernet Realtek 8168/8111: RealtekRTL8111.kext
      - App Store, Messages, FaceTime, Siri, iCloud(native)
      - Integrated webcam(native)
      - 3.0 USB (native)
      - Touchpad and Keyboard(ELAN501): Fn keys are good, the weird thing is the Brightness key. On my keyboard it's Pause Break:Br-up, Fn+F12:Br-dwn-> To fix this try Karabiner (VoodoPS2Controller.kext), - for gestures try SmartTouchpad drivers
      - Battery info:Install ACPIBatteryManager.kext with Kext Utility or other installer.
      - Sleep Mode
      - SSD with TRIM enabled (to enable trim, open Terminal and write "sudo trimforce enable")
      Not working:
      - Original Wi-Fi (Qualcomm Atheros QCNFA344A):  unsupported, you need switch to BCM94352Z or just use a mini usb wifi dongle.
      - NVIDIA GeForce GTX 950M: Optimus not supported.
      - Card Reader: Unsupported -> Can't really fix because I don't have any SD Card at the moment, maybe can be fixed by adding Prod & Ven IDs to AppleStorageDevices.kext, I never used it anyway. name: "USB2.0-CRW" Prod ID: "0x0129" Ven ID: "0x0bda  (Realtek Semiconductor Corp.)"
      For Wi-Fi:
      - 1st method:You can choose an external USB wifi dongle (I used TP-Link Archer T1U (5GHz support), TP-Link has official macOS drivers, you just need to install it
      -2nd and I think the best method:Replace your M.2 Qualcomm Card with a compatible BCM94352Zcard (you will have hand-off Bluetooth too), just install the kexts (enabled with BrcmFirmwareData.kext, BrcmPatchRAM2.kext, FakePCIID.kext, FakePCIID_Broadcom_WiFi.kext, they're all in my attached zip). You could buy this card from ebay, aliexpress, or amazon
       
      Issues:
      - None
      BIOS Settings:
      - BIOS version 1.15 (irrelevant)
      - Secure Boot: Disabled
      - Touchpad: Advanced
      - Boot mode:UEFI
      Getting ready for Installation:
      - Download the install zip (bootpack & postinstall): Click here -> acer_aspire_v591g_installfiles.zip
      Installation:
      - Create an installer with any method you know (- Mac: createinstallmedia - Windows: Transmac, Vmware, Win32diskimager)
      - Copy my Clover folder to the USB's EFI folder
      - Boot with the Installer USB
      - If you stuck in boot, reboot and in the Clover bootloader select "config_debug.cfg" -> you'll have more informations about the freeze
       
      Please open the README.rtf in my install zip for more informations about the USB Installer & Post installation!
      If you have a single RAM and getting panic at boot, then you need to edit the "config.plist" with these (SMBIOS->after "Version 1.0"):
      ->Edit "Frequency" and "Size" to match your RAM values
      <key>Version</key> <string>1.0</string> <key>Memory</key> <dict> <key>Channels</key> <integer>1</integer> <key>SlotCount</key> <integer>1</integer> <key>Modules</key> <array> <dict> <key>Slot</key> <integer>0</integer> <key>Size</key> <integer>8192</integer> <key>Frequency</key> <integer>2133</integer> <key>Type</key> <string>DDR4</string> </dict> </array> </dict> </dict>  
      PowerManagement  fix:
      Set HWPEnable=YES in Clover (already set), CPUFloor to "700", Frequency to "2300" and "3200"(Normal and Turbo, if you have i7-6700HQ version then it should be "2600", "3500") and "FrequencyVectors" from "0x0d000000" to "0x07000000" in "S/L/E/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/Mac-A5C67F76ED83108C.plist", MSR _xcpm_idle Patch to KernelToPatch in Clover (If you have High Sierra, change "MatchOS" to 10.13):

      <key>KernelToPatch</key> <array> <dict> <key>Comment</key> <string>MSR 0xE2 _xcpm_idle instant reboot(c) Pike R. Alpha</string> <key>Disabled</key> <false/> <key>Find</key> <data> ILniAAAADzA= </data> <key>MatchOS</key> <string>10.14</string> <key>Replace</key> <data> ILniAAAAkJA= </data> </dict> </array> Reboot, and it's 800MHz in idle state, same on Windows.
       

       
      Elan SmartTouchpad
      I only use scrolling, one-, double- & tripletap
      If you want to try other gestures go to this link for more informations, options (v4.7 beta 5) ->  DETAILS ABOUT THE SMART TOUCHPAD DRIVER FEATURES
      Fn Brightness keys not working with this, tried several things without success. With VoodoPS2Controller it's working, but you'll have no gestures (neither scrolling).
       
       
      Before updating to a new version of Mojave please update kexts (and clover if necessary) to newer versions to avoid kernel panics.
      Generate a serial number with Clover Configurator.app (open up your config.plist with CC then -> SMBIOS -> Serial Number -> Generate New)
       
      Mojave & Windows 10 Dual-Boot:
      Dual-boot clean install (on one drive), UEFI Only:
       
       Boot into your Mac installer, Create 2 partitions in GUID table (1 for Win (I used FAT32 but I think it doesn't matter what you choose), 1 for Mac),   Install Mac, boot with your USB, mount your EFI partition (use terminal or an EFI mounter app), create an EFI folder (if there is no folder), copy the CLOVER folder I attached to the EFI folder, restart,  Boot into your Win installer, Format the partition you created for Win, install.   Now, it's automatically booting into Windows. To use Clover open cmd in administrator, type:  bcdedit /set {bootmgr} path \EFI\CLOVER\CLOVERX64.efi       5.  You're done! It will booting into Clover when you start the system, and you can select Win or Mac (or another OS if installed on a 3rd partition).
       
      Dual-boot with Windows installed first (on one drive), UEFI Only:
      If you already have Windows and you don't want to lose all your data there is a hope:
      I created a video from this restore method: [Hackintosh] Dual-Boot High Sierra & Windows - when Windows already installed - no data waste - UEFI
      You need bootable Mac Installer and a full system restore image (link is in my video's description).
      (You may see errors if your EFI partition is not 200 MB)
       Boot into your Windows, resize your partition or create one for Mac.  Boot into your Mac installer and in Disk Utility format the partition you created.  Restore from image: select your full system restore image.  When it's finished restoring you just need to restart, then boot to the system with your usb.  When you successfully booted to Mac desktop, mount your EFI partition (use terminal or an EFI mounter app), open EFI, you will see there is a Microsoft folder already (don't touch that!). Copy my CLOVER folder to the EFI folder then Restart.  Now, it's automatically booting into Windows. To use Clover open cmd in administrator, type:  bcdedit /set {bootmgr} path \EFI\CLOVER\CLOVERX64.efi       7.  You're done! You can select your old Windows and your new macOS!
      (Only tried with Windows 8/8.1/10. I don't know Windows 7,etc.)
       
      IF YOU GETTING ERRORS DURING MAC RESTORE:
      - Make sure you have partitions in GPT
      - Windows using 100 MB EFI and will annoy the Mac restore. Don't worry, just ignore the errors.
       
      IF YOU GETTING ERRORS DURING WINDOWS INSTALLATION (could not be formatted, etc):
      - Make sure you have GPT partitions, and GPT (UEFI) installer, also disconnect all external storage drives (except the installer USB)
       
      IF YOU USED RESTORE METHOD THEN CAN'T MOUNT YOUR EFI PARTITION (No EFI partition found):
      - It's because your EFI is not 200 MB or not an "Apple" original EFI,  but do not worry, try another EFI mounter, or mount from terminal (I used EFI mounter v3: Getting errors, but you can mount and use without problem)
      - You also could "mount" the EFI from Windows:
      1st method: open cmd in administrator mode and type:
      diskpart
      list vol (Now select the "System" volume,(FAT 32) For example I select 4)
      sel vol 4
      list part(Select System type partition, for example 2)
      sel part 2
      assign letter=b(This will "mount" your EFI partition)
      Open Explorer++ or TotalCommander in administrator mode to manage EFI
      remove letter=b (This will "unmount" your EFI)
      2nd method: open cmd in administrator mode and type:
      mountvol b: /s (This will mount your EFI)
      Open Explorer++ or TotalCommander in administrator mode to manage EFI
      mountvol b: /d (This will unmount your EFI)
      Thanks to all OSXLatitude members for helping me out! (Jake Lo, Hervé, Bronxteck, black.dragon74)!
      Notes:
      2019.04.25: Optimized touchpad scrolling -> updated install files
      2019.03.30: Fixed USB 3.0 ports, fixed Bluetooth crashes after sleep -> updated bootpack
      2019.03.28: Updated to 10.14.4. Unexpected crashes while updating to 10.14.4 -> fixed by updating Clover to the latest (v4910) version. Bluetooth crashes appeared -> fixed by downgraded Brcm*.kexts. Updated bootpack.
      2019.02.24: Bluetooth crashes after sleep -> fixed, updated bootpack. 
      2019.02.22: Updated to 10.14.3. Fixed HDMI Audio by installing "FakePCIID_Intel_HDMI_Audio.kext" -> fixed freezing during boot. Fixed brightness levels by installing "AppleBacklightFixup.kext". Also updated bootpack & postinstall zip down in attachments.
      2019.01.21: Removed FakeSMC.kext, SMCHelper-64.efi, replaced by VirtualSMC.kext, VirtualSMC.efi because I got random freezes when booting system (kextd stall[0], (120s): 'AppleACPICPU' -> CPU is at 100%, fans are spinning fast), also updated bootpack in the attachments "acer_aspire_v591g-55tu_clover.zip"-> Freeze continued, brought back FakeSMC, deleted VirtualSMC (caused BT crashes).
      2019.01.18: HDMI Audio is fixed, I didn't do anything HDMI Audio is not fixed, sometimes it worked but most likely not. (no idea why)
      2018.12.09: Updated to 10.14.2 -> did without any complication
      2018.11.28: Fixed combo-jack garbage sound output by installing ALCPlugFix and CodecCommander.kext
      2018.11.01: Updated to 10.14.1 -> HDMI & VGA ports are gone again. -> Fixed by "AppleIntelSKLGraphicsFramebuffer.kext" rollback from 10.14.
      2018.09.28: Updated to Mojave 10.14 -> Fixed HDMI & VGA Outputs by adding "AppleGraphicsDevicePolicy.kext" patches to config.plist, HDMI audio not working
    • By fighttoby
      I have tried to install clover via no UEFI legacy mode (and with UEFI method) using the method here (http://www.tonymacx86.com/yosemite-desktop-guides/144426-how-install-os-x-yosemite-using-clover.html)
      both times I can get to just past the clover boot screen and it freezes after that.
      I have verbose (-v) selected in boot options: On the non-UEFI install then it hangs on:
      "Waiting on <dict ID="0"><key>IOProviderClass</key>...."
       
      I have had a lot of issues with trying to get the installer working and many different things that had to be disabled but now it just gets to here and stops. Some times it will glitch out on this screen and give me a the circle with the line through it and text garbage around it where the text in the pictures are.
       
      Need help please.
       
      This is the laptop im using the specs are the same nothing has changed.
      https://www.asus.com/Laptops/ASUS_VivoBook_X202E/


      config.plist
    • By End3rPower50
      Hi, i've installed on my pc MacOS Mojave but after installation my pc, sometimes, crash giving kernel panic.
      I came to the conclusion that it is a random kernel panic because sometimes it starting up and other times it isn't starting up
       
      My PC:
      CPU: Intel i7 6500U
      LAN: RTL8100
      Wi-Fi & Bluetooth: Dell DW1820A
      USB 3.1
       
      CLOVER.zip
    • By peanutman314
      As you might know the Samsung 970 EVO Plus variant causes major issues on hackintosh installs. I want to keep it plugged into my motherboard for use in Windows. However, if it's plugged in, macOS is going to try to index this disk eventually and it will crash macOS even though it's not the main install disk. 

      Because I don't need this disk under macOS I thought it would be a good solution to somehow disable/hide the unsupported disk for macOS. I looked into doing this via Clover but couldn't find anything useful. I'm hoping I can disable the slot via a DSDT patch. I only want to disable one specific M.2 slot, the others should remain functional (I have another working M.2 disk). So disabling the driver is not an option.

      I have very little experience with DSDTs and I have no idea how to do this. I recently created a USB injection patch using RehabMan's excellent guide, so I have some experience with the process, but no idea how to formulate the DSDT patch. 

      I have a Gigabyte Aurus Pro z390 motherboard. Below is a screenshot of IORegistryExplorer showing the other working drive (not the one I want to disable, that one is not plugged in yet). 
       

      I would be very grateful if anyone can point me in the right direction. If anyone knowns of a non-DSDT solution to disable a specific slot (but not all slots) then that's also fine of course.

      Thank you for your time
×