mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-01 05:05:57 -08:00
Rewrite prebuilt SSDT page
Should help new users navigate the site better Also added X99 and X299 info
This commit is contained in:
110
Universal/awac-methods/manual-hedt.md
Normal file
110
Universal/awac-methods/manual-hedt.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# Fixing System Clocks on HEDT: 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)
|
||||
|
||||
## Seeing if you need SSDT-RTC0-RANGE
|
||||
|
||||
To start, 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).
|
||||
|
||||
Now search for `PNP0B00` and look at the `_CRS` entry within it:
|
||||
|
||||

|
||||
|
||||
And from the above example, we see we have 2 banks of RTC memory:
|
||||
|
||||
* Bank 1: starts at 0x70 and is length 0x2
|
||||
* Bank 2: starts at 0x74 and is length 0x4
|
||||
|
||||
Now the problem is that the OEM forgot to mat sections 0x72 and 0x73. Because of this, macOS may halt while booting(prominently in Big Sur)
|
||||
|
||||
And finally, verify if it has an _STA method as well. This will be used shortly
|
||||
|
||||
|
||||
## 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).
|
||||
|
||||
To start, search for the following:
|
||||
|
||||
* Finding the RTC name:
|
||||
* Search `PNP0B00`
|
||||
* 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:
|
||||
|
||||
RTC Pathing | LPC Pathing | PCI Pathing
|
||||
:----------:|:-------------------------:|:-------------------------:
|
||||
 |  | 
|
||||
|
||||
From the above, we can see we have `RTC`, `LPC0` and `PCI0`. 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-RANGE.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0-RANGE.dsl)
|
||||
|
||||
By default, this uses `PC00.LPC0.RTC` for the pathing. you'll want to rename accordingly.
|
||||
|
||||
Following the example from above, we'll be renaming it to `PCI0.LPC0.RTC`:
|
||||
|
||||
**Before**:
|
||||
|
||||
```
|
||||
External (_SB_.PC00.LPC0, DeviceObj) <- Rename this
|
||||
|
||||
External (_SB_.PC00.LPC0.RTC_, DeviceObj) <- Rename this
|
||||
|
||||
Scope (_SB.PC00.LPC0) <- Rename this
|
||||
```
|
||||
|
||||

|
||||
|
||||
Following the example pathing we found, the SSDT should look something like this:
|
||||
|
||||
**After**:
|
||||
|
||||
```
|
||||
External (_SB_.PCI0.LPC0, DeviceObj) <- Renamed
|
||||
|
||||
Scope (_SB.PCI0.LPC0.RTC) <- Renamed
|
||||
|
||||
Scope (_SB.PCI0.LPC0) <- Renamed
|
||||
|
||||
|
||||
/* <- Remove if your RTC device didn't have an _STA
|
||||
Scope (RTC)
|
||||
{
|
||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
||||
{
|
||||
If (_OSI ("Darwin"))
|
||||
{
|
||||
Return (Zero)
|
||||
}
|
||||
Else
|
||||
{
|
||||
Return (0x0F)
|
||||
}
|
||||
}
|
||||
}
|
||||
*/ <- Remove if your RTC device didn't have an _STA
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 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 wrap up:
|
||||
|
||||
* [**Cleanup**](/cleanup.md)
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
## Determining which SSDT you need
|
||||
|
||||
* **Note**: X99 and X299 see [here](../awac-methods/manual-hedt.md)
|
||||
|
||||
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:
|
||||
@@ -32,25 +34,6 @@ Now it's as simple as grabbing [SSDT-AWAC.dsl](https://github.com/acidanthera/Op
|
||||
|
||||
* [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).
|
||||
|
||||
@@ -3,10 +3,15 @@
|
||||
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)
|
||||
* For most users
|
||||
* [SSDT-RTC0-RANGE-HEDT](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-RTC0-RANGE-HEDT.aml)
|
||||
* For Intel's X99 and X299 platforms
|
||||
|
||||
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**
|
||||
* This only applies to SSDT-AWAC
|
||||
* SSDT-RTC0-RANGE instead relies on known RTC names, and can only handle so many edge cases
|
||||
* 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,5 +1,7 @@
|
||||
# Fixing System Clocks (SSDT-AWAC/RTC0)
|
||||
|
||||
* **Reminder**: Does not support HEDT(ie. X99 and X299)
|
||||
|
||||
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-PMC, run the following:
|
||||
|
||||
@@ -17,7 +17,8 @@ The purpose of SSDT-AWAC/RTC0 is to fix the system clocks found on newer hardwar
|
||||
* Z490
|
||||
* 400 series (Comet Lake, including Z490)
|
||||
* 495 series (Icelake)
|
||||
* X299X (10th Gen refresh, AsRock and Asus don't use the -x naming so you'll need to double check)
|
||||
* X99
|
||||
* X299
|
||||
|
||||
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.
|
||||
|
||||
@@ -27,4 +28,8 @@ For the RTC fix, there are 3 methods you can choose from:
|
||||
|
||||
* [Prebuilt](/Universal/awac-methods/prebuilt.md)
|
||||
* [SSDTTime](/Universal/awac-methods/ssdttime.md)
|
||||
* **Does not support HEDT**
|
||||
* [Manual](/Universal/awac-methods/manual.md)
|
||||
* For most users
|
||||
* [Manual-HEDT](/Universal/awac-methods/manual-hedt.md)
|
||||
* For X99 and X299 users
|
||||
|
||||
@@ -25,8 +25,5 @@ So TL;DR:
|
||||
For the EC fix, there are 3 methods you can choose from:
|
||||
|
||||
* [Prebuilt](/Universal/ec-methods/prebuilt.md)
|
||||
* The prebuilt for desktops are very bloated. It's recommended to use the two methods below.
|
||||
* The Laptop prebuilts are easily usable.
|
||||
* [SSDTTime](/Universal/ec-methods/ssdttime.md)
|
||||
|
||||
* [Manual](/Universal/ec-methods/manual.md)
|
||||
|
||||
@@ -14,8 +14,6 @@ This will provide you with some files, the main one you care about is SSDT-EC.**
|
||||
|
||||
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 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/OpenCore-Post-Install/blob/master/extra-files/SSDT-USBX.aml)
|
||||
* Note USBX is only needed for Skylake and newer
|
||||
|
||||
@@ -10,8 +10,6 @@ This will provide you with some files, the main one you care about is SSDT-PLUG.
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Managemen
|
||||
|
||||
**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-Post-Install/universal/pm.html#sandy-and-ivy-bridge-power-management)(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides)
|
||||
|
||||
* Ivy Bridge-E(HEDT/server) however is supported by XCPM
|
||||
|
||||
## Methods to make this SSDT
|
||||
|
||||
For SSDT-PLUG, there are 3 methods you can choose from:
|
||||
|
||||
20
Universal/rhub-methods/ssdttime.md
Normal file
20
Universal/rhub-methods/ssdttime.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Fixing RHUB: 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-RHUB, run the following:
|
||||
|
||||
* `7. Dump DSDT` then run `7. USB Reset`
|
||||
|
||||
This will provide you with some files, the main one you care about is SSDT-USB-Rest.**aml**(Same file as SSDT-RHUB). The DSDT and .dsl are only left for referencing or verification.
|
||||
|
||||
The main things to note with this 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 wrap up:
|
||||
|
||||
* [**Cleanup**](/cleanup.md)
|
||||
@@ -14,7 +14,8 @@ The following platforms will require fixing:
|
||||
|
||||
## Methods to make this SSDT
|
||||
|
||||
For the RHUB fix, there are 2 methods you can choose from:
|
||||
For the RHUB fix, there are 3 methods you can choose from:
|
||||
|
||||
* [Prebuilt](/Universal/rhub-methods/prebuilt.md)
|
||||
* [SSDTTime](/Universal/plug-methods/ssdttime.md)
|
||||
* [Manual](/Universal/rhub-methods/manual.md)
|
||||
|
||||
21
Universal/unc0-methods/manual.md
Normal file
21
Universal/unc0-methods/manual.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Fixing Uncore Bridges: 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)
|
||||
|
||||
## Download the SSDT
|
||||
|
||||
Super simple, just grab the SSDT and compile:
|
||||
|
||||
* [SSDT-UNC0.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-UNC0.dsl)
|
||||
|
||||
|
||||
See here how to compile: [Compiling ACPI](/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 wrap up:
|
||||
|
||||
* [**Cleanup**](/cleanup.md)
|
||||
11
Universal/unc0-methods/prebuilt.md
Normal file
11
Universal/unc0-methods/prebuilt.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Fixing Uncore Bridges: Prebuilt
|
||||
|
||||
By far the easiest method, all you need to do is download the following file:
|
||||
|
||||
* [SSDT-UNC0.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-UNC0.aml)
|
||||
|
||||
## 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 wrap up:
|
||||
|
||||
* [**Cleanup**](/cleanup.md)
|
||||
20
Universal/unc0.md
Normal file
20
Universal/unc0.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Fixing Uncore Bridges (SSDT-UNC0)
|
||||
|
||||
* [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 X99 and many X79 boards, it specifically disables unused devices in ACPI ensuing IOPCIFamily doesn't kernel panic. This requires very little configuration for the end user.
|
||||
|
||||
* X79
|
||||
* C602
|
||||
* X99
|
||||
* C612
|
||||
|
||||
## Methods to make this SSDT
|
||||
|
||||
The main ways to make this SSDT:
|
||||
|
||||
* [Prebuilt](/Universal/unc0-methods/prebuilt.md)
|
||||
* [Manual](/Universal/unc0-methods/manual.md)
|
||||
Reference in New Issue
Block a user