Jump to content

OpenCore General Discussion


dgsga
8,805 posts in this topic

Recommended Posts

On 11/11/2019 at 10:15 AM, Ellybz said:

Not Sure I understood. Similarly to Clover, You can use OC to boot any OS you'd like. Have you tried the following boot entry ?
PciRoot(0x0)/Pci( 0xXX, 0x0 )/XXXX.(0x0xXXXX.0x0)/HD ((1,XXX,,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,0xXX,0xXXXXX) /\EFI\Archlinux\vmlinuz-itz

You can find the hidden path thru the Clover Bootlog. ( Shell method for linux is incomplete ). 

Is this correct?

XXXXXXXXXXX,0xXX,0xXXXXX) /\EFI\Archlinux\vmlinuz-itz
Im trying to boot Arch via OC as well but im confused with the space and the slashes go different ways?

Link to comment
Share on other sites

Hello,

Well I am quite sure that this isn't the right place to ask this but I'm thinking it has a higher chance of being noticed and answered. Please do delete it if it's totally irrelevant.

 

I'm on the process of making my SSDT-PLUG.aml for my Z390 system. According to the sample SSDT-PLUG.dsl included with the OpenCore package, it advices to delete all irrelevant CPU paths.

I have done my research and found my CPU scope and device name, PR00 under _PR scope.

Now using the sample SSDT-PLUG.dsl, should I just delete all the "blocks" not relevant to my CPU and just leave the code below?

 

/*
 * XCPM power management compatibility table.
 *
 * Please note that this table is only a sample and may need to be
 * adapted to fit your board's ACPI stack. For instance, both scope
 * and device name may vary (e.g. _SB_.PR00 instead of _PR_.CPU0).
 *
 * While the table contains several examples of CPU paths, you should
 * remove all the ones irrelevant for your board.
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_PR_.PR00, DeviceObj)
  
    If (CondRefOf (\_PR.PR00)) {
        Scope (\_PR.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
}

I believe I can make the code cleaner by removing it from the If statement because it is now directly targeting the correct CPU. I don't know how to do that though. Technically, it will still work regardless but with a web development background, I do think we can make the code a bit cleaner. Just not sure how to do with this language.

 

 

For a quick reference of the full SSDT-PLUG.dsl sample

/*
 * XCPM power management compatibility table.
 *
 * Please note that this table is only a sample and may need to be
 * adapted to fit your board's ACPI stack. For instance, both scope
 * and device name may vary (e.g. _SB_.PR00 instead of _PR_.CPU0).
 *
 * While the table contains several examples of CPU paths, you should
 * remove all the ones irrelevant for your board.
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_SB_.CPU0, DeviceObj)
    External (_PR_.CPU0, DeviceObj)
    External (_PR_.C000, DeviceObj)
    External (_PR_.P000, DeviceObj)
    External (_SB_.PR00, DeviceObj)
    External (_PR_.PR00, DeviceObj)
    External (_SB_.SCK0.CP00, DeviceObj)
    External (_SB_.SCK0.PR00, DeviceObj)

    If (CondRefOf (\_SB.CPU0)) {
        Scope (\_SB.CPU0) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_PR.CPU0)) {
        Scope (\_PR.CPU0) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_SB.PR00)) {
        Scope (\_SB.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
    
    If (CondRefOf (\_PR.C000)) {
        Scope (\_PR.C000) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
    
    If (CondRefOf (\_PR.P000)) {
        Scope (\_PR.P000) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_PR.PR00)) {
        Scope (\_PR.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_SB.SCK0.CP00)) {
        Scope (\_SB.SCK0.CP00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_SB.SCK0.PR00)) {
        Scope (\_SB.SCK0.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
}

 

Link to comment
Share on other sites

56 minutes ago, insanefrancis said:

Hello,

Well I am quite sure that this isn't the right place to ask this but I'm thinking it has a higher chance of being noticed and answered. Please do delete it if it's totally irrelevant.

 

I'm on the process of making my SSDT-PLUG.aml for my Z390 system. According to the sample SSDT-PLUG.dsl included with the OpenCore package, it advices to delete all irrelevant CPU paths.

I have done my research and found my CPU scope and device name, PR00 under _PR scope.

Now using the sample SSDT-PLUG.dsl, should I just delete all the "blocks" not relevant to my CPU and just leave the code below?

 


/*
 * XCPM power management compatibility table.
 *
 * Please note that this table is only a sample and may need to be
 * adapted to fit your board's ACPI stack. For instance, both scope
 * and device name may vary (e.g. _SB_.PR00 instead of _PR_.CPU0).
 *
 * While the table contains several examples of CPU paths, you should
 * remove all the ones irrelevant for your board.
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_PR_.PR00, DeviceObj)
  
    If (CondRefOf (\_PR.PR00)) {
        Scope (\_PR.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
}

I believe I can make the code cleaner by removing it from the If statement because it is now directly targeting the correct CPU. I don't know how to do that though. Technically, it will still work regardless but with a web development background, I do think we can make the code a bit cleaner. Just not sure how to do with this language.

 

 

For a quick reference of the full SSDT-PLUG.dsl sample


/*
 * XCPM power management compatibility table.
 *
 * Please note that this table is only a sample and may need to be
 * adapted to fit your board's ACPI stack. For instance, both scope
 * and device name may vary (e.g. _SB_.PR00 instead of _PR_.CPU0).
 *
 * While the table contains several examples of CPU paths, you should
 * remove all the ones irrelevant for your board.
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_SB_.CPU0, DeviceObj)
    External (_PR_.CPU0, DeviceObj)
    External (_PR_.C000, DeviceObj)
    External (_PR_.P000, DeviceObj)
    External (_SB_.PR00, DeviceObj)
    External (_PR_.PR00, DeviceObj)
    External (_SB_.SCK0.CP00, DeviceObj)
    External (_SB_.SCK0.PR00, DeviceObj)

    If (CondRefOf (\_SB.CPU0)) {
        Scope (\_SB.CPU0) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_PR.CPU0)) {
        Scope (\_PR.CPU0) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_SB.PR00)) {
        Scope (\_SB.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
    
    If (CondRefOf (\_PR.C000)) {
        Scope (\_PR.C000) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
    
    If (CondRefOf (\_PR.P000)) {
        Scope (\_PR.P000) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_PR.PR00)) {
        Scope (\_PR.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_SB.SCK0.CP00)) {
        Scope (\_SB.SCK0.CP00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }

    If (CondRefOf (\_SB.SCK0.PR00)) {
        Scope (\_SB.SCK0.PR00) {
            Method (_DSM, 4, NotSerialized) {
                If (LEqual (Arg2, Zero)) {
                    Return (Buffer (One) { 0x03 })
                }

                Return (Package (0x02) {
                    "plugin-type",
                    One
                })
            }
        }
    }
}

 

I think you are right, i have simplified SSDT-PLUG.dsl sample, removed all the if statements and references irrelevant to my cpu (PR.CPU0). It’s working as intended and it looks like this:


 

DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_PR_.CPU0, ProcessorObj)

    Scope (\_PR.CPU0)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If ((Arg2 == Zero))
            {
                Return (Buffer (One)
                {
                     0x03                                             // .
                })
            }

            Return (Package (0x02)
            {
                "plugin-type", 
                One
            })
        }
    }
}

  • Like 1
Link to comment
Share on other sites

3 minutes ago, Paksman said:

I think you are right, i have simplified SSDT-PLUG.dsl sample, removed all the if statements and references irrelevant to my cpu (PR.CPU0). It’s working as intended and it looks like this:


 

DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_PR_.CPU0, ProcessorObj)

    Scope (\_PR.CPU0)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If ((Arg2 == Zero))
            {
                Return (Buffer (One)
                {
                     0x03                                             // .
                })
            }

            Return (Package (0x02)
            {
                "plugin-type", 
                One
            })
        }
    }
}

 

Cool. Will do this as well. Thanks.

Link to comment
Share on other sites

On 4/15/2020 at 1:41 PM, noreason said:

Heya, I switched from Clover to OpenCore recently (fresh install, new ssd) and everything "works" lovely except a few things...

 

I am randomly getting hard lockups that require a power off (reset button doesn't even work). I can't seem to figure out why...

 

One thing that might be causing it is strange USB behavior i am having. My non USB 3.0 ports work for about 3 or so minutes after booting up, then completely shut down. No power coming out of them or anything. Like they crash completely. Initially i thought maybe it was the port limit patch / usbinjectall but after creating a USB map kext and removing the limit patch / usbinjectall kext it still does this.

 

I have another SSD that i use to boot windows for gaming, and i can game for days without freezes / USB issues, so i don't believe its hardware failure.

 

--

 

Random bits of info that might help:

 

Mobo is asrock Z77 Extreme4, running OpenCore 0.5.7, used the Ivy Bridge section of the vanilla guide to build my config.plist

 

Mobo has onboard Intel graphics, but I am running a Geforce GTX 780 with 'build in' apple drivers. Not sure if my integrated card needs to be configured or just ignored? I read that it helps with encoding/decoding media, etc. Not sure if this would cause my issues though

 

I am using FakePCIID and the BCM57XXX as BCM57765 kext to get ethernet to work. "Sanity checker" says FakePCIID is no good, but couldn't find a way to get ethernet working... Not sure if that would cause freezing / usb crashing though?

 

I have not yet implemented CPU-PM (could that cause this? seems unlikely?)

 

CSM is enabled in bios, guides usually always say to disable, but never could get it to boot with this mobo. This worked lovely in clover for 4 years enabled, so who knows

 

 

 

Screen Shot 2020-04-15 at 12.28.32 PM.png

config.plist

 

Are you on 15.4? If so was wondering if you would do me a favor and run the  'CONSOLE' app and check its crash reports and see if you see any mention of your video card at being at fault? I'm having a similar issue and narrowed it down to the drivers for my 5700 XT.

 

Thanks

Link to comment
Share on other sites

 

Okay, so compiled and tried the fork. 

I added the EnableForAll quirks to boot Windows, and even tried to add a custom entry to the bootloader.
Neither works. 
Enableforall set to true of false doesn't do change the fact that it won't boot. 
In one case I get the BSOD ACPI_BIOS_ERROR, in the other case, Windows doesn't seem to find bootmgfw (i don't remember the exact error) and tells me to repair it.
 

 

Edited by edenpulse
Link to comment
Share on other sites

Is it possible in the future install to an AMD Ryzen 4000 laptop? It known that the micro-code of Ryzen is on 10.15.4. The laptops are better than intel an only 15w 4800u with 8c 16t. I really hope that in the future we can take the two options. The next year all laptops will have usb 4.0 that it has thunderbolt 3...

Link to comment
Share on other sites

Hi,

 

When Opencore efi bootloader starts up it verbosely complains certain files in the Resource folder are missing. Doesn't seem

to affect anything but is there a link to Resource files necessary for the GUI?

 

Thank you

Link to comment
Share on other sites

4 minutes ago, Steve-y said:

Hello!

 

I got my OpenCore running pretty well but I see some ACPI errors quickly passing by and I can't seem to find them anywhere in the logs. Is there a way to log these? I've checked dmesg and searched for it in console.app... Would like to know what exactly are the errors and clean up config.

 

Thank you!

Use DisplayDelay for this under Misc/Debug

Link to comment
Share on other sites

7 hours ago, 149113 said:

Any advise on getting a Dell H200 SAS card working? Had no issues under Clover with 2 kexts but at getting an "invalid parameter" error in OC boot when it tries to load them. Everything else is working great.

 

"invalid parameter" means that you have configured the something incorrectly in your config.plist. Most likely, you have not added your kexts correctly. 

If you wish to know what, then you would have to post your config.plist and the 2 kexts you are trying to add.

Link to comment
Share on other sites

6 hours ago, Steve-y said:

Hello!

 

I got my OpenCore running pretty well but I see some ACPI errors quickly passing by and I can't seem to find them anywhere in the logs. Is there a way to log these? I've checked dmesg and searched for it in console.app... Would like to know what exactly are the errors and clean up config.

 

Thank you!

 

dmesg command no longer captures the boot log.

 

In your config.plist, set misc->AppleDebug=true and it will add the boot.efi log into the macOS boot log.

Once booted, open terminal app and enter the following :

log show --predicate 'process == "kernel"' --style syslog --source --last boot

...and it will display the full macOS log from boot.

 

I've have saved that command to a file I called dmesg.sh and saved it /usr/local/bin which allows me to run that dmesg.sh command - it's equivalent to the old dmesg command. From terminal pipe the output of that command to grep and search for anything that I am interested in....e.g. ACPI like so:

dmesg.sh | grep -i acpi

and it will show every line with ACPI in the log

or, specifically :

dmesg.sh | grep -i AcpiOsVprintf

 

Edited by MacNB
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Hi guys,

 

I made the transition from ozmosis to OC without big problems and I'm now successfully booting Mojave with OC 0.5.7 and it's working great.

 

However, there are some concerns and problems that I would like to address:

 

• I have second SATA HD (APFS) that doesn't mount on boot. I can mount it with Disk Utility and it checks good. How to fix?

• My hack wakes every 2 hours with DarkWake from Normal Sleep [CDN] due to RTC/Maintenance. I know that's connected with WOL, and I need WOL, but it was working great on Oz and high sierra with darkwake=0. Powernap is disabled and I'm using iMac 14,2 bios.

• There are errors in the log that I don't know how to fix  or how serious they are:

(Lilu) VirtualSMC     efend: @ authenticated restart support is unavailable (800000000000000E, 8)
...
(Lilu) SMCProcessor      scpu: @ failed to get system model
...
(IONVMeFamily) <IONVMeFamily`IONVMeDebugAssert> AppleNVMe Assert failed: ( 0 != data )
...
(IOStorageFamily) <IOStorageFamily`dkreadwritecompletion(void*, void*, int, unsigned long long)> disk1s1: device is not readable.
...
(HFS) <HFS`hfs_mountfs> hfs_mountfs: buf_meta_bread failed with 13
(HFS) <HFS`hfs_mount> hfs_mount: hfs_mountfs returned error=13 for device unknown-dev
hfs_mountroot failed: 13
...
(pmtelemetry) <pmtelemetry`com_apple_driver_pmtelemetry::_pch_init()> Unsupported CPU

• There are also thousands of (IOAudioFamily) messages and a lot of (AppleHDA).

 

• And thousands of (Sandbox) <Sandbox`kernel_report> repeated messages like:

(Sandbox) <Sandbox`kernel_report> Sandbox: secd(322) deny(1) mach-lookup com.apple.lsd.modifydb
(Sandbox) <Sandbox`kernel_report> Sandbox: rapportd(344) deny(1) mach-lookup com.apple.lsd.modifydb
(Sandbox) <Sandbox`syscall_extension_consume> syscall_extension_consume failed: 22
...

 

Any advice will be appreciated. :)

Edited by gorans
Link to comment
Share on other sites

3 hours ago, MacNB said:

 

dmesg command no longer captures the boot log.

 

In your config.plist, set misc->AppleDebug=true and it will add the boot.efi log into the macOS boot log.

Once booted, open terminal app and enter the following :


log show --predicate 'process == "kernel"' --style syslog --source --last boot

...and it will display the full macOS log from boot.

 

I've have saved that command to a file I called dmesg.sh and saved it /usr/local/bin which allows me to run that dmesg.sh command - it's equivalent to the old dmesg command. From terminal pipe the output of that command to grep and search for anything that I am interested in....e.g. ACPI like so:


dmesg.sh | grep -i acpi

and it will show every line with ACPI in the log

or, specifically :


dmesg.sh | grep -i AcpiOsVprintf

 

Got curious on how my boot log looks so I run the command above. I have these 4 lines which I think are errors. Other lines seems to look fine for me.

 

020-04-18 15:26:24.605113+0300  localhost kernel[0]: (AppleACPIPlatform) <AppleACPIPlatform`AcpiOsVprintf> ACPI Exception: AE_BAD_PARAMETER,
2020-04-18 15:26:24.605114+0300  localhost kernel[0]: (AppleACPIPlatform) <AppleACPIPlatform`AcpiOsVprintf> ACPI Exception: AE_BAD_PARAMETER,
2020-04-18 15:26:24.605116+0300  localhost kernel[0]: (AppleACPIPlatform) <AppleACPIPlatform`AcpiOsVprintf> Could not install PciConfig handler for Root Bridge PCI0
2020-04-18 15:26:24.605117+0300  localhost kernel[0]: (AppleACPIPlatform) <AppleACPIPlatform`AcpiOsVprintf> Could not install PciConfig handler for Root Bridge PCI0

What does these 4 lines mean? Can they somehow be fixed?

 

Link to comment
Share on other sites

4 hours ago, MacNB said:

 

"invalid parameter" means that you have configured the something incorrectly in your config.plist. Most likely, you have not added your kexts correctly. 

If you wish to know what, then you would have to post your config.plist and the 2 kexts you are trying to add.

Attaching the config.plist and the two kext files.

Config.plist

Sas Kext Files.zip

opencore-2020-04-18-131002.txt

Edited by 149113
Link to comment
Share on other sites

×
×
  • Create New...