diff --git a/Desktops/desktop-ec.md b/Desktops/desktop-ec.md index 830d134..3369324 100644 --- a/Desktops/desktop-ec.md +++ b/Desktops/desktop-ec.md @@ -1,16 +1,18 @@ # Fixing Embedded Controller (Desktop) -This one's fairly easy to figure out, open your decompiled DSDT and search for `PNP0C09`. This should give you a result like this: +What we'll be doing is hiding our actual EC and creating a fake Embedded Comtroller for macOS to play with. + +To find out what EC you have, open your decompiled DSDT and search for `PNP0C09`. This should give you a result like this: ![](https://i.imgur.com/lQ4kpb9.png) -As you can see our `PNP0C09` is found within the `Device (EC0)` meaning this is the device we want to hide from macOS(others may find ). Now grab our SSDT-EC and uncomment the EC0 function(remove the `/*` and `*/` around it): +As you can see our `PNP0C09` is found within the `Device (EC0)` meaning this is the device we want to hide from macOS(others may find `H_EC`, `ECDV`, etc, everyone's systems will be different). Now grab our SSDT-EC and uncomment the EC0 function(remove the `/*` and `*/` around it): * [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) * For Skylake+ and all AMD systems * [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) - * For Haswell and older + * For Broadwell and older ```text /* <- REMOVE THIS @@ -33,9 +35,15 @@ External (_SB_.PCI0.LPCB.EC0, DeviceObj) */ <- REMOVE THIS ``` -But looking back at the screenshot above we notice something, our ACPI path is different: `PC00.LPC0` vs `PCI0.LPCB`. This is very important especially when you're dealing with Intel consumer vs Intel HEDT and AMD, `PC00.LPC0` is common on Intel HEDT while `PCI0.SBRG` is common on AMD. And they even come with name variation such as `EC0`, `H_EC`, `PGEC` and `ECDV`, so there can't be a one size fits all SSDT, **always verify your path and device**. +But looking back at the screenshot above we notice something, our ACPI path is different: `PC00.LPC0` vs `PCI0.LPCB`. This is very important especially when you're dealing with Intel consumer vs Intel HEDT and AMD, `PC00.LPC0` is common on Intel HEDT while `PCI0.SBRG` is common on AMD. And they even come with name variation such as `EC0`, `H_EC`, `PGEC` and `ECDV`, so there can't be a one size fits all SSDT, **always verify your path and device. DO NOT ASSUME**. -And make sure to scroll to the bottom as the new Fake EC function also need the correct path to replace the old EC. **Do not rename the EC device itself**, this is our fake EC we're using for macOS to play with. Just change the path! +* Finding the LowPinCount path: + * Intel: Search `Name (_ADR, 0x001F0000)` + * AMD: Search `Name (_ADR, 0x00140003)` +* Finding the PCI path: + * Search for `PNP0A08` (If multiple show up, use the first one) + +And make sure to scroll to the bottom as the new Fake EC function also need the correct path to replace the old EC. **Do not rename the EC device itself**, this is our fake EC we're using for macOS to play with so leave Leave `Device (EC)` alone. **Just change the path!** > What happens if multiple `PNP0C09` show up @@ -49,7 +57,15 @@ When this happens you need to figure out which is the main and which is not, it' This means your SSDT can be *almost* complied, the main thing to watch for is whether your DSDT uses `PCI0.LPCB` or not. The reason being is that we have a FakeEC at the bottom of our SSDT that needs to connect properly into our DSDT. Gernally AMD uses `SBRG` while Intel HEDT use `LPC0`, **verify which show up in your DSDT**. -You can check by just searching for `Name (_ADR, 0x001F0000)`(this only works for Intel, AMD users should assume `SBRG`). This address is used for Low Pin Count devices(LPC) but the device name can vary between `LPCB`, `LBC` or `LBC0`. Just search each one in your config and which ever shows up is the one your system uses +You can check by just searching for `Name (_ADR, 0x001F0000)`(this only works for Intel, AMD's controller is found at `Name (_ADR, 0x00140003)`). This address is used for Low Pin Count devices(LPC) but the device name can vary between `LPCB`, `LBC` or `LBC0`.**Again, double check your device. DO NOT ASSUME**: + +* Finding the LowPinCount path: + * Intel: Search `Name (_ADR, 0x001F0000)` + * AMD: Search `Name (_ADR, 0x00140003)`(Almost always will be called `SBRG`) +* Finding the PCI path: + * Search for `PNP0A08` (If multiple show up, use the first one) + + ![](https://cdn.discordapp.com/attachments/456913818467958789/670148514197667840/Screen_Shot_2020-01-23_at_11.08.30_PM.png) diff --git a/Laptops/backlight.md b/Laptops/backlight.md index 60dbafb..5c4edb6 100644 --- a/Laptops/backlight.md +++ b/Laptops/backlight.md @@ -1,5 +1,8 @@ # Fixing Backlight +So what this SSDT does is create a PNLF device for macOS to play with, specifically one with a hardware ID of `APP0002`. WhateverGreen will handle the rest of the work + + No configuration required for most, just drop the prebuilt file into your EFI: [SSDT-PNLF](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-PNLF.aml) Note: there are some cases where the iGPU is called `IGPU` in the DSDT, you can double check by searching for both `PCI0.GFX0` and `PCI0.IGPU`. Whichever shows up is your device diff --git a/Laptops/laptop-ec.md b/Laptops/laptop-ec.md index ad0a389..a6881d1 100644 --- a/Laptops/laptop-ec.md +++ b/Laptops/laptop-ec.md @@ -1,6 +1,9 @@ # Fixing Embedded Controller (Laptop) -This one's fairly easy to figure out, open your decompiled DSDT and search for `PNP0C09`. This should give you a result like this: + +To fix the ECs found in laptops, we'll be renaming them to look like the ones macOS expects. The reason for this is that many laptops break when you turn off their EC with an SSDT. So this is why we can't use the fancy SSDTTime to make a patch for us. + +To find out what EC you have, open your decompiled DSDT and search for `PNP0C09`. This should give you a result like this: ![](https://i.imgur.com/lQ4kpb9.png) @@ -10,16 +13,16 @@ As you can see our `PNP0C09` is found within the `Device (EC0)` meaning this is When this happens you need to figure out which is the main and which is not, it's fairly easy to figure out. Check each controller for the following properties: -* `_HID` -* `_CRS` -* `_GPE` +* `_HID` (Hardware ID) +* `_CRS` (Current Resource Settings) +* `_GPE` (General Purpose Events) Note that only the main EC needs renaming, if you only have one `PNP0C09` then it is automatically your main regardless of properties. # Applying your EC patch -As you can see from the table below, we'll be renaming our EC listed in the DSDT. Do note you cannot just throw random renames without checking first, as this can cause actual damage to your laptop. +As you can see from the table below, we'll be renaming our EC listed in the DSDT. Do note you cannot just throw random renames without checking which is the main EC first, as **this can cause actual damage to your laptop.** |Comment|Find\*\[HEX\]|Replace\[HEX\]| |:-|:-|:-| diff --git a/Laptops/trackpad.md b/Laptops/trackpad.md index e19e367..1ba01bb 100644 --- a/Laptops/trackpad.md +++ b/Laptops/trackpad.md @@ -1,3 +1,5 @@ # Fixing Trackpads +This SSDT is used to create a stub for VoodooI2C to connect to. + No configuration required, just drop the prebuilt file into your EFI: [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPIO.aml) diff --git a/Manual/dump.md b/Manual/dump.md index 174655f..21b6b5b 100644 --- a/Manual/dump.md +++ b/Manual/dump.md @@ -1,13 +1,15 @@ # Getting a copy of our DSDT -So to start, we'll need to get a copy of your DSDT from your firmware. There's a couple of options: +So to start, we'll need to get a copy of your DSDT from your firmware. The easyiest way is grabbing the DSDT.aml SSDTTime dumped for us earlier but here are some other options: + + +* [SSDTTime](https://github.com/corpnewt/SSDTTime) + * Supports both Windows and Linux for DSDT dumping + * `4. Dump DSDT - Automatically dump the system DSDT` * [MaciASL](https://github.com/acidanthera/MaciASL/releases) * Open the app on the target machine(must already be running macOS) and the system's DSDT will show, then File -> SaveAs `System DSDT`. Make sure the file format is ACPI Machine Language Binary(.AML), this will require the machine to be running macOS * Do note that all ACPI patches from clover/OpenCore will be applied to the DSDT -* [SSDTTime](https://github.com/corpnewt/SSDTTime) - * Supports both Windows and Linux for DSDT dumping - * Option 4 to dump * [acpidump.exe](https://acpica.org/sites/acpica/files/iasl-win-20180105.zip) * In command prompt run `path/to/acpidump.exe -b -n DSDT -z`, this will dump your DSDT as a .dat file. Rename this to DSDT.aml * F4 in Clover Boot menu diff --git a/README.md b/README.md index 76211de..bed871a 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ So what are DSDTs and SSDTs? Well, these are tables present in your firmware tha macOS can be very picky about the devices present in the DSDT and so our job is to correct it. The main devices that need to be corrected for macOS to work properly: * Embedded controllers(EC) - * All semi-modern intel machines have an EC exposed in their DSDT, with many AMD systems also having it exposed. These controllers are not compatible with macOS so then need to be hidden from macOS and replaced with a dummy EC when running macOS Catalina + * All semi-modern intel machines have an EC exposed in their DSDT, with many AMD systems also having it exposed. These controllers are not compatible with macOS so then need to be hidden from macOS and replaced with a dummy EC when running macOS Catalina. With laptops, we still need these ECs so we rename them into what macOS would expect ECs to look like * Plugin type * This is used to enable native CPU power management on **Intel** Haswell and newer CPUs, the SSDT will connect to the first thread of the CPU. Not meant for AMD * AWAC system clock. @@ -32,8 +32,8 @@ Please see the **specific ACPI section of your config.plist**, all SSDTs needed ### Desktop **Ivy Bridge:** +* [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh)(Run in Post-Install) * [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) -* [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh) **Haswell:** * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) @@ -71,7 +71,7 @@ Please see the **specific ACPI section of your config.plist**, all SSDTs needed ### Laptop **Ivy Bridge:** -* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) * [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) @@ -79,48 +79,48 @@ Please see the **specific ACPI section of your config.plist**, all SSDTs needed * [IRQ SSDT](https://github.com/corpnewt/SSDTTime) **Haswell:** +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) -* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) * [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) * [SSDT-GPIO](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-GPIO.aml) * [IRQ SSDT](https://github.com/corpnewt/SSDTTime) **Broadwell:** +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) -* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) * [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) * [SSDT-GPIO](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-GPIO.aml) * [IRQ SSDT](https://github.com/corpnewt/SSDTTime) **Skylake:** +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) -* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) * [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) * [SSDT-GPIO](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-GPIO.aml) * [IRQ SSDT](https://github.com/corpnewt/SSDTTime) **Kabylake:** +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) -* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) * [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) * [SSDT-GPIO](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-GPIO.aml) * [IRQ SSDT](https://github.com/corpnewt/SSDTTime) **Coffeelake(8th Gen):** +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) -* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) * [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) * [SSDT-GPIO](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-GPIO.aml) * [IRQ SSDT](https://github.com/corpnewt/SSDTTime) **Coffeelake(9th Gen):** +* [EC ACPI Patch](/Laptops/laptop-ec.md) * [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) -* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) * [SSDT AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) * [SSDT-PMC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl) * [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) diff --git a/Universal/awac.md b/Universal/awac.md index ea2dbe3..326060d 100644 --- a/Universal/awac.md +++ b/Universal/awac.md @@ -1,5 +1,7 @@ # Fixing System Clocks +**For Intel 300 series chipsets only** + What the [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) will do is force enable the Legacy RTC device in macOS, the reason we want to do this is that macOS currently does not support AWAC as a system clock. In some rare cases, there is no Legacy RTC device to force enable so we'll need to create a fake RTC device for macOS to play with using [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl) To determine whether you need [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) or [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl): diff --git a/Universal/xosi.md b/Universal/xosi.md index b59c0ae..569c60d 100644 --- a/Universal/xosi.md +++ b/Universal/xosi.md @@ -1,5 +1,7 @@ # Fixing I2C +Used for tricking our hardware into unlocking Windows functionality inside macOS, mainly used for I2C devices. + No configuration required, just drop the prebuilt file into your EFI: [SSDT-XOSI](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-XOSI.aml) Do note that this SSDT requires an ACPI patch as well: diff --git a/cleanup.md b/cleanup.md new file mode 100644 index 0000000..6d779c5 --- /dev/null +++ b/cleanup.md @@ -0,0 +1,20 @@ +# Cleanup + +So you've made all your SSDTs but now there's one thing left: Adding them to Opencore + +The 2 main locations: + +* EFI/OC/ACPI (Only **.aml** files) +* config.plist -> ACPI -> Add + +You can save yourself some work with the config.plist by running Cmd/Ctrl+R in ProperTree. **Reminder do not add your DSDT.aml to your EFI** + +Users of `FixHPET` will also need to merge oc_patches.plist into their config.plist + +Steps to do this: + +* Open both files, +* Delete the `ACPI -> Patch` section from config.plist +* Copy the `ACPI -> Patch` section from patches.plist +* Paste into where old patches were in config.plist + diff --git a/ssdt-easy.md b/ssdt-easy.md index 315044f..b1a550d 100644 --- a/ssdt-easy.md +++ b/ssdt-easy.md @@ -39,9 +39,9 @@ What we want to do is select option `4. Dump DSDT` first, then select the approp > What about USBX? -For Skylake+ and AMD, you can grab a prebuilt file here: [SSDT-USBX.aml](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/SSDT-USBX.aml). This file is plug and play and requires no device configuration, **do not use on Haswell and older**. +For Skylake+ and AMD, you can grab a prebuilt file here: [SSDT-USBX.aml](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/SSDT-USBX.aml). This file is plug and play and requires no device configuration, **do not use on Broadwell and older**. -**Troubleshooting note**: See [General Troubleshooting](/troubleshooting/troubleshooting).md if you're having issues running SSDTTime +**Troubleshooting note**: See [General Troubleshooting](https://khronokernel.github.io/Opencore-Vanilla-Desktop-Guide/troubleshooting/troubleshooting.html) if you're having issues running SSDTTime ## Adding to OpenCore @@ -49,9 +49,9 @@ Don't forget that SSDTs need to be added to Opencore, eminder that .aml is compl * EFI/OC/ACPI * config.plist -> ACPI -> Add -Reminder that Cmd/Crtl+R with ProperTree pointed at your OC folder will add all your SSDTs, kexts and .efi drivers to the config for you. Do not add your DSDT to OpenCore, its already in your firmware +Reminder that Cmd/Crtl+R with ProperTree pointed at your OC folder will add all your SSDTs, kexts and .efi drivers to the config for you. **Do not add your DSDT to OpenCore, its already in your firmware** -Users of `FixHPET` will also need to merge c_patches.plist into their config.plist +Users of `FixHPET` will also need to merge oc_patches.plist into their config.plist Steps to do this: diff --git a/ssdt-long.md b/ssdt-long.md index fbafb3b..c7edbd3 100644 --- a/ssdt-long.md +++ b/ssdt-long.md @@ -7,4 +7,5 @@ Well sadly some things are not handled by SSDTTime, well have no fear as making * Make SSDTs based of of it * Compile SSDTs -Now contnue forth and master the ways of ACPI! +Now continue forth and master the ways of ACPI! +