Massive overhaul(hopefully helps new users a bti)
@@ -1,4 +1,13 @@
|
|||||||
# Disabling unsupported GPUs(Desktops)
|
# Disabling desktops unsupported GPUs(SSDT-GPU-DISABLE)
|
||||||
|
|
||||||
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
* [Prebuilt](#prebuilts)
|
||||||
|
* [SSDTTime](#ssdttime)
|
||||||
|
* [Manual](#manual)
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
|
||||||
So this is mainly needed for GPUs that are not supported in macOS, mainly this will be Nvidia users who wish to pair an AMD GPU for macOS use. While WhateverGreen does support the boot-arg `-wegnoegpu`, this only works when running on iGPU so for the rest of us we'll need to make an SSDT.
|
So this is mainly needed for GPUs that are not supported in macOS, mainly this will be Nvidia users who wish to pair an AMD GPU for macOS use. While WhateverGreen does support the boot-arg `-wegnoegpu`, this only works when running on iGPU so for the rest of us we'll need to make an SSDT.
|
||||||
|
|
||||||
|
|||||||
@@ -2,120 +2,3 @@
|
|||||||
# Fixing Embedded Controller (Desktop)
|
# Fixing Embedded Controller (Desktop)
|
||||||
|
|
||||||
## You'll want to go to [SSDT-EC under the Universal tab](/Universal/desktop-ec.md) for the new SSDT-EC page
|
## You'll want to go to [SSDT-EC under the Universal tab](/Universal/desktop-ec.md) for the new SSDT-EC page
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
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 newer and all AMD systems
|
|
||||||
* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl)
|
|
||||||
* For Broadwell and older
|
|
||||||
|
|
||||||
```text
|
|
||||||
/* <- REMOVE THIS
|
|
||||||
External (_SB_.PCI0.LPCB.EC0, DeviceObj) <- Rename this
|
|
||||||
|
|
||||||
Scope (\_SB.PCI0.LPCB.EC0) <- Rename this
|
|
||||||
{
|
|
||||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin")) // Darwin = macOS
|
|
||||||
{
|
|
||||||
Return (0) // Hides our real EC only when in macOS
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (0x0F)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/ <- 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 vs 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**.
|
|
||||||
|
|
||||||
* Finding the LowPinCount path:
|
|
||||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
|
||||||
* AMD: Search `Name (_ADR, 0x00140003)`
|
|
||||||
* Finding the PCI path:
|
|
||||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
|
||||||
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
|
|
||||||
|
|
||||||
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 `Device (EC)`**, this is our fake EC we're using for macOS to play with so leave `Device (EC)` alone. **Just change the path!**
|
|
||||||
|
|
||||||
> What happens if multiple `PNP0C09` show up
|
|
||||||
|
|
||||||
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` (Hardware ID)
|
|
||||||
* `_CRS` (Current Resource Settings)
|
|
||||||
* `_GPE` (General Purpose Events)
|
|
||||||
|
|
||||||
Note if you have an STA Method as well, see below: [STA Edge Case](/Desktops/desktop-ec.md#sta-edge-case)
|
|
||||||
|
|
||||||
> What happens if no `PNP0C09` show up?
|
|
||||||
|
|
||||||
So what this means: EC faking is not mandatory for booting, instead only **recommended for proper USB power**.
|
|
||||||
|
|
||||||
So how do I make an SSDT without an EC? Well we'll only create a Fake EC for macOS to play with, this allows for AppleBusPowerController to load and handle our USB properly. To make the actual SSDT, its *almost* plug and play as no uncommenting needed. The main thing that needs to be changed:
|
|
||||||
|
|
||||||
* LowPinCount path
|
|
||||||
* PCI path
|
|
||||||
|
|
||||||
We want to make sure the SSDT hooks into our DSDT correctly so we need to make sure the ACPI path is correct:
|
|
||||||
|
|
||||||
* Finding the LowPinCount path:
|
|
||||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
|
||||||
* AMD: Search `Name (_ADR, 0x00140003)`
|
|
||||||
* Finding the PCI path:
|
|
||||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
|
||||||
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Once you find out, change `PCI0.LPCB` to your correct path:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Scope (\_SB.PC00.LPC0) <- Rename this
|
|
||||||
{
|
|
||||||
Device (EC) <- DO NOT RENAME THIS
|
|
||||||
{
|
|
||||||
Name (_HID, "ACID0001") // _HID: Hardware ID
|
|
||||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin"))
|
|
||||||
{
|
|
||||||
Return (0x0F) // Enable our Fake EC only when in macOS
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (Zero)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
For those having issues, you can also check `Device Manager -> CPU -> BIOS device Name`. Windows will only report the main EC so will save you some headache on that
|
|
||||||
|
|
||||||
## STA Edge Case
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Do note that if your PNP0C09 device has a `Method (_STA` already you can skip down to "What happens if no `PNP0C09` show up?".
|
|
||||||
The reason for this is that the real EC is considered disabled already.
|
|
||||||
|
|
||||||
## Correcting USB Power
|
|
||||||
|
|
||||||
> Hey what about USBX? Do I need to do anything?
|
|
||||||
|
|
||||||
USBX is universal across all systems, it just creates a USBX device that forces USB power properties. This is crucial for fixing Mics, DACs, Webcams, Bluetooth Dongles and other high power draw devices. This is not mandatory to boot but should be added in post-install if not before. Note that USBX is only used on skylake+ systems, Broadwell and older can ignore and that USBX requires a patched EC to function correctly
|
|
||||||
|
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
|
|||||||
68
Laptops/backlight-methods/manual.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# Fixing Backlight: Manual
|
||||||
|
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
## Finding the ACPI path
|
||||||
|
|
||||||
|
For this guide, we're gonna assume Windows is already on this laptop, as otherwise creating this SSDT is a bit more difficult.
|
||||||
|
|
||||||
|
Now open DeviceManager, and head to the following:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Device Manager -> Display Adapters -> Properties -> Details > BIOS device name
|
||||||
|
```
|
||||||
|
|
||||||
|
* Note some GPU ACPI pathing may be hiding under "BIOS device name"
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
From the above example, we can see our display is hooked up to `PCI0.GFX0`
|
||||||
|
|
||||||
|
## Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||||
|
|
||||||
|
* [SSDT-PNLF.dsl](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl)
|
||||||
|
* [SSDT-PNLF-CFL.dsl](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-PNLF-CFL.dsl.zip)
|
||||||
|
* For Coffee Lake and newer
|
||||||
|
|
||||||
|
By default, this uses `PCI0.GFX0` for the pathing. you'll want to rename accordingly. For this example, we'll assume your pathing is `PCI0.GPU0`:
|
||||||
|
|
||||||
|
**Before**:
|
||||||
|
|
||||||
|
```
|
||||||
|
External (_SB_.PCI0.GFX0, DeviceObj) <- Rename this
|
||||||
|
|
||||||
|
Scope (_SB.PCI0.GFX0) <- Rename this
|
||||||
|
|
||||||
|
Device(_SB.PCI0.GFX0.PNLF) <- Rename this
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Following the example pathing we found, the SSDT should look something like this:
|
||||||
|
|
||||||
|
**After**:
|
||||||
|
|
||||||
|
```
|
||||||
|
External (_SB_.PCI0.GPU0, DeviceObj) <- Renamed
|
||||||
|
|
||||||
|
Scope (_SB.PCI0.GPU0) <- Renamed
|
||||||
|
|
||||||
|
Device(_SB.PCI0.GPU0.PNLF) <- Renamed
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
16
Laptops/backlight-methods/prebuilt.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Fixing Backlight: Prebuilt
|
||||||
|
|
||||||
|
By far the easiest method, all you need to do is download the following file:
|
||||||
|
|
||||||
|
* [SSDT-PNLF.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF.aml)\
|
||||||
|
* For most users
|
||||||
|
* [SSDT-PNLF-CFL.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF-CFL.aml)
|
||||||
|
* For Coffee Lake and newer
|
||||||
|
|
||||||
|
|
||||||
|
Main things to note with this method:
|
||||||
|
|
||||||
|
* Assumes GPU pathing, works great for 99% of devices but if you're having issues controlling backlight this may be something to look at
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
@@ -1,22 +1,15 @@
|
|||||||
# Fixing Backlight
|
# Fixing Backlight (SSDT-PNLF)
|
||||||
|
|
||||||
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
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
No configuration required for most, just drop the pre-built file into your EFI:
|
## What this SSDT does
|
||||||
|
|
||||||
* [SSDT-PNLF](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF.aml)
|
The purpose of this SSDT is to create a PNLF device for macOS to play with, specifically one with a hardware ID of `APP0002`. Luckily WhateverGreen will handle the rest of the work for us.
|
||||||
* For most users
|
|
||||||
* [SSDT-PNLF-CFL](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PNLF-CFL.aml)
|
|
||||||
* For Coffee Lake and newer
|
|
||||||
|
|
||||||
Note: there are some rare cases where the iGPU is called `GPU0` or `VID`in the DSDT, you can double check by searching for `PCI0.GFX0`, `PCI0.VID` and `PCI0.GPU0`. Whichever shows up is your device
|
## Methods to make this SSDT
|
||||||
|
|
||||||
If Windows has been installed on the device, you can also do the following:
|
For the backlight fix, there are 2 methods you can choose from:
|
||||||
|
|
||||||
```text
|
* [Prebuilt](/Laptops/backlight-methods/prebuilt.md)
|
||||||
Device Manager -> Display Adapters -> Properties -> Details > BIOS device name
|
* [Manual](/Laptops/backlight-methods/manual.md)
|
||||||
```
|
|
||||||
|
|
||||||
* Note some GPUs may be hiding under "BIOS device name"
|
|
||||||
|
|
||||||

|
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
# Disabling laptop dGPUs
|
# Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx)
|
||||||
|
|
||||||
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
* [Prebuilt](#prebuilts)
|
||||||
|
* [SSDTTime](#ssdttime)
|
||||||
|
* [Manual](#manual)
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
|
||||||
So with laptops, we can hide the dGPU from macOS with the little boot-arg called `-wegnoegpu` from WhateverGreen. But one small problem, the dGPU is still pulling power draining your battery slowly. We'll be going over 2 methods for disabling the dGPU in a laptop:
|
So with laptops, we can hide the dGPU from macOS with the little boot-arg called `-wegnoegpu` from WhateverGreen. But one small problem, the dGPU is still pulling power draining your battery slowly. We'll be going over 2 methods for disabling the dGPU in a laptop:
|
||||||
|
|
||||||
|
|||||||
@@ -1,54 +1,3 @@
|
|||||||
# Fixing Embedded Controller (Laptop)
|
# Fixing Embedded Controller (Laptop)
|
||||||
|
|
||||||
## You'll want to go to [SSDT-EC under the Universal tab](/Universal/desktop-ec.md) for the new SSDT-EC page
|
## You'll want to go to [SSDT-EC under the Universal tab](/Universal/desktop-ec.md) for the new SSDT-EC page
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
As you can see our `PNP0C09` is found within the `Device (EC0)` meaning this is the device we want to rename.
|
|
||||||
|
|
||||||
> What happens if multiple `PNP0C09` show up
|
|
||||||
|
|
||||||
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` (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.
|
|
||||||
|
|
||||||
> What if my main `PNP0C09` device is already called `Device (EC)`?
|
|
||||||
|
|
||||||
Mainly relevant for Lenovo and a few other OEMs, when this happens that means that your Embedded Controller is ready to use in macOS! Do make sure that this `Device (EC)` is actually your main EC and not a secondary one.
|
|
||||||
|
|
||||||
**And please verify that the DSDT hasn't already been patched by Clover or OpenCore**, please dump it without booting either of them to be sure or triple check that there aren't any EC renames in your config already
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
For those having issues, you can also check `Device Manager -> Embedded Controller -> BIOS device Name`. Widows will only report the main EC so will save you some headache on that
|
|
||||||
|
|
||||||
# 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 which is the main EC first, as **this can cause actual damage to your laptop.**
|
|
||||||
|
|
||||||
|Comment|Find\*\[HEX\]|Replace\[HEX\]|
|
|
||||||
|:-|:-|:-|
|
|
||||||
|change EC0 to EC|4543305f|45435f5f|
|
|
||||||
|change H\_EC to EC|485f4543|45435f5f|
|
|
||||||
|change ECDV to EC|45434456|45435f5f|
|
|
||||||
|change PGEC to EC|50474543|45435f5f|
|
|
||||||
|
|
||||||
## Inside your config
|
|
||||||
|
|
||||||
| Comment | String | Change XXXX to EC |
|
|
||||||
| :--- | :--- | :--- |
|
|
||||||
| Enabled | String | YES |
|
|
||||||
| Count | Number | 0 |
|
|
||||||
| Limit | Number | 0 |
|
|
||||||
| Find | Data | xxxxxxxx |
|
|
||||||
| Replace | Data | xxxxxxxx |
|
|
||||||
|
|
||||||

|
|
||||||
|
|||||||
83
Laptops/trackpad-methods/manual.md
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# Fixing Trackpads: Manual
|
||||||
|
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
|
||||||
|
## Finding the ACPI path
|
||||||
|
|
||||||
|
Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||||
|
|
||||||
|
Next search for `Device (GPI0)`. Should give you a result similar to this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
What we care about from this is the `_STA` method:
|
||||||
|
|
||||||
|
```
|
||||||
|
Method (_STA, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
If ((GPHD == One))
|
||||||
|
{
|
||||||
|
Return (0x03)
|
||||||
|
}
|
||||||
|
|
||||||
|
Return (0x0F)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
What we want is for this to always return `0x0F` when booting macOS, so we want to make an SSDT that will return `GPHD == Zero` in macOS.
|
||||||
|
|
||||||
|
**NOTE that you may have the other way around where GPHD needs to be set as `One` to return `0x0F`**. And your device name may also be different, don't throw random SSDTs in thinking it'll work
|
||||||
|
|
||||||
|
Here's some more examples:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
With this example, we can see that we need both `SBRG` and `GPEN` to return `One`. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return `One`:
|
||||||
|
|
||||||
|
|
||||||
|
## Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||||
|
|
||||||
|
* [SSDT-GPI0.dsl](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPI0.dsl)
|
||||||
|
|
||||||
|
From the second example, we'll want to set both GPEN and SBRG to `One` to allow it to operate in macOS:
|
||||||
|
|
||||||
|
**Before**:
|
||||||
|
|
||||||
|
```
|
||||||
|
If (_OSI ("Darwin"))
|
||||||
|
{
|
||||||
|
GPEN = One <- Change to the right variables
|
||||||
|
SBRG = One <- Change to the right variables
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Following the example pathing we found, the SSDT should look something like this:
|
||||||
|
|
||||||
|
**After**:
|
||||||
|
|
||||||
|
```
|
||||||
|
If (_OSI ("Darwin"))
|
||||||
|
{
|
||||||
|
GPEN = One <- Proper variables
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
15
Laptops/trackpad-methods/prebuilt.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Fixing Trackpads: Prebuilt
|
||||||
|
|
||||||
|
This is a one-size fits all solution where we basically trick our hardware into thinking it's booting Windows. The problem with this method is that it's common to break Windows booting so avoid unless troubleshooting.
|
||||||
|
|
||||||
|
* [SSDT-XOSI](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-XOSI.aml)
|
||||||
|
|
||||||
|
* XOSI Rename(add this under config.plist -> ACPI -> Patch):
|
||||||
|
|
||||||
|
| Comment | String | Change _OSI to XOSI |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| Enabled | Boolean | YES |
|
||||||
|
| Count | Number | 0 |
|
||||||
|
| Limit | Number | 0 |
|
||||||
|
| Find | Data | 5f4f5349 |
|
||||||
|
| Replace | Data | 584f5349 |
|
||||||
@@ -1,70 +1,18 @@
|
|||||||
# Fixing Trackpads
|
# Fixing Trackpads (SSDT-GPI0/XOSI)
|
||||||
|
|
||||||
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
|
|
||||||
|
## What this SSDT does
|
||||||
|
|
||||||
This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.
|
This SSDT is used to force enable our GPI0 for VoodooI2C to connect onto.
|
||||||
|
|
||||||
With most modern laptop DSDTs, there's a variable called `GPEN` or `GPHD` which are used for setting the status of the GPI0 device. For us, we want to enable the device.
|
With most modern laptop DSDTs, there's a variable called `GPEN` or `GPHD` which are used for setting the status of the GPI0 device. For us, we want to enable the device.
|
||||||
|
|
||||||
## Finding our GPI0
|
## Methods to make this SSDT
|
||||||
|
|
||||||
So first things we need to do is find out what variable is used to enable our GPI0 device, lets open up our decompiled SSDT and search for `Device (GPI0)`. Should give you a desult similar to this:
|
For the trackpad fix, there are 2 methods you can choose from:
|
||||||
|
|
||||||

|
* [Prebuilt](/Laptops/trackpad-methods/prebuilt.md)
|
||||||
|
* [Manual](/Laptops/trackpad-methods/manual.md)
|
||||||
What we care about from this is the `_STA` method:
|
|
||||||
|
|
||||||
```
|
|
||||||
Method (_STA, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
If ((GPHD == One))
|
|
||||||
{
|
|
||||||
Return (0x03)
|
|
||||||
}
|
|
||||||
|
|
||||||
Return (0x0F)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
What we want is for this to always return `0x0F` when booting macOS, so we want to make an SSDT that will return `GPHD == Zero` in macOS.
|
|
||||||
|
|
||||||
**NOTE that you may have the other way around where GPHD needs to be set as `One` to return `0x0F`**. And your device name may also be different, don't throw random SSDTs in thinking it'll work
|
|
||||||
|
|
||||||
Once you found the variable and what it should be set to, grab a copy of [SSDT-GPI0.dsl](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPI0.dsl) and make the required edits. Then clean up with compiling it
|
|
||||||
|
|
||||||
## More examples
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
With this example, we can see that we need both `SBRG` and `GPEN` to return `One`. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return `One`:
|
|
||||||
|
|
||||||
```
|
|
||||||
DefinitionBlock("", "SSDT", 2, "ACDT", "GPI0", 0)
|
|
||||||
{
|
|
||||||
External(GPEN, FieldUnitObj)
|
|
||||||
External(SBRG, FieldUnitObj)
|
|
||||||
|
|
||||||
Scope (\)
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin"))
|
|
||||||
{
|
|
||||||
GPEN = One
|
|
||||||
SBRG = One
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## GPIO Troubleshooting
|
|
||||||
|
|
||||||
So if you're still having issues enabling your trackpad in macOS, you can try removing SSDT-GPIO and instead swap for the following. Note that using these 2 will most likely break Windows and Linux so only use XOSI when troubleshooting:
|
|
||||||
|
|
||||||
* [SSDT-XOSI](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-XOSI.aml)
|
|
||||||
|
|
||||||
* XOSI Rename:
|
|
||||||
|
|
||||||
| Comment | String | Change _OSI to XOSI |
|
|
||||||
| :--- | :--- | :--- |
|
|
||||||
| Enabled | Boolean | YES |
|
|
||||||
| Count | Number | 0 |
|
|
||||||
| Limit | Number | 0 |
|
|
||||||
| Find | Data | 5f4f5349 |
|
|
||||||
| Replace | Data | 584f5349 |
|
|
||||||
|
|||||||
15
SUMMARY.md
@@ -22,18 +22,33 @@
|
|||||||
## Laptop
|
## Laptop
|
||||||
|
|
||||||
* [Backlight PNLF](/Laptops/backlight.md)
|
* [Backlight PNLF](/Laptops/backlight.md)
|
||||||
|
* [Prebuilt](/Laptops/backlight-methods/prebuilt.md)
|
||||||
|
* [Manual](/Laptops/backlight-methods/manual.md)
|
||||||
* [Trackpad GPI0](/Laptops/trackpad.md)
|
* [Trackpad GPI0](/Laptops/trackpad.md)
|
||||||
|
* [Prebuilt](/Laptops/trackpad-methods/prebuilt.md)
|
||||||
|
* [Manual](/Laptops/trackpad-methods/manual.md)
|
||||||
* [Disabling laptop dGPUs](/Laptops/laptop-disable.md)
|
* [Disabling laptop dGPUs](/Laptops/laptop-disable.md)
|
||||||
|
|
||||||
## Universal
|
## Universal
|
||||||
|
|
||||||
* [Embedded Controller](/Universal/ec-fix.md)
|
* [Embedded Controller](/Universal/ec-fix.md)
|
||||||
|
* [Prebuilt](/Universal/ec-methods/prebuilt.md)
|
||||||
|
* [SSDTTime](/Universal/ec-methods/ssdttime.md)
|
||||||
|
* [Manual](/Universal/ec-methods/manual.md)
|
||||||
* [Plugin type](/Universal/plug.md)
|
* [Plugin type](/Universal/plug.md)
|
||||||
|
* [Prebuilt](/Universal/plug-methods/prebuilt.md)
|
||||||
|
* [SSDTTime](/Universal/plug-methods/ssdttime.md)
|
||||||
|
* [Manual](/Universal/plug-methods/manual.md)
|
||||||
* [AWAC vs RTC](/Universal/awac.md)
|
* [AWAC vs RTC](/Universal/awac.md)
|
||||||
|
* [Prebuilt](/Universal/awac-methods/prebuilt.md)
|
||||||
|
* [Manual](/Universal/awac-methods/manual.md)
|
||||||
* [NVRAM PMC](/Universal/nvram.md)
|
* [NVRAM PMC](/Universal/nvram.md)
|
||||||
|
* [Prebuilt](/Universal/nvram-methods/prebuilt.md)
|
||||||
|
* [Manual](/Universal/nvram-methods/manual.md)
|
||||||
* [IRQ Fix](/Universal/irq.md)
|
* [IRQ Fix](/Universal/irq.md)
|
||||||
* [GPU Spoof](/Universal/spoof.md)
|
* [GPU Spoof](/Universal/spoof.md)
|
||||||
* [Fixing SMBus Support](/Universal/smbus.md)
|
* [Fixing SMBus Support](/Universal/smbus.md)
|
||||||
|
* [Manual](/Universal/smbus-methods/manual.md)
|
||||||
|
|
||||||
## Cleanup
|
## Cleanup
|
||||||
|
|
||||||
|
|||||||
114
Universal/awac-methods/manual.md
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
# Fixing System Clocks: Manual
|
||||||
|
|
||||||
|
* [Determining which SSDT you need](#determining-which-ssdt-you-need)
|
||||||
|
* [RTC0 Method](#rtc0-method)
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
## Determining which SSDT you need
|
||||||
|
|
||||||
|
Finding which SSDT you need is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||||
|
|
||||||
|
Next search for `ACPI000E`. You should get something similar:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The above tells us a few things:
|
||||||
|
|
||||||
|
* We in fact do have an AWAC clock
|
||||||
|
* It can be easily disabled with STAS(if not, you can skip to here: [RTC0 Method](#rtc0-method))
|
||||||
|
* `_STA` is the device status, with `Zero` meaning it won't show up
|
||||||
|
|
||||||
|
But to double check, next search for `PNP0B00`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
And looks at that, we can in fact disable our AWAC and enable the RTC! If not skip to here: [RTC0 Method](#rtc0-method)
|
||||||
|
|
||||||
|
Now it's as simple as grabbing [SSDt-AWAC.dsl]() and [compile](#compiling-the-ssdt), no changes needed You can also use the below SSDT to the same effect:
|
||||||
|
|
||||||
|
* [SSDT-AWAC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml)
|
||||||
|
|
||||||
|
### _INI Edge Cases
|
||||||
|
|
||||||
|
Mainly seen on X299 refresh boards, there's already a `Scope (_SB) { Method (_INI...` in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove `Method (_INI, 0, NotSerialized) {}` from the SSDT. You'll be left this this in the end:
|
||||||
|
|
||||||
|
```
|
||||||
|
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000)
|
||||||
|
{
|
||||||
|
External (STAS, IntObj)
|
||||||
|
|
||||||
|
Scope (_SB)
|
||||||
|
{
|
||||||
|
If (_OSI ("Darwin"))
|
||||||
|
{
|
||||||
|
STAS = One
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## RTC0 Method
|
||||||
|
|
||||||
|
This method is for those who either don't have a `PNP0B00` device to re-enable or have no easy way(via STAS variable).
|
||||||
|
|
||||||
|
### Finding the ACPI path
|
||||||
|
|
||||||
|
Assuming you've gotten your DSDT already opened from earlier, search for the following:
|
||||||
|
|
||||||
|
* Finding the LowPinCount path:
|
||||||
|
* Search `Name (_ADR, 0x001F0000)`
|
||||||
|
* Finding the PCI path:
|
||||||
|
* Search `PNP0A08` (If multiple show up, use the first one)
|
||||||
|
|
||||||
|
You should get something like the following show up:
|
||||||
|
|
||||||
|
LPC Pathing | PCI Pathing
|
||||||
|
:-------------------------:|:-------------------------:
|
||||||
|
 | 
|
||||||
|
|
||||||
|
From the above, we can see we have both `PCI0` and `LPC`. Now we can head to the next stage
|
||||||
|
|
||||||
|
### Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||||
|
|
||||||
|
* [SSDT-RTC0.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl)
|
||||||
|
|
||||||
|
By default, this uses `PCI0.LPCB` for the pathing. you'll want to rename accordingly.
|
||||||
|
|
||||||
|
Following the example from above, we'll be renaming it to `PCI0.LPC`:
|
||||||
|
|
||||||
|
**Before**:
|
||||||
|
|
||||||
|
```
|
||||||
|
External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
|
||||||
|
|
||||||
|
Scope (_SB.PCI0.LPCB) <- Rename this
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Following the example pathing we found, the SSDT should look something like this:
|
||||||
|
|
||||||
|
**After**:
|
||||||
|
|
||||||
|
```
|
||||||
|
External (_SB_.PCI0.LPC, DeviceObj) <- Renamed
|
||||||
|
|
||||||
|
Scope (_SB.PCI0.LPC) <- Renamed
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
17
Universal/awac-methods/prebuilt.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Fixing System Clocks: Prebuilt
|
||||||
|
|
||||||
|
By far the easiest method, all you need to do is download the following file:
|
||||||
|
|
||||||
|
* [SSDT-AWAC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml)
|
||||||
|
|
||||||
|
Main things to note with this method:
|
||||||
|
|
||||||
|
* Assumes you both have an AWAC clock and it can be easily turned off with the RTC replacing it, **this may not always work**
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
# Fixing System Clocks
|
# Fixing System Clocks (SSDT-AWAC/RTC0)
|
||||||
|
|
||||||
**For Intel 300 series chipsets and newer**, this also includes X299 refreshes and Icelake laptops. Common machines:
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
|
## What this SSDT does
|
||||||
|
|
||||||
|
The purpose of SSDT-AWAC/RTC0 is to fix the system clocks found on newer hardware, maily found in the following:
|
||||||
|
|
||||||
* X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check)
|
|
||||||
* B360
|
* B360
|
||||||
* B365
|
* B365
|
||||||
* H310
|
* H310
|
||||||
@@ -11,58 +15,15 @@
|
|||||||
* Z390
|
* Z390
|
||||||
* B460
|
* B460
|
||||||
* Z490
|
* Z490
|
||||||
* 400 series (Cometlake)
|
* 400 series (Comet Lake, including Z490)
|
||||||
* 495 series (Icelake)
|
* 495 series (Icelake)
|
||||||
|
* X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check)
|
||||||
|
|
||||||
So on newer Intel 300 series motherboards, manufactures started pushing for a new type of system clock: **AWAC**( **A** **W**eird **A**ss **C**lock). One small problem, macOS doesn't know what the hell an AWAC clock is instead only familiar with the legacy **RTC**(**R**eal **T**ime **C**lock). So we need to figure out how to bring back the old clock, thats where `SSDT-AWAC` and `SSDT-RTC0` come in:
|
SSDT-AWAC tries to re-enable the old RTC clock that is compatible with macOS, while SSDT-RTC0 will instead create a "fake" RTC clock if there is no legacy one to enable.
|
||||||
|
|
||||||
* [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl)
|
## Methods to make this SSDT
|
||||||
* Disables AWAC and enables RTC
|
|
||||||
* In your DSDT, there's a variable called `STAS` used for holding either a `One` or `Zero` to determine which clock to use(`One` for RTC and `Zero` for AWAC)
|
|
||||||
|
|
||||||
* [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl)
|
For the RTC fix, there are 2 methods you can choose from:
|
||||||
* Used for creating a fake RTC device for macOS to play with
|
|
||||||
* In very rare circumstances, some DSDTs may not have a legacy RTC to fall back on. When this happens, we'll want to create a fake device to make macOS happy
|
|
||||||
|
|
||||||
Note: AWAC actually stands for ACPI Wake Alarm Counter/Clock for those curious, though I'll forever know it as A Weird Ass Clock ;p
|
* [Prebuilt](/Universal/awac-methods/prebuilt.md)
|
||||||
|
* [Manual](/Universal/awac-methods/manual.md)
|
||||||
## Determining which SSDT you need
|
|
||||||
|
|
||||||
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):
|
|
||||||
|
|
||||||
* open your decompiled DSDT and search for `Device (AWAC)`
|
|
||||||
* If **nothing shows up** then no need to continue and **no need for this SSDT** as you have no AWAC. **Otherwise, continue on!**
|
|
||||||
* If you get a result then you have an `AWAC` system clock present, then continue with the **next search for `STAS`**:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
As you can see we found the `STAS` in our DSDT, this means we're able to force enable our Legacy RTC. In this case, [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) will be used As-Is with no modifications required. Just need to compile. Note that `STAS` may be found in AWAC first instead of RTC like in our example, this is normal.
|
|
||||||
|
|
||||||
For systems where **no `STAS`** shows up **but** you do have `AWAC`, you can use [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl) though you will need to check the naming of LPC in your DSDT
|
|
||||||
|
|
||||||
By default the SSDT uses `LPCB`, you can check what your system uses by just searching for `Name (_ADR, 0x001F0000)`. This address is used for Low Pin Count devices(LPC) but the device name can vary between `LPCB`, `LBC` or `LBC0`:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## _INI Edge Cases
|
|
||||||
|
|
||||||
Mainly seen on X299 refresh boards, there's already a `Scope (_SB) { Method (_INI...` in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove `Method (_INI, 0, NotSerialized) {}` from the SSDT. You'll be left this this in the end:
|
|
||||||
|
|
||||||
```
|
|
||||||
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000)
|
|
||||||
{
|
|
||||||
External (STAS, IntObj)
|
|
||||||
|
|
||||||
Scope (_SB)
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin"))
|
|
||||||
{
|
|
||||||
STAS = One
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
You can find a prebuilt of this here: [SSDT-AWAC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml)
|
|
||||||
|
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
|
|||||||
@@ -1,181 +1,29 @@
|
|||||||
|
# Fixing Embedded Controller (SSDT-EC/USBX)
|
||||||
|
|
||||||
# Fixing Embedded Controller
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
What we'll be doing is creating a fake Embedded Controller (EC) to satisfy macOS Catalina's EC addiction, and disabling the EC on desktops to prevent panics and crashes.
|
## What this SSDT does
|
||||||
|
|
||||||
## Quick Fix
|
The purpose of SSDT-EC/UBX is a couple things:
|
||||||
|
|
||||||
What quick fix refers to is a fancy little SSDT that actually determines what EC needs to be turned off and creates a fake EC. The problem with this SSDT is it has a lot of bloat and can result in extra time in booting, so for this guide we **highly** recommends creating your own SSDT.
|
* On desktops, the EC(or better known as the embedded controller) isn't compatible with AppleACPIEC driver, to get around this we disable this device when running macOS
|
||||||
|
* AppleBusPowerController will look for a device named `EC`, so we will want to create a fake device for this kext to load onto
|
||||||
|
* AppleBusPowerController also requires a USBX device to supply USB power properties for Skylake and newer, so we will bundle this device in with the EC fix
|
||||||
|
* On laptops, the EC is used for hotkeys and battery so disabling this isn't all too ideal. Problem is our EC's name isn't compatible, so we will create a simple "fake" EC device that will satisfy Apple
|
||||||
|
|
||||||
For desktops, you can grab either one of these pre-compiled SSDT files:
|
So TL;DR:
|
||||||
|
|
||||||
* [SSDT-EC-USBX-DESKTOP](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml)
|
* EC is embedded controller
|
||||||
* For Skylake and newer and all AMD systems
|
* Desktops will want real EC off, and a fake EC created
|
||||||
* [SSDT-EC-DESKTOP](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-DESKTOP.aml)
|
* Laptops will just want an additional fale EC present
|
||||||
* For Broadwell and older
|
* Skylake and newer devices will want USBX as well
|
||||||
|
|
||||||
For laptops, you'll can use one of these pre-builts:
|
## Methods to make this SSDT
|
||||||
|
|
||||||
* [SSDT-EC-USBX-LAPTOP.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml)
|
For the EC fix, there are 3 methods you can choose from:
|
||||||
* For Skylake and newer
|
|
||||||
* [SSDT-EC-LAPTOP.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-LAPTOP.aml)
|
|
||||||
* For Broadwell and older
|
|
||||||
|
|
||||||
## Proper Fix
|
* [Prebuilt](/Universal/ec-methods/prebuilt.md)
|
||||||
|
* [SSDTTime](/Universal/ec-methods/ssdttime.md)
|
||||||
To properly patch your EC, we're gonna need some files:
|
* Note this method does not support **laptops**, **servers** or **HEDT systems**
|
||||||
|
* [Manual](/Universal/ec-methods/manual.md)
|
||||||
* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl)
|
|
||||||
* For Skylake and newer and all AMD systems
|
|
||||||
* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl)
|
|
||||||
* For Broadwell and older
|
|
||||||
|
|
||||||
And with these 2, you can continue below
|
|
||||||
|
|
||||||
### Fixing the Path
|
|
||||||
|
|
||||||
For Intel systems, the path is *likely* correct, though it's worth double checking. You will want to find your current EC by opening your decompiled DSDT and searching for `PNP0C09`. You should get a result similar to this:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
> Note: If your EC device happens to already be named `EC` in your DSDT, you do not need SSDT-EC at all and can move on.
|
|
||||||
|
|
||||||
As you can see, `PNP0C09` is found under the `EC0` device and `_SB.PC00.LPC0` scope. Looking at the SSDT though, this differs from the path `_SB_.PCI0.LPCB` seen within. This will need to be corrected in the SSDT to match what is found in the DSDT. Using the above image, you should get something similar to this:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Scope (\_SB.PC00.LPC0) <- Rename this
|
|
||||||
{
|
|
||||||
Device (EC) <- DO NOT RENAME THIS
|
|
||||||
{
|
|
||||||
Name (_HID, "ACID0001") // _HID: Hardware ID
|
|
||||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin"))
|
|
||||||
{
|
|
||||||
Return (0x0F) // Enable our Fake EC only when in macOS
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (Zero)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Generally, `PC00.LPC0` is most common on Intel HEDT while `PCI0.SBRG` is most common on AMD. **Always verify your path and device. DO NOT ASSUME**.
|
|
||||||
If you are having issues finding the Scope, you can use the below Hardware IDs or Addresses:
|
|
||||||
|
|
||||||
* Finding the LowPinCount path:
|
|
||||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
|
||||||
* AMD: Search `Name (_ADR, 0x00140003)`
|
|
||||||
* Finding the PCI path:
|
|
||||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
|
||||||
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
|
|
||||||
|
|
||||||
**Make sure that you do not rename `Device (EC)`. This is what macOS Catalina looks for to boot!**
|
|
||||||
|
|
||||||
**Desktop users, continue down below to disabling your actual EC. Laptops should not diable their EC**. Laptop users should follow [What happens if no `PNP0C09` show up](#what-happens-if-no-pnp0c09-show-up)
|
|
||||||
|
|
||||||
### Disabling real EC (Desktops only)
|
|
||||||
|
|
||||||
For desktops, it's preferable to disable the actual Embedded Controller as it is not supported by macOS 100% and is known to sometimes cause panics. If we use the screenshot above, we'll see that the device name is `EC0`. Other common names for ECs are `H_EC`, `ECDV`, and `EC0`. You'll want to grab your SSDT again and uncomment the `_STA` method to disable it (remove the `/*` and `*/` around it):
|
|
||||||
|
|
||||||
```text
|
|
||||||
/* <- REMOVE THIS
|
|
||||||
External (_SB_.PCI0.LPCB.EC0, DeviceObj) <- Rename this
|
|
||||||
|
|
||||||
Scope (\_SB.PCI0.LPCB.EC0) <- Rename this
|
|
||||||
{
|
|
||||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin")) // Darwin = macOS
|
|
||||||
{
|
|
||||||
Return (0) // Hides our real EC only when in macOS
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (0x0F)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/ <- REMOVE THIS
|
|
||||||
```
|
|
||||||
|
|
||||||
Like above, make sure the path is correct for the External and Scope field.
|
|
||||||
|
|
||||||
### What happens if device in the DSDT is already named `EC`
|
|
||||||
|
|
||||||
For laptops, you don't need SSDT-EC at all.
|
|
||||||
|
|
||||||
### What happens if multiple `PNP0C09` show up
|
|
||||||
|
|
||||||
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` (Hardware ID)
|
|
||||||
* `_CRS` (Current Resource Settings)
|
|
||||||
* `_GPE` (General Purpose Events)
|
|
||||||
|
|
||||||
Note if you have an STA Method as well, see below: [STA Edge Case](/Desktops/desktop-ec.md#sta-edge-case)
|
|
||||||
|
|
||||||
### What happens if no `PNP0C09` show up
|
|
||||||
|
|
||||||
This means you only need to fake an Embedded Controller rather so that AppleBusPowerController will load and handle USB power properly and continue booting. To make the actual SSDT, its *almost* plug and play as no uncommenting needed. The main thing that needs to be changed:
|
|
||||||
|
|
||||||
* LowPinCount path
|
|
||||||
* PCI path
|
|
||||||
|
|
||||||
We want to make sure the SSDT hooks into our DSDT correctly so we need to make sure the ACPI path is correct:
|
|
||||||
|
|
||||||
* Finding the LowPinCount path:
|
|
||||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
|
||||||
* AMD: Search `Name (_ADR, 0x00140003)`
|
|
||||||
* Finding the PCI path:
|
|
||||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
|
||||||
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Once you find out, change `PCI0.LPCB` to your correct path:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Scope (\_SB.PC00.LPC0) <- Rename this
|
|
||||||
{
|
|
||||||
Device (EC) <- DO NOT RENAME THIS
|
|
||||||
{
|
|
||||||
Name (_HID, "ACID0001") // _HID: Hardware ID
|
|
||||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
||||||
{
|
|
||||||
If (_OSI ("Darwin"))
|
|
||||||
{
|
|
||||||
Return (0x0F) // Enable our Fake EC only when in macOS
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (Zero)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
For those having issues, you can also check `Device Manager -> CPU -> BIOS device Name`. Windows will only report the main EC so will save you some headache on that
|
|
||||||
|
|
||||||
### STA Edge Case
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Do note that if your PNP0C09 device has a `Method (_STA` already you can skip down to "What happens if no `PNP0C09` show up?".
|
|
||||||
The reason for this is that the real EC is considered disabled already.
|
|
||||||
|
|
||||||
### Correcting USB Power
|
|
||||||
|
|
||||||
> Hey what about USBX? Do I need to do anything?
|
|
||||||
|
|
||||||
USBX is universal across all systems, it just creates a USBX device that forces USB power properties. This is crucial for fixing Mics, DACs, Webcams, Bluetooth Dongles and other high power draw devices. This is not mandatory to boot but should be added in post-install if not before.
|
|
||||||
|
|
||||||
Note that it requires a device named EC to function correctly(Which is done with our SSDT-EC) and that USBX is only used on skylake+ systems - those on Broadwell and older can ignore as Apple already suppiles USB power properties.
|
|
||||||
|
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
|
|||||||
109
Universal/ec-methods/manual.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# Fixing Embedded Controllers: Manual
|
||||||
|
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [DSDT](#DSDT)
|
||||||
|
* [DeviceManager](#devicemanager)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Edge Cases](#edge-cases)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
TO-DO:
|
||||||
|
|
||||||
|
* Finish Edge cases and sample SSDT edits
|
||||||
|
|
||||||
|
## Finding the ACPI path
|
||||||
|
|
||||||
|
To find the ACPI pathing, you have 2 methods:
|
||||||
|
|
||||||
|
* [DSDT](#DSDT)
|
||||||
|
* [DeviceManager](#devicemanager)
|
||||||
|
|
||||||
|
### DSDT
|
||||||
|
|
||||||
|
Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||||
|
|
||||||
|
Next, search for `PNP0C09`. You should get something similar:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
From the above example we see 2 main things:
|
||||||
|
|
||||||
|
* Name of our embedded controller
|
||||||
|
* In this case being `EC0`
|
||||||
|
* Pathing of our embedded controller
|
||||||
|
* `PC00.LPC0`
|
||||||
|
|
||||||
|
But now we get into edge case territory, what fun!
|
||||||
|
|
||||||
|
The main ones to check for are:
|
||||||
|
|
||||||
|
* [Multiple PNP0C09's show up](#multiple-pnp0c09s-show-up)
|
||||||
|
* [No PNP0C09 show up](#no-pnp0c09-show-up)
|
||||||
|
* [PNP0C09 already named `EC`](#pnp0c09-already-named-ec)
|
||||||
|
* [PNP0C09 already has an `_STA` method](#pnp0c09-already-has-an-sta-method)
|
||||||
|
|
||||||
|
If none of the above apply to you, you're ready for the next section:
|
||||||
|
|
||||||
|
### DeviceManager
|
||||||
|
|
||||||
|
If you already have Windows installed on this machine, finding the EC pathing is fairly easy.
|
||||||
|
|
||||||
|
Start by opening up Device Manager in Windows and looking for a device named `Embedded Controller`. Once found, click on it and select the `BIOS device Name` entry. You should get something like this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
From the above, we can see that our pathing is `SB.PC00.LPC0.EC0`
|
||||||
|
|
||||||
|
Now with the pathing, you can head here: [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
|
||||||
|
## Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||||
|
|
||||||
|
* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl)
|
||||||
|
* For Skylake and newer and all AMD systems
|
||||||
|
* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl)
|
||||||
|
* For Broadwell and older
|
||||||
|
|
||||||
|
## Edge Cases
|
||||||
|
|
||||||
|
### Multiple PNP0C09's show up
|
||||||
|
|
||||||
|
When multiple PNP0C09 show up, we need to next check for the following properties:
|
||||||
|
|
||||||
|
* `_HID` (Hardware ID)
|
||||||
|
* `_CRS` (Current Resource Settings)
|
||||||
|
* `_GPE` (General Purpose Events)
|
||||||
|
|
||||||
|
What these signify is whether this PNP0C09 device is real or not, as per the [ACPI spec](https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf).
|
||||||
|
|
||||||
|
* Note: If _STA shows up as well, you'll need to go here: [PNP0C09 already has an `_STA` method](#pnp0c09-already-has-an-sta-method)
|
||||||
|
|
||||||
|
### No PNP0C09 show up
|
||||||
|
|
||||||
|
When this happens, you'll only need to create a "dummy" EC for macOS. You'll still want to find the PCI and LPC pathing for this device.
|
||||||
|
|
||||||
|
### PNP0C09 already named `EC`
|
||||||
|
|
||||||
|
Congrats! No need to create an SSDT-EC! However you will still want USBX if you're skylake or newer.
|
||||||
|
|
||||||
|
Prebuilt can be grabbed here: [SSDT-USBX.aml](https://github.com/dortania/USB-Map-Guide/blob/master/extra-files/SSDT-USBX.aml)
|
||||||
|
|
||||||
|
### PNP0C09 already has an `_STA` method
|
||||||
|
|
||||||
|
This is the equivalent of not having an EC as we can't control it with our SSDT-EC, instead we'll need to create a "dummy" EC for macOS. You'll still want to find the PCI and LPC pathing for this device.
|
||||||
|
|
||||||
|
Example of an EC with STA already:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
30
Universal/ec-methods/prebuilt.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Fixing Embedded Controllers: Prebuilt
|
||||||
|
|
||||||
|
By far the easiest way to fix your Embedded Controller is just downloading one of the files below:
|
||||||
|
|
||||||
|
**Desktop**:
|
||||||
|
|
||||||
|
* [SSDT-EC-USBX-DESKTOP](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-DESKTOP.aml)
|
||||||
|
* For Skylake desktops and newer and AMD CPU based systems
|
||||||
|
* [SSDT-EC-DESKTOP](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-DESKTOP.aml)
|
||||||
|
* For Broadwell desktops and older
|
||||||
|
|
||||||
|
**Laptops**:
|
||||||
|
|
||||||
|
* [SSDT-EC-USBX-LAPTOP.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-USBX-LAPTOP.aml)
|
||||||
|
* For Skylake laptops and newer
|
||||||
|
* [SSDT-EC-LAPTOP.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-EC-LAPTOP.aml)
|
||||||
|
* For Broadwell laptops and older
|
||||||
|
|
||||||
|
The main things to note with this method:
|
||||||
|
|
||||||
|
* Quite Bloated
|
||||||
|
* There's ACPI naming for every type, this means there's added delays in boot times
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
27
Universal/ec-methods/ssdttime.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Fixing Embedded Controllers: SSDTTime
|
||||||
|
|
||||||
|
The second involves using SSDTTime which automates most of the process. See here on how to use it: [SSDTs: Easy Way](/ssdt-methods/ssdt-easy.md)
|
||||||
|
|
||||||
|
To get the SSDT-PLUG, run the following:
|
||||||
|
|
||||||
|
* `4. Dump DSDT` then run `2. FakeEC`
|
||||||
|
|
||||||
|
This will provide you with some files, the main one you care about is SSDT-EC**.aml**. The DSDT and .dsl are only left for referencing or verification.
|
||||||
|
|
||||||
|
The main things to note with this method:
|
||||||
|
|
||||||
|
* Doesn't work on HEDT and server hardware(ie. X99 and X299)
|
||||||
|
* While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the [Prebuilt](#prebuilts) or [Manual](#manual) method
|
||||||
|
* Doesn't work on Laptops
|
||||||
|
* Just like with HEDT, you will need to either use the [Prebuilt](#prebuilts) or [Manual](#manual) method
|
||||||
|
* Doesn't provide you the USBX property to fix power
|
||||||
|
* This can easily be fixed by using this prebuilt file in addition to SSDT-EC: [SSDT-USBX.aml](https://github.com/dortania/USB-Map-Guide/blob/master/extra-files/SSDT-USBX.aml)
|
||||||
|
* Note USBX is only needed for Skylake and newer
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
@@ -1,4 +1,13 @@
|
|||||||
# Fixing IRQ Conflicts
|
# Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist)
|
||||||
|
|
||||||
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
* [Prebuilt](#prebuilts)
|
||||||
|
* [SSDTTime](#ssdttime)
|
||||||
|
* [Manual](#manual)
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
|
||||||
So you miss having those fancy hot-patches from Clover like FixIPIC, FixTMR, FixRTC, FixHPET, etc
|
So you miss having those fancy hot-patches from Clover like FixIPIC, FixTMR, FixRTC, FixHPET, etc
|
||||||
|
|
||||||
|
|||||||
67
Universal/nvram-methods/manual.md
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# Fixing NVRAM: Manual
|
||||||
|
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
## Finding the ACPI path
|
||||||
|
|
||||||
|
Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||||
|
|
||||||
|
Next, search for the following:
|
||||||
|
|
||||||
|
* Finding the LowPinCount path:
|
||||||
|
* Search `Name (_ADR, 0x001F0000)`
|
||||||
|
* Finding the PCI path:
|
||||||
|
* Search `PNP0A08` (If multiple show up, use the first one)
|
||||||
|
|
||||||
|
You should get something like the following show up:
|
||||||
|
|
||||||
|
LPC Pathing | PCI Pathing
|
||||||
|
:-------------------------:|:-------------------------:
|
||||||
|
 | 
|
||||||
|
|
||||||
|
Now with the pathing, you can head here: [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
|
||||||
|
## Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||||
|
|
||||||
|
* [SSDT-PMC.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl)
|
||||||
|
|
||||||
|
By default, this uses `PCI0.LPCB` for the pathing. you'll want to rename accordingly.
|
||||||
|
|
||||||
|
Following the example from above, we'll be renaming it to `PCI0.LPC`:
|
||||||
|
|
||||||
|
**Before**:
|
||||||
|
|
||||||
|
```
|
||||||
|
External (_SB_.PCI0.LPCB, DeviceObj) <- Rename this
|
||||||
|
|
||||||
|
Scope (_SB.PCI0.LPCB) <- Rename this
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Following the example pathing we found, the SSDT should look something like this:
|
||||||
|
|
||||||
|
**After**:
|
||||||
|
|
||||||
|
```
|
||||||
|
External (_SB_.PCI0.LPC, DeviceObj) <- Renamed
|
||||||
|
|
||||||
|
Scope (_SB.PCI0.LPC) <- Renamed
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
18
Universal/nvram-methods/prebuilt.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Fixing NVRAM: Prebuilt
|
||||||
|
|
||||||
|
By far the easiest method, all you need to do is download the following file:
|
||||||
|
|
||||||
|
* [SSDT-PMC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PMC.aml)
|
||||||
|
|
||||||
|
Main things to note with this method:
|
||||||
|
|
||||||
|
* Bit Bloated
|
||||||
|
* There's ACPI naming for most common paths, this means there's added delays in boot times(though unnoticeable to most as it's generally less than 0.5 seconds longer)
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
# Fixing NVRAM
|
# Fixing NVRAM (SSDT-PMC)
|
||||||
|
|
||||||
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
|
## What this SSDT does
|
||||||
|
|
||||||
This SSDT is required for all "true" 300 series motherboards and newer(Z370 is excluded), it specifically brings back NVRAM support and requires very little configuration for the end user.
|
This SSDT is required for all "true" 300 series motherboards and newer(Z370 is excluded), it specifically brings back NVRAM support and requires very little configuration for the end user.
|
||||||
|
|
||||||
@@ -10,15 +15,11 @@ This SSDT is required for all "true" 300 series motherboards and newer(Z370 is e
|
|||||||
* 400 series (Cometlake)
|
* 400 series (Cometlake)
|
||||||
* 495 series (Icelake)
|
* 495 series (Icelake)
|
||||||
|
|
||||||
By default it uses `PCI0.LPCB` for the PCI and LowPinCount path. The device names can vary between `PC00` and `PCI0` for PCI path and `LPCB`, `LBC` and `LBC0` for LowPinCount path. To see what you have:
|
Oddly enough, desktop Z490 boards **DO NOT** need this SSDT. NVRAM just works out of the box for most users, if there's issues though it's recommended to try this SSDT
|
||||||
|
|
||||||
* Finding the LowPinCount path:
|
## Methods to make this SSDT
|
||||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
|
||||||
* Finding the PCI path:
|
|
||||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
|
||||||
|
|
||||||

|
The main ways to make this SSDT:
|
||||||
|
|
||||||
A pre-built can be found here if you have issues: [SSDT-PMC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PMC.aml)
|
* [Prebuilt](/Universal/nvram-methods/prebuilt.md)
|
||||||
|
* [Manual](/Universal/nvram-methods/manual.md)
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
|
|||||||
88
Universal/plug-methods/manual.md
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# Fixing Power Management: Manual
|
||||||
|
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [DSDT](#DSDT)
|
||||||
|
* [DeviceManager](#devicemanager)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
## Finding the ACPI path
|
||||||
|
|
||||||
|
To find the ACPI pathing, you have 2 methods:
|
||||||
|
|
||||||
|
* [DSDT](#DSDT)
|
||||||
|
* [DeviceManager](#devicemanager)
|
||||||
|
|
||||||
|
### DSDT
|
||||||
|
|
||||||
|
CPU naming is fairly easy to figure out, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||||
|
|
||||||
|
Next search for `Processor`. This should give you a result like this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
As we can see, the first processor in our list is `SB.PR00`. This is what we'll be applying the `plugin-type=1` property too.
|
||||||
|
|
||||||
|
**X99 and X299 note**:
|
||||||
|
|
||||||
|
Due to the different DSDT structure of these systems, you'll need to to actually check in multiple places as the pathing isn't as obvious:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
If we then search for instances of `CP00` we find that its full ACPI pathing is `SB.SCK0.CP00`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Now with the pathing, you can head here: [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
|
||||||
|
##### DeviceManager
|
||||||
|
|
||||||
|
If you already have Windows installed on this machine, finding the CPU pathing is fairly easy.
|
||||||
|
|
||||||
|
Start by opening up Device Manager in Windows and looking for a device named `Processor`. Once found, click on it and select the `BIOS device Name` entry. You should get something like this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
From the above, we can see that our pathing is `PR.CPU0`. Pay close attention to the start as `PR` is important for creating the SSDT
|
||||||
|
|
||||||
|
**X99 and X299 note**:
|
||||||
|
|
||||||
|
Odd quirk of DeviceManager in Windows is that the Processor's order does not actually match the ACPI path, instead giving something like `SB.SCK0.CP10`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
When this happens, you can either:
|
||||||
|
|
||||||
|
* Look through and find the lowest value
|
||||||
|
* Assume the lowest(commonly being `PR00` or `CP00`)
|
||||||
|
|
||||||
|
So with the above X299 example, our CPU pathing would be `SB.SCK0.CP00`
|
||||||
|
|
||||||
|
Now with the pathing, you can head here: [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
|
||||||
|
## Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||||
|
|
||||||
|
* [SSDT-PLUG.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl)
|
||||||
|
|
||||||
|
From the above SSDT, it's very likely your processor is already there. If so, you can delete all the other entries other than yours and the `Method PMPM` as this is what injects the `plugin-type=1` property into our system.
|
||||||
|
|
||||||
|
* **Reminder**: We only need to apply `plugin-type=1` to the first thread
|
||||||
|
|
||||||
|
For the below example, we'll be using the X299 example(`SB.SCK0.CP00`)
|
||||||
|
|
||||||
|
Original | Cleaned Up
|
||||||
|
:-------------------------:|:-------------------------:
|
||||||
|
 | 
|
||||||
|
|
||||||
|
## Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
20
Universal/plug-methods/prebuilt.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Fixing Power Management: Prebuilt
|
||||||
|
|
||||||
|
By far the easiest way to get SSDT-PLUG is just downloading the below file:
|
||||||
|
|
||||||
|
* [SSDT-PLUG-DRTNIA.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PLUG-DRTNIA.aml)
|
||||||
|
|
||||||
|
This prebuilt file is just a precompiled version of [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) provided by Acidanthera.
|
||||||
|
|
||||||
|
The main things to note with this method:
|
||||||
|
|
||||||
|
* Quite Bloated
|
||||||
|
* There's ACPI naming for every type, this means there's added delays in boot times(though unnoticeable to most as it's generally 0.5 seconds longer)
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
22
Universal/plug-methods/ssdttime.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Fixing Power Management: SSDTTime
|
||||||
|
|
||||||
|
The second involves using SSDTTime which automates most of the process. See here on how to use it: [SSDTs: Easy Way](/ssdt-methods/ssdt-easy.md)
|
||||||
|
|
||||||
|
To get the SSDT-PLUG, run the following:
|
||||||
|
|
||||||
|
* `4. Dump DSDT` then run `3. PluginType`
|
||||||
|
|
||||||
|
This will provide you with some files, the main one you care about is SSDT-PLUG**.aml**. The DSDT and .dsl are only left for referencing or verification.
|
||||||
|
|
||||||
|
The main things to note with this method:
|
||||||
|
|
||||||
|
* Doesn't work on HEDT and server hardware(ie. X99 and X299)
|
||||||
|
* While the majority following this guide are likely on consumer hardware, those with fancier hardware will need to either use the [Prebuilt](#prebuilts) or [Manual](#manual) method
|
||||||
|
* Doesn't really teach you anything
|
||||||
|
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||||
|
|
||||||
|
## Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
@@ -1,52 +1,19 @@
|
|||||||
# Fixing Power Management
|
# Fixing Power Management (SSDT-PLUG)
|
||||||
|
|
||||||
## Easy Way
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
With CPU Power Management, it's a simple as taking [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) provided by Acidanthera and compiling it yourself. You can find a prebuilt of the file here: [SSDT-PLUG-DRTNIA.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PLUG-DRTNIA.aml)
|
## What this SSDT does
|
||||||
|
|
||||||
* Note: This file has a bit of extra bloat as it includes checks for all common CPU names, if you wish to clean this up, either remove unused names or follow the guide below.
|
The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Management) to manage our CPU's power management. It's pretty self explanatory why you'd want this.
|
||||||
|
|
||||||
## Long Way(For those who want to learn)
|
**Note**: SSDT-PLUG is only compatible with Intel's Haswell and newer CPUs, Sandy Bridge and Ivy Bridge will need to follow the [ssdtPRgen method](https://dortania.github.io/OpenCore-Desktop-Guide/post-install/pm.html)(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides)
|
||||||
|
|
||||||
CPU naming is fairly easy to figure out as well, open your decompiled DSDT and search for `Processor`. This should give you a result like this:
|
## Methods to make this SSDT
|
||||||
|
|
||||||

|
For SSDT-PLUG, there are 3 methods you can choose from:
|
||||||
|
|
||||||
As we can see, the first processor in our list is `PR00`. This is what we'll be applying the `plugin-type=1` property too. Now grab [SSDT-PLUG](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-PLUG.dsl.zip) and replace the default `CPU0` with our `PR00`. There's a couple things to note:
|
* [Prebuilt](/Universal/plug-methods/prebuilt.md)
|
||||||
|
* [SSDTTime](/Universal/plug-methods/ssdttime.md)
|
||||||
* There's 2 mentions of CPU0 to change
|
* Note this method does not support **servers** or **HEDT systems**
|
||||||
* The `PR` path may need to be changed, in our example we can see that our `PR00` has `SB` in front.
|
* [Manual](/Universal/plug-methods/manual.md)
|
||||||
|
|
||||||
So in our final example, we'd have `_SB_.PR00` and `\_SB.PR00`
|
|
||||||
|
|
||||||
* **Note**: If you're having issues, see the [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) provided by Acidanthera for example on what other ACPI paths may look like.
|
|
||||||
|
|
||||||
There are also some edge cases with `Processor`, specifically on HEDT series like X79, X99 and X299. This edge case is that the ACPI path is much longer and not so obvious:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
If we then search for instances of `CP00` we find that it's ACPI path is `SB.SCK0.CP00`:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
So for this X299 board, we'd change `\_PR.CPU0` with `\_SB.SCK0.CP00` and `External (_PR_.CPU0, ProcessorObj)` with `External (_SB_.SCK0.CP00, ProcessorObj)`
|
|
||||||
|
|
||||||
```text
|
|
||||||
External (_PR_.CPU0, ProcessorObj) <- Rename this
|
|
||||||
|
|
||||||
Scope (\_PR.CPU0) <- Rename this
|
|
||||||
{
|
|
||||||
Method (DTGP, 5, NotSerialized)
|
|
||||||
{
|
|
||||||
...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
For those having issues, you can also check `Device Manager -> CPU -> BIOS device Name`
|
|
||||||
|
|
||||||
**Note**: X299 may report CP10 or higher for the CPU, when this happens use CP00 instead. This issue is due to weird numeration on Windows' side
|
|
||||||
|
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
|
|||||||
111
Universal/smbus-methods/manual.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# Fixing SMBus support: Manual
|
||||||
|
|
||||||
|
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||||
|
* [Hackintool](#hackintool)
|
||||||
|
* [DeviceManager](#devicemanager)
|
||||||
|
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||||
|
* [Wrapping up](#wrapping-up)
|
||||||
|
|
||||||
|
## Finding the ACPI path
|
||||||
|
|
||||||
|
So to find the ACPI pathing of our SMBus, we've got 2 methods:
|
||||||
|
|
||||||
|
* [Hackintool](#hackintool)
|
||||||
|
* [DeviceManager](#devicemanager)
|
||||||
|
|
||||||
|
### Hackintool
|
||||||
|
|
||||||
|
To find the correct pathing for your devices, grab [Hackintool](https://www.tonymacx86.com/threads/release-hackintool-v3-x-x.254559/) ([Github link](https://github.com/headkaze/Hackintool)) and head to the PCI tab:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Look for the SMBus device under Subclass, then look beside and you'll see the ACPI path(under IOReg Name). To convert , omit `@...`
|
||||||
|
|
||||||
|
* `/PC00@0/SMBS@1F,4` -> `PC00.SMBS`
|
||||||
|
|
||||||
|
With the ACPI pathing, you can now head here: [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
|
||||||
|
### DeviceManager
|
||||||
|
|
||||||
|
If you already have Windows installed on this machine, finding the SMBus pathing is fairly easy.
|
||||||
|
|
||||||
|
Start by opening up Device Manager in Windows and looking for a device named `SMBUS`. Once found, click on it and select the `BIOS device Name` entry. You should get something like this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
From the above example, we can see the SMBus is located at:
|
||||||
|
|
||||||
|
```
|
||||||
|
PC00.SMBS
|
||||||
|
```
|
||||||
|
|
||||||
|
With the ACPI pathing, you can now head here: [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||||
|
|
||||||
|
## Edits to the sample SSDT
|
||||||
|
|
||||||
|
Now that we know the ACPI pathing of the SMBus, we can finally start editing the our SSDT.
|
||||||
|
|
||||||
|
* [SSDT-SBUS-MCHC.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-SBUS-MCHC.dsl)
|
||||||
|
|
||||||
|
So the important parts we care about are:
|
||||||
|
|
||||||
|
**Before**:
|
||||||
|
|
||||||
|
```text
|
||||||
|
External (_SB_.PCI0, DeviceObj) <- Rename this
|
||||||
|
External (_SB_.PCI0.SBUS.BUS0, DeviceObj) <- Rename this
|
||||||
|
|
||||||
|
Scope (_SB.PCI0) <- Rename this
|
||||||
|
{
|
||||||
|
Device (MCHC)
|
||||||
|
{
|
||||||
|
Name (_ADR, Zero) // _ADR: Address
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Device (_SB.PCI0.SBUS.BUS0) <- Rename this
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Following the example SMBus pathing we found, the SSDT should look something like this:
|
||||||
|
|
||||||
|
**After**:
|
||||||
|
|
||||||
|
```text
|
||||||
|
External (_SB_.PC00, DeviceObj) <- Renamed
|
||||||
|
External (_SB_.PC00.SMBS.BUS0, DeviceObj) <- Renamed
|
||||||
|
|
||||||
|
Scope (_SB.PC00) <- Renamed
|
||||||
|
{
|
||||||
|
Device (MCHC)
|
||||||
|
{
|
||||||
|
Name (_ADR, Zero) // _ADR: Address
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Device (_SB.PC00.SMBS.BUS0) <- Renamed
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Compiling the SSDT
|
||||||
|
|
||||||
|
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||||
|
|
||||||
|
# Wrapping up
|
||||||
|
|
||||||
|
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to warp up:
|
||||||
|
|
||||||
|
* [**Cleanup**](/cleanup.md)
|
||||||
|
|
||||||
|
# Verify it's working
|
||||||
|
|
||||||
|
Once you've installed macOS, you can actually check whether your SSDT-SBUS-MCHC is working or not in terminal:
|
||||||
|
|
||||||
|
```
|
||||||
|
kextstat | grep -E "AppleSMBusController|AppleSMBusPCI"
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
@@ -1,4 +1,9 @@
|
|||||||
# Fixing SMBus support
|
# Fixing SMBus support (SSDT-SBUS-MCHC)
|
||||||
|
|
||||||
|
* [What this SSDT does](#what-this-ssdt-does)
|
||||||
|
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||||
|
|
||||||
|
## What this SSDT does
|
||||||
|
|
||||||
This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like:
|
This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like:
|
||||||
|
|
||||||
@@ -12,65 +17,8 @@ This section of the guide refers to fixing AppleSMBus support in macOS, what is
|
|||||||
|
|
||||||
For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack.
|
For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack.
|
||||||
|
|
||||||
So to get started, we'll want to grab our SMBus SSDT:
|
## Methods to make this SSDT
|
||||||
|
|
||||||
* [SSDT-SBUS-MCHC.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-SBUS-MCHC.dsl)
|
To make this SSDT, you only got 1 method: Doing it manually
|
||||||
|
|
||||||
So the important parts we care about are:
|
* [Manual](/Universal/smbus-methods/manual.md)
|
||||||
|
|
||||||
```text
|
|
||||||
External (_SB_.PCI0, DeviceObj) <- Rename this
|
|
||||||
External (_SB_.PCI0.SBUS.BUS0, DeviceObj) <- Rename this
|
|
||||||
|
|
||||||
Scope (_SB.PCI0) <- Rename this
|
|
||||||
{
|
|
||||||
Device (MCHC)
|
|
||||||
{
|
|
||||||
Name (_ADR, Zero) // _ADR: Address
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Device (_SB.PCI0.SBUS.BUS0) <- Rename this
|
|
||||||
```
|
|
||||||
|
|
||||||
To find the correct pathing for your devices, grab [Hackintool](https://www.tonymacx86.com/threads/release-hackintool-v3-x-x.254559/) ([Github link](https://github.com/headkaze/Hackintool)) and head to the PCI tab:
|
|
||||||
|
|
||||||

|
|
||||||
Look for the SMBus device under Subclass, then look beside and you'll see the ACPI path(under IOReg Name). To convert , omit `@...`
|
|
||||||
|
|
||||||
* `/PC00@0/SMBS@1F,4` -> `PC00.SMBS`
|
|
||||||
|
|
||||||
Once finished, it'll look something like this:
|
|
||||||
|
|
||||||
```text
|
|
||||||
External (_SB_.PC00, DeviceObj) <- Renamed
|
|
||||||
External (_SB_.PC00.SMBS.BUS0, DeviceObj) <- Renamed
|
|
||||||
|
|
||||||
Scope (_SB.PC00)
|
|
||||||
{
|
|
||||||
Device (MCHC)
|
|
||||||
{
|
|
||||||
Name (_ADR, Zero) // _ADR: Address
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Device (_SB.PC00.SMBS.BUS0) <- Renamed
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
For those having issues, you can also check Device Manager -> CPU -> BIOS device Name
|
|
||||||
|
|
||||||
**Note**: The MCHC is actually the DRAM controller, similar idea to SMBus for fixing memory reporting
|
|
||||||
|
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
|
|
||||||
## Verify it's working
|
|
||||||
|
|
||||||
To check if the SSDT is working correctly, run the following in terminal:
|
|
||||||
|
|
||||||
```
|
|
||||||
kextstat | grep -E "AppleSMBusController|AppleSMBusPCI"
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Renaming GPUs
|
# Renaming GPUs (SSDT-GPU-SPOOF)
|
||||||
|
|
||||||
So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:
|
So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:
|
||||||
|
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
# Injecting a compatible VBIOS
|
|
||||||
|
|
||||||
**Work in progress**
|
|
||||||
|
|
||||||
So this is mainly needed for GPUs that are not natively supported out of the box due to their odd VBIOS, most commonly:
|
|
||||||
|
|
||||||
* XFX
|
|
||||||
* PowerColor
|
|
||||||
* HIS
|
|
||||||
* VisionTek
|
|
||||||
|
|
||||||
Instead, these GPUs need to be flashed to a model that works best in macOS which gernally being Sapphire. This is the brand that AMD uses for making their reference cards and what Apple bases a lot of their GPU logic off of.
|
|
||||||
|
|
||||||
One small problem, flashing VBIOSes can be a bit dangerous and can even brick a card. So for us, we'll be injecting one via an SSDT that will only load in macOS. This means 2 things:
|
|
||||||
|
|
||||||
* Much easier to recover from, as you just remove the SSDT
|
|
||||||
* Allows you return the GPU easily incase of hardware issues
|
|
||||||
|
|
||||||
So to force a VBIOS onto the GPU, we need to find a couple things:
|
|
||||||
|
|
||||||
* Suitable VBIOS for the GPU
|
|
||||||
* ACPI Path of the GPU
|
|
||||||
* [SSDT-VBIOS]()
|
|
||||||
|
|
||||||
## Finding a suitable VBIOS
|
|
||||||
|
|
||||||
To find a suitable VBIOS, we'll be using [TechPowerUps Video BIOS Collection](https://www.techpowerup.com/vgabios/) which has a full database of basically all GPU VBIOSes. For this example, we'll be creating a VBIOS SSDT for the XFX RX 560 4GB. Now lets pull up the [Sapphire RX 560 4GB](https://www.techpowerup.com/vgabios/192320/sapphire-rx560-4096-170419) and download the VBIOS linked at the bottom:
|
|
||||||
|
|
||||||
```
|
|
||||||
Sapphire.RX560.4096.170419.rom
|
|
||||||
```
|
|
||||||
|
|
||||||
Now we have 1 small issue, our VBIOS must be padded to 65536 bytes(64KB). And our VBIOS is 262KB... *Shit*
|
|
||||||
|
|
||||||
[Insert magic software to shrink our VBIOS]
|
|
||||||
|
|
||||||
## Finding the ACPI Path of the GPU
|
|
||||||
|
|
||||||
To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:
|
|
||||||
|
|
||||||
* Open Device Manager
|
|
||||||
* Select Display Adapters, then right click your GPU and select Properties
|
|
||||||
* Under the Details Tab, search for "Location Paths"
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The second "ACPI" is what we care about:
|
|
||||||
|
|
||||||
```
|
|
||||||
ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
|
|
||||||
```
|
|
||||||
|
|
||||||
Now converting this to an ACPI path is quite simple, remove the `#ACPI` and `#PCI(0000)`:
|
|
||||||
|
|
||||||
```
|
|
||||||
`_SB_.PC02.BR2A.PEGP
|
|
||||||
```
|
|
||||||
|
|
||||||
And voila! We've found our ACPI path, now that we have everything we're ready to get cooking
|
|
||||||
|
|
||||||
## Making the SSDT
|
|
||||||
|
|
||||||
To start grab our [SSDT-VBIOS]() and open it up. Here there's a couple things to change:
|
|
||||||
|
|
||||||
```
|
|
||||||
External (_SB_.PCI0, DeviceObj)
|
|
||||||
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
|
|
||||||
```
|
|
||||||
|
|
||||||
For our example, we'll change all mentions of :
|
|
||||||
|
|
||||||
* `PCI0` with `PC02`
|
|
||||||
* `PEG0` with `BR2A`
|
|
||||||
|
|
||||||
Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device.
|
|
||||||
|
|
||||||
Now that the ACPI pathing is correct, we can finally inject our VBIOS!!
|
|
||||||
|
|
||||||
So the part we want to change:
|
|
||||||
|
|
||||||
**VBIOS**:
|
|
||||||
|
|
||||||
```
|
|
||||||
"ATY,bin_image",
|
|
||||||
Buffer (0x00010000)
|
|
||||||
{
|
|
||||||
// Put your VBIOS here
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
|
||||||
@@ -8,9 +8,11 @@ DefinitionBlock("", "SSDT", 2, "DRTNIA", "GPI0", 0)
|
|||||||
If (_OSI ("Darwin"))
|
If (_OSI ("Darwin"))
|
||||||
{
|
{
|
||||||
GPEN = One
|
GPEN = One
|
||||||
|
SBRG = One
|
||||||
}
|
}
|
||||||
Else
|
Else
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,24 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Intel ACPI Component Architecture
|
* Pulled from AppleLife's Intel WEG manual
|
||||||
* AML/ASL+ Disassembler version 20200214 (64-bit version)
|
|
||||||
* Copyright (c) 2000 - 2020 Intel Corporation
|
|
||||||
*
|
|
||||||
* Disassembling to symbolic ASL+ operators
|
|
||||||
*
|
|
||||||
* Disassembly of /Users/mykolagrymalyuk/Documents/GitHub/Getting-Started-With-ACPI/extra-files/compiled/SSDT-PNLF-CFL.aml, Thu May 28 18:59:18 2020
|
|
||||||
*
|
|
||||||
* Original Table Header:
|
|
||||||
* Signature "SSDT"
|
|
||||||
* Length 0x0000007D (125)
|
|
||||||
* Revision 0x02
|
|
||||||
* Checksum 0x84
|
|
||||||
* OEM ID "ACDT"
|
|
||||||
* OEM Table ID "PNLFCFL"
|
|
||||||
* OEM Revision 0x00000000 (0)
|
|
||||||
* Compiler ID "INTL"
|
|
||||||
* Compiler Version 0x20190509 (538510601)
|
|
||||||
*/
|
*/
|
||||||
DefinitionBlock ("", "SSDT", 2, "ACDT", "PNLFCFL", 0x00000000)
|
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "PNLFCFL", 0x00000000)
|
||||||
{
|
{
|
||||||
External (_SB_.PCI0.GFX0, DeviceObj)
|
External (_SB_.PCI0.GFX0, DeviceObj)
|
||||||
|
|
||||||
|
|||||||
BIN
extra-files/decompiled/SSDT-PNLF-CFL.dsl.zip
Normal file
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 954 KiB |
BIN
images/Laptops/backlight-md/devicemanager.png
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
images/Laptops/backlight-md/ssdt-after.png
Normal file
|
After Width: | Height: | Size: 936 KiB |
BIN
images/Laptops/backlight-md/ssdt-before.png
Normal file
|
After Width: | Height: | Size: 934 KiB |
|
Before Width: | Height: | Size: 536 KiB |
BIN
images/Laptops/trackpad-md/ssdt-after.png
Normal file
|
After Width: | Height: | Size: 378 KiB |
BIN
images/Laptops/trackpad-md/ssdt-before.png
Normal file
|
After Width: | Height: | Size: 371 KiB |
BIN
images/Universal/awac-md/ACPI000E.png
Normal file
|
After Width: | Height: | Size: 702 KiB |
BIN
images/Universal/awac-md/PNP0B00.png
Normal file
|
After Width: | Height: | Size: 624 KiB |
BIN
images/Universal/awac-md/ssdt-after.png
Normal file
|
After Width: | Height: | Size: 621 KiB |
BIN
images/Universal/awac-md/ssdt-before.png
Normal file
|
After Width: | Height: | Size: 612 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 614 KiB |
BIN
images/Universal/nvram-md/pci0.png
Normal file
|
After Width: | Height: | Size: 665 KiB |
BIN
images/Universal/nvram-md/ssdt-after.png
Normal file
|
After Width: | Height: | Size: 837 KiB |
BIN
images/Universal/nvram-md/ssdt-before.png
Normal file
|
After Width: | Height: | Size: 835 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 447 KiB After Width: | Height: | Size: 457 KiB |
|
Before Width: | Height: | Size: 860 KiB After Width: | Height: | Size: 790 KiB |
BIN
images/Universal/plug-md/ssdt-clean.png
Normal file
|
After Width: | Height: | Size: 746 KiB |
BIN
images/Universal/plug-md/ssdt-mess.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
images/Universal/smbus-md/after-rename.png
Normal file
|
After Width: | Height: | Size: 899 KiB |
BIN
images/Universal/smbus-md/before-rename.png
Normal file
|
After Width: | Height: | Size: 897 KiB |
|
Before Width: | Height: | Size: 326 KiB After Width: | Height: | Size: 326 KiB |
|
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 301 KiB |
@@ -4,7 +4,7 @@ So here we'll be using a super simple tool made by CorpNewt: [SSDTTime](https://
|
|||||||
|
|
||||||
What this tool does is, it dumps your DSDT from your firmware, and then creates SSDTs based off your DSDT. **This must be done on the target machine running either Windows or Linux**
|
What this tool does is, it dumps your DSDT from your firmware, and then creates SSDTs based off your DSDT. **This must be done on the target machine running either Windows or Linux**
|
||||||
|
|
||||||
## So what **can't** SSDTTime do
|
## So what **CAN'T** SSDTTime do
|
||||||
|
|
||||||
* **HEDT SSDTs**:
|
* **HEDT SSDTs**:
|
||||||
* The ACPI is odd on these platforms so manual work is required
|
* The ACPI is odd on these platforms so manual work is required
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ The biggest issue with this prebuilt is that we're just guessing you both have a
|
|||||||
|
|
||||||
Needed to bring back NVRAM support for Z390 and newer, **DO NOT USE ON Z370 or older**
|
Needed to bring back NVRAM support for Z390 and newer, **DO NOT USE ON Z370 or older**
|
||||||
|
|
||||||
|
Note: Desktop Z490 boards seem to not need this, though if you're having NVRAM issues you can try this SSDT.
|
||||||
|
|
||||||
* [SSDT-PMC](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PMC.aml)
|
* [SSDT-PMC](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PMC.aml)
|
||||||
|
|
||||||
Reminder only the following need this SSDT:
|
Reminder only the following need this SSDT:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Please see the **specific ACPI section of your config.plist**, all SSDTs needed
|
|||||||
| **CPU** | [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh)(Run in Post-Install) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | N/A |
|
| **CPU** | [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh)(Run in Post-Install) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) | N/A |
|
||||||
| **EC** | [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) | [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) |
|
| **EC** | [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) | [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) | [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) |
|
||||||
| **AWAC** | N/A | N/A | N/A | N/A | [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) | [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) | N/A |
|
| **AWAC** | N/A | N/A | N/A | N/A | [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) | [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) | N/A |
|
||||||
| **NVRAM** | N/A | N/A | N/A | N/A | [SSDT-PMC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl) | [SSDT-PMC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl) | N/A |
|
| **NVRAM** | N/A | N/A | N/A | N/A | [SSDT-PMC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl) | N/A | N/A |
|
||||||
|
|
||||||
## High End Desktop
|
## High End Desktop
|
||||||
|
|
||||||
|
|||||||