diff --git a/Desktops/desktop-disable.md b/Desktops/desktop-disable.md index 134fac4..b5a08ff 100644 --- a/Desktops/desktop-disable.md +++ b/Desktops/desktop-disable.md @@ -14,6 +14,7 @@ To find the PCI path of a GPU is fairly simple, best way to find it is running W * Open Device Manager * Select Display Adapters, then right click your GPU and select Properties * Under the Details Tab, search for "Location Paths" + * Note some GPUs may be hiding under "BIOS device name" ![](https://cdn.discordapp.com/attachments/456913818467958789/675210740231176212/unknown.png) diff --git a/Laptops/backlight.md b/Laptops/backlight.md index d954330..eed2dba 100644 --- a/Laptops/backlight.md +++ b/Laptops/backlight.md @@ -10,3 +10,9 @@ No configuration required for most, just drop the prebuilt file into your EFI: * For Coffeelake users if the regular SSDT doesn't work, try SSDT-PNLF first and do not mix together 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 + +If Windows has been installed on the device, you can also do the following: + +```text +Device Manager -> Display Adapters -> Properties -> Details > BIOS device name +``` diff --git a/Laptops/laptop-disable.md b/Laptops/laptop-disable.md new file mode 100644 index 0000000..b10d9f7 --- /dev/null +++ b/Laptops/laptop-disable.md @@ -0,0 +1,78 @@ +# Disabling laptop dGPUs + +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: + +* [Optimus Method](/Laptops/laptop-disable.md#optimus-method) +* [Bumblebee Method](/Laptops/laptop-disable.md#bumblebee-method) + +## Optimus Method + +How this works is that we call the `.off` method found on Optimus GPUs, this is the expected way to power off a GPU but some may find their dGPU will power back up later on. Mainly seen in Lenovo's, the Optimus method should work for most users: + +To start, grab [SSDT-dGPU-Off.dsl](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-dGPU-Off.dsl.zip) + + +Next we need to get on Windows, and head to the following: + +```text +Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name +``` + +This should provided you with an ACPI path for your dGPU, most commonly: + +* Nvidia dGPU: `\_SB.PCI0.PEG0.PEGP` +* AMD dGPU: `\_SB.PCI0.PEGP.DGFX` + +Now with that, we'll need to change the ACPI path in the SSDT. Main sections: + +```text +External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj) // ACPI Path of dGPU +```text + +```text +If (CondRefOf(\_SB.PCI0.PEG0.PEGP._OFF)) { \_SB.PCI0.PEG0.PEGP._OFF() } +``` + +Once adapted to your config, head to the compile section + + +## Bumblebee Method + +With some machines, the simple `.off` call won't keep the card off properly, that's where the Bumblebee method comes in. This SSDT will actually send the dGPU into D3 state being the lowest power state a device can support. Creit to Mameo for the original adaptation + +To start, grab [SSDT-NoHybGfx.dsl](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-NoHybGfx.dsl.zip) + +Next we need to get on Windows, and head to the following: + +```text +Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name +``` + +This should provided you with an ACPI path for your dGPU, most commonly: + +* Nvidia dGPU: `\_SB.PCI0.PEG0.PEGP` +* AMD dGPU: `\_SB.PCI0.PEGP.DGFX` + +Now with that, we'll need to change the ACPI path in the SSDT. Main sections: + +```text +External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj) // dGPU ACPI Path +External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj) // dGPU ACPI Path +``` + +```text +If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3))) + { + // Card Off Request + \_SB.PCI0.PEG0.PEGP._DSM (ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0"), 0x0100, 0x1A, Buffer (0x04) + { + 0x01, 0x00, 0x00, 0x03 + }) + // Card Off + \_SB.PCI0.PEG0.PEGP._PS3 () + } +``` + +Once adapted to your config, head to the compile section + +## [Now you're ready to compile the SSDT!](/Manual/compile.md) \ No newline at end of file diff --git a/Universal/awac.md b/Universal/awac.md index 99460bd..89be7c4 100644 --- a/Universal/awac.md +++ b/Universal/awac.md @@ -31,11 +31,11 @@ To determine whether you need [SSDT-AWAC](https://github.com/acidanthera/OpenCor * 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 ==`**: +* If you get a result then you have an `AWAC` system clock present, then continue with the **next search for `STAS`**: ![](https://i.imgur.com/uuUF857.png) -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. +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 diff --git a/extra-files/SSDT-GPI0.dsl b/extra-files/SSDT-GPI0.dsl index 777ea05..d5a0c72 100644 --- a/extra-files/SSDT-GPI0.dsl +++ b/extra-files/SSDT-GPI0.dsl @@ -9,5 +9,8 @@ DefinitionBlock("", "SSDT", 2, "Slav", "GPI0", 0) { GPEN = One } + Else + { + } } } \ No newline at end of file diff --git a/extra-files/SSDT-GPI0.dsl.zip b/extra-files/SSDT-GPI0.dsl.zip index 48a534e..ed1f57c 100644 Binary files a/extra-files/SSDT-GPI0.dsl.zip and b/extra-files/SSDT-GPI0.dsl.zip differ diff --git a/extra-files/SSDT-GPU-DISABLE.dsl.zip b/extra-files/SSDT-GPU-DISABLE.dsl.zip index dd5659f..bf551dc 100644 Binary files a/extra-files/SSDT-GPU-DISABLE.dsl.zip and b/extra-files/SSDT-GPU-DISABLE.dsl.zip differ diff --git a/extra-files/SSDT-GPU-SPOOF.dsl b/extra-files/SSDT-GPU-SPOOF.dsl index 0a8e0f9..4b5f1da 100644 --- a/extra-files/SSDT-GPU-SPOOF.dsl +++ b/extra-files/SSDT-GPU-SPOOF.dsl @@ -35,7 +35,6 @@ DefinitionBlock ("", "SSDT", 2, "Slav", "AMDGPU", 0x00001000) } Else { - Return (Zero) } } } diff --git a/extra-files/SSDT-GPU-SPOOF.dsl.zip b/extra-files/SSDT-GPU-SPOOF.dsl.zip index 10e9230..db05ee6 100644 Binary files a/extra-files/SSDT-GPU-SPOOF.dsl.zip and b/extra-files/SSDT-GPU-SPOOF.dsl.zip differ diff --git a/extra-files/SSDT-NoHybGfx.dsl b/extra-files/SSDT-NoHybGfx.dsl new file mode 100644 index 0000000..2bedcb0 --- /dev/null +++ b/extra-files/SSDT-NoHybGfx.dsl @@ -0,0 +1,50 @@ +/* +* Disable discrete graphics (c) Bumblebee-Project +* >> https://github.com/Bumblebee-Project/Bumblebee/wiki/ACPI-for-Developers#acpi-and-the-nvidia-card +* --- +* Important: Change all ACPI paths accordingly. +* Credit to Maemo for original idea and midi1996 for the SSDT +*/ +DefinitionBlock ("", "SSDT", 2, "MAEMO", "NoHybGfx", 0x00000000) +{ + External (_SB_.PCI0.PEG0.PEGP._DSM, MethodObj) // dGPU ACPI Path + External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj) // dGPU ACPI Path + + Device (NHG1) + { + Name (_HID, "NHG10000") // _HID: Hardware ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + If (_OSI ("Darwin")) + { + Return (0x0F) + } + Else + { + Return (Zero) + } + } + + Method (_INI, 0, NotSerialized) // _INI: Initialize + { + If (_OSI ("Darwin")) + { + // If conditional methods reference creation successful + If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3))) + { + // Card Off Request + \_SB.PCI0.PEG0.PEGP._DSM (ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0"), 0x0100, 0x1A, Buffer (0x04) + { + 0x01, 0x00, 0x00, 0x03 + }) + // Card Off + \_SB.PCI0.PEG0.PEGP._PS3 () + } + } + Else + { + } + } + } +} + diff --git a/extra-files/SSDT-NoHybGfx.dsl.zip b/extra-files/SSDT-NoHybGfx.dsl.zip new file mode 100644 index 0000000..c9c7cd4 Binary files /dev/null and b/extra-files/SSDT-NoHybGfx.dsl.zip differ diff --git a/extra-files/SSDT-dGPU-Off.dsl b/extra-files/SSDT-dGPU-Off.dsl new file mode 100644 index 0000000..a9e953b --- /dev/null +++ b/extra-files/SSDT-dGPU-Off.dsl @@ -0,0 +1,35 @@ +/* Based off of Rebaman's work: +* https://github.com/RehabMan/OS-X-Clover-Laptop-Config/blob/master/hotpatch/SSDT-DDGPU.dsl +*/ +DefinitionBlock("", "SSDT", 2, "Slav", "dGPU-Off", 0) +{ +External(_SB.PCI0.PEG0.PEGP._OFF, MethodObj) // ACPI Path of dGPU + + Device(RMD1) + { + Name(_HID, "RMD10000") // _HID: Hardware ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + If (_OSI ("Darwin")) + { + Return (0x0F) + } + Else + { + Return (Zero) + } + } + + Method(_INI) + { + If (_OSI ("Darwin")) + { + // disable discrete graphics (Nvidia/Radeon) if it is present + If (CondRefOf(\_SB.PCI0.PEG0.PEGP._OFF)) { \_SB.PCI0.PEG0.PEGP._OFF() } + } + Else + { + } + } + } +} \ No newline at end of file diff --git a/extra-files/SSDT-dGPU-Off.dsl.zip b/extra-files/SSDT-dGPU-Off.dsl.zip new file mode 100644 index 0000000..f5b4c82 Binary files /dev/null and b/extra-files/SSDT-dGPU-Off.dsl.zip differ