mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-01 05:05:57 -08:00
Massive overhaul(hopefully helps new users a bti)
This commit is contained in:
109
Universal/ec-methods/manual.md
Normal file
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
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
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)
|
||||
Reference in New Issue
Block a user