diff --git a/404.html b/404.html index da9e44a..9e6f865 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ - + -

404

That's a Four-Oh-Four.
+ - + diff --git a/CONTRIBUTING.html b/CONTRIBUTING.html index 63d48de..2d6b27e 100644 --- a/CONTRIBUTING.html +++ b/CONTRIBUTING.html @@ -10,7 +10,7 @@ - + @@ -57,6 +57,6 @@

- + diff --git a/Desktops/desktop-disable.html b/Desktops/desktop-disable.html index ba5b6fb..53fade4 100644 --- a/Desktops/desktop-disable.html +++ b/Desktops/desktop-disable.html @@ -10,7 +10,7 @@ - + @@ -56,6 +56,6 @@ Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized) ⟶

- + diff --git a/Desktops/desktop-ec.html b/Desktops/desktop-ec.html index d885099..26b2d1a 100644 --- a/Desktops/desktop-ec.html +++ b/Desktops/desktop-ec.html @@ -10,7 +10,7 @@ - + @@ -43,6 +43,6 @@ GitHub

# Fixing Embedded Controller (Desktop)

# You'll want to go to SSDT-EC under the Universal tab for the new SSDT-EC page

- + diff --git a/Laptops/backlight-methods/manual.html b/Laptops/backlight-methods/manual.html index a6d1cad..7913534 100644 --- a/Laptops/backlight-methods/manual.html +++ b/Laptops/backlight-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -62,6 +62,6 @@ Device(_SB.PCI0.GPU0.PNLF) <- Renamed ⟶

- + diff --git a/Laptops/backlight-methods/prebuilt.html b/Laptops/backlight-methods/prebuilt.html index b3616d4..43baed1 100644 --- a/Laptops/backlight-methods/prebuilt.html +++ b/Laptops/backlight-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -52,6 +52,6 @@ ⟶

- + diff --git a/Laptops/backlight.html b/Laptops/backlight.html index 81c2cb8..b638da7 100644 --- a/Laptops/backlight.html +++ b/Laptops/backlight.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Laptops/laptop-disable.html b/Laptops/laptop-disable.html index 55f878c..57820b7 100644 --- a/Laptops/laptop-disable.html +++ b/Laptops/laptop-disable.html @@ -10,7 +10,7 @@ - + @@ -62,6 +62,6 @@ External (_SB_.PCI0.PEG0.PEGP._PS3, MethodObj) // dGPU ACPI Path ⟶

- + diff --git a/Laptops/laptop-ec.html b/Laptops/laptop-ec.html index 24b28dc..ca5566d 100644 --- a/Laptops/laptop-ec.html +++ b/Laptops/laptop-ec.html @@ -10,7 +10,7 @@ - + @@ -43,6 +43,6 @@ GitHub

# Fixing Embedded Controller (Laptop)

# You'll want to go to SSDT-EC under the Universal tab for the new SSDT-EC page

- + diff --git a/Laptops/trackpad-methods/manual.html b/Laptops/trackpad-methods/manual.html index 9b3626f..77d6a07 100644 --- a/Laptops/trackpad-methods/manual.html +++ b/Laptops/trackpad-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -69,6 +69,6 @@ ⟶

- + diff --git a/Laptops/trackpad-methods/prebuilt.html b/Laptops/trackpad-methods/prebuilt.html index 8ec1b95..0c7e558 100644 --- a/Laptops/trackpad-methods/prebuilt.html +++ b/Laptops/trackpad-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Laptops/trackpad.html b/Laptops/trackpad.html index c9a08a1..86a02ed 100644 --- a/Laptops/trackpad.html +++ b/Laptops/trackpad.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Manual/compile.html b/Manual/compile.html index aa0c053..0a0bee3 100644 --- a/Manual/compile.html +++ b/Manual/compile.html @@ -10,7 +10,7 @@ - + @@ -54,6 +54,6 @@ ⟶

- + diff --git a/Manual/dump.html b/Manual/dump.html index b0688b8..991f730 100644 --- a/Manual/dump.html +++ b/Manual/dump.html @@ -10,7 +10,7 @@ - + @@ -62,6 +62,6 @@ fs0:\EFI\OC\Tools> acpidump.efi -b -n DSDT -z ⟶

- + diff --git a/SUMMARY.html b/SUMMARY.html index 6956d9c..524a2f8 100644 --- a/SUMMARY.html +++ b/SUMMARY.html @@ -10,7 +10,7 @@ - + @@ -43,6 +43,6 @@ GitHub

# Table of contents

# Methods

# Manual

# Desktop

# Laptop

# Universal

# Cleanup

# Misc

- + diff --git a/Universal/awac-methods/manual.html b/Universal/awac-methods/manual.html index 924e191..6680b75 100644 --- a/Universal/awac-methods/manual.html +++ b/Universal/awac-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -73,6 +73,6 @@ Scope (_SB.PCI0.LPC) <- Renamed ⟶

- + diff --git a/Universal/awac-methods/prebuilt.html b/Universal/awac-methods/prebuilt.html index d75f1a0..f9d9c7d 100644 --- a/Universal/awac-methods/prebuilt.html +++ b/Universal/awac-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -52,6 +52,6 @@ ⟶

- + diff --git a/Universal/awac.html b/Universal/awac.html index eaebb45..1059d60 100644 --- a/Universal/awac.html +++ b/Universal/awac.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/ec-fix.html b/Universal/ec-fix.html index e267430..8207132 100644 --- a/Universal/ec-fix.html +++ b/Universal/ec-fix.html @@ -10,7 +10,7 @@ - + @@ -52,6 +52,6 @@ ⟶

- + diff --git a/Universal/ec-methods/manual.html b/Universal/ec-methods/manual.html index 7d40dca..d004cb2 100644 --- a/Universal/ec-methods/manual.html +++ b/Universal/ec-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -60,6 +60,6 @@ Scope (_SB.PC00.LPC0) <- Renamed ⟶

- + diff --git a/Universal/ec-methods/prebuilt.html b/Universal/ec-methods/prebuilt.html index f8500a6..af704f0 100644 --- a/Universal/ec-methods/prebuilt.html +++ b/Universal/ec-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -53,6 +53,6 @@ ⟶

- + diff --git a/Universal/ec-methods/ssdttime.html b/Universal/ec-methods/ssdttime.html index 9e648dc..67aae8f 100644 --- a/Universal/ec-methods/ssdttime.html +++ b/Universal/ec-methods/ssdttime.html @@ -10,7 +10,7 @@ - + @@ -55,6 +55,6 @@ ⟶

- + diff --git a/Universal/irq.html b/Universal/irq.html index 191abf1..b68e1a0 100644 --- a/Universal/irq.html +++ b/Universal/irq.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/nvram-methods/manual.html b/Universal/nvram-methods/manual.html index 07f162b..3caba68 100644 --- a/Universal/nvram-methods/manual.html +++ b/Universal/nvram-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -59,6 +59,6 @@ Scope (_SB.PCI0.LPC) <- Renamed ⟶

- + diff --git a/Universal/nvram-methods/prebuilt.html b/Universal/nvram-methods/prebuilt.html index ef5cbdd..beef86d 100644 --- a/Universal/nvram-methods/prebuilt.html +++ b/Universal/nvram-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -53,6 +53,6 @@ ⟶

- + diff --git a/Universal/nvram.html b/Universal/nvram.html index 0cdb14e..2b3df41 100644 --- a/Universal/nvram.html +++ b/Universal/nvram.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/plug-methods/manual.html b/Universal/plug-methods/manual.html index 3eec9ea..09c94ad 100644 --- a/Universal/plug-methods/manual.html +++ b/Universal/plug-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/plug-methods/prebuilt.html b/Universal/plug-methods/prebuilt.html index d993a53..b7cc30f 100644 --- a/Universal/plug-methods/prebuilt.html +++ b/Universal/plug-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -53,6 +53,6 @@ ⟶

- + diff --git a/Universal/plug-methods/ssdttime.html b/Universal/plug-methods/ssdttime.html index eab1304..6ebeb60 100644 --- a/Universal/plug-methods/ssdttime.html +++ b/Universal/plug-methods/ssdttime.html @@ -10,7 +10,7 @@ - + @@ -53,6 +53,6 @@ ⟶

- + diff --git a/Universal/plug.html b/Universal/plug.html index 94e5667..6c40f29 100644 --- a/Universal/plug.html +++ b/Universal/plug.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/rhub-methods/manual.html b/Universal/rhub-methods/manual.html index 6e8efa9..1b025e0 100644 --- a/Universal/rhub-methods/manual.html +++ b/Universal/rhub-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -59,6 +59,6 @@ Scope (_SB.PCI0.XHC1.RHUB) <- Renamed ⟶

- + diff --git a/Universal/rhub-methods/prebuilt.html b/Universal/rhub-methods/prebuilt.html index 7a01dfd..8e25bc4 100644 --- a/Universal/rhub-methods/prebuilt.html +++ b/Universal/rhub-methods/prebuilt.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/rhub.html b/Universal/rhub.html index 4dc38cd..779b6b2 100644 --- a/Universal/rhub.html +++ b/Universal/rhub.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/Universal/smbus-methods/manual.html b/Universal/smbus-methods/manual.html index a042a9f..877c9a1 100644 --- a/Universal/smbus-methods/manual.html +++ b/Universal/smbus-methods/manual.html @@ -10,7 +10,7 @@ - + @@ -77,6 +77,6 @@ Device (_SB.PC00.SMBS.BUS0) <- Renamed ⟶

- + diff --git a/Universal/smbus.html b/Universal/smbus.html index d90cda7..2cc0831 100644 --- a/Universal/smbus.html +++ b/Universal/smbus.html @@ -10,7 +10,7 @@ - + @@ -54,6 +54,6 @@ ⟶

- + diff --git a/Universal/spoof.html b/Universal/spoof.html index 01d34c4..7ec9e09 100644 --- a/Universal/spoof.html +++ b/Universal/spoof.html @@ -10,7 +10,7 @@ - + @@ -42,15 +42,25 @@ Anti Buyers Guide GitHub -

# 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:

Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.

So to spoof the GPU, we need to find a couple things:

# Finding a suitable PCI ID

To find a suitable PCI ID, we'll be using PCI ID Repository which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the GPU Buyers Guide. The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:

Vendor 1002 -> Device 1002:67b0
+        

# 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:

  • R9 290/390
  • R9 280/380
  • R7 270/370
  • R9 260/360
  • R7 250
  • R7 240

Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.

So to spoof the GPU, we need to find a couple things:

# Finding a suitable PCI ID

# Web

To find a suitable PCI ID, we'll be using PCI ID Repository which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the GPU Buyers Guide. The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:

Vendor 1002 -> Device 1002:67b0
 

Now lets break this down into a device ID we can use:

  • 1002: The vendor ID, all AMD devices have this ID
  • 67B0: The device ID, this is what we care about

So how do we convert this to a fake ID? Well the format of a fake ID:

"device-id",
 Buffer (0x04)
 {
      0xB0, 0x67, 0x00, 0x00
 },
-

As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT

The specifics are due to Endianness for those who are curious

# 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" +

As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT

The specifics are due to Endianness for those who are curious

# Linux

If you can run Linux, use command lspci -vmmnnD -d 1002::0300

$ lspci -vmmnnD -d 1002::0300
+Slot:	0000:01:00.0
+Class:	VGA compatible controller [0300]
+Vendor:	Advanced Micro Devices, Inc. [AMD/ATI] [1002]
+Device:	Oland [Radeon HD 8570 / R7 240/340 / Radeon 520 OEM] [6611]
+SVendor:	Micro-Star International Co., Ltd. [MSI] [1462]
+SDevice:	Device [3740]
+Rev:	87
+

You can easily get

# Finding the ACPI Path of the GPU

# Windows

To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:

Credit to 1Revenger1 for the image

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
+

Now converting this to an ACPI path is quite simple, remove the #ACPI and #PCI(0000):

\_SB_.PC02.BR2A.PEGP
+

# Linux

Substitute your SLOTID found above into command cat /sys/bus/pci/devices/SLOTID/firmware_node/path, you cat get

$ cat /sys/bus/pci/devices/0000:01:00.0/firmware_node/path
+\_SB_.PCI0.PEG0.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-GPU-SPOOF 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 :

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 apply our fake ID!!!

So the 2 parts we want to change:

device ID:

"device-id",
@@ -63,7 +73,7 @@ Buffer ()
 {
     "AMD Radeon R9 390"
 }
-

"device-id" will be set to our PCI ID that we found in "Finding a suitable PCI ID" and "model" is mainly cosmetic

# Now you're ready to compile the SSDT!

"device-id" will be set to our PCI ID that we found in "Finding a suitable PCI ID" and "model" is mainly cosmetic

# Now you're ready to compile the SSDT!

- + diff --git a/assets/js/15.0fe52b37.js b/assets/js/15.0fe52b37.js deleted file mode 100644 index 247c312..0000000 --- a/assets/js/15.0fe52b37.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{313:function(e,t,a){e.exports=a.p+"assets/img/nvidia.672e8e16.png"},328:function(e,t,a){e.exports=a.p+"assets/img/amd.acf5492b.png"},440:function(e,t,a){"use strict";a.r(t);var s=a(25),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"renaming-gpus-ssdt-gpu-spoof"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#renaming-gpus-ssdt-gpu-spoof"}},[e._v("#")]),e._v(" Renaming GPUs (SSDT-GPU-SPOOF)")]),e._v(" "),s("p",[e._v("So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:")]),e._v(" "),s("ul",[s("li",[e._v("R9 290/390")]),e._v(" "),s("li",[e._v("R9 280/380")]),e._v(" "),s("li",[e._v("R7 270/370")]),e._v(" "),s("li",[e._v("R9 260/360")]),e._v(" "),s("li",[e._v("R7 250")]),e._v(" "),s("li",[e._v("R7 240")])]),e._v(" "),s("p",[e._v('Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.')]),e._v(" "),s("p",[e._v("So to spoof the GPU, we need to find a couple things:")]),e._v(" "),s("ul",[s("li",[e._v("Suitable PCI ID for the GPU")]),e._v(" "),s("li",[e._v("ACPI Path of the GPU")]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-GPU-SPOOF"),s("OutboundLink")],1)])]),e._v(" "),s("h2",{attrs:{id:"finding-a-suitable-pci-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-a-suitable-pci-id"}},[e._v("#")]),e._v(" Finding a suitable PCI ID")]),e._v(" "),s("p",[e._v("To find a suitable PCI ID, we'll be using "),s("a",{attrs:{href:"https://pci-ids.ucw.cz/read/PC/1002",target:"_blank",rel:"noopener noreferrer"}},[e._v("PCI ID Repository"),s("OutboundLink")],1),e._v(" which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the "),s("a",{attrs:{href:"https://dortania.github.io/GPU-Buyers-Guide/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPU Buyers Guide"),s("OutboundLink")],1),e._v(". The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("Vendor 1002 -> Device 1002:67b0\n")])])]),s("p",[e._v("Now lets break this down into a device ID we can use:")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("1002")]),e._v(": The vendor ID, all AMD devices have this ID")]),e._v(" "),s("li",[s("code",[e._v("67B0")]),e._v(": The device ID, this is what we care about")])]),e._v(" "),s("p",[e._v("So how do we convert this to a fake ID? Well the format of a fake ID:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"device-id",\nBuffer (0x04)\n{\n 0xB0, 0x67, 0x00, 0x00\n},\n')])])]),s("p",[e._v("As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT")]),e._v(" "),s("p",[e._v("The specifics are due to "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Endianness",target:"_blank",rel:"noopener noreferrer"}},[e._v("Endianness"),s("OutboundLink")],1),e._v(" for those who are curious")]),e._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path-of-the-gpu"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path-of-the-gpu"}},[e._v("#")]),e._v(" Finding the ACPI Path of the GPU")]),e._v(" "),s("p",[e._v("To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:")]),e._v(" "),s("ul",[s("li",[e._v("Open Device Manager")]),e._v(" "),s("li",[e._v("Select Display Adapters, then right click your GPU and select Properties")]),e._v(" "),s("li",[e._v('Under the Details Tab, search for "Location Paths"\n'),s("ul",[s("li",[e._v('Note some GPUs may be hiding under "BIOS device name"')])])])]),e._v(" "),s("p",[s("img",{attrs:{src:a(328),alt:""}})]),e._v(" "),s("p",[s("img",{attrs:{src:a(313),alt:"Credit to 1Revenger1 for the image"}})]),e._v(" "),s("p",[e._v('The second "ACPI" is what we care about:')]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)\n")])])]),s("p",[e._v("Now converting this to an ACPI path is quite simple, remove the "),s("code",[e._v("#ACPI")]),e._v(" and "),s("code",[e._v("#PCI(0000)")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("`_SB_.PC02.BR2A.PEGP\n")])])]),s("p",[e._v("And voila! We've found our ACPI path, now that we have everything we're ready to get cooking")]),e._v(" "),s("h2",{attrs:{id:"making-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#making-the-ssdt"}},[e._v("#")]),e._v(" Making the SSDT")]),e._v(" "),s("p",[e._v("To start grab our "),s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-GPU-SPOOF"),s("OutboundLink")],1),e._v(" and open it up. Here there's a couple things to change:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0, DeviceObj)\nExternal (_SB_.PCI0.PEG0.PEGP, DeviceObj)\n")])])]),s("p",[e._v("For our example, we'll change all mentions of :")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("PCI0")]),e._v(" with "),s("code",[e._v("PC02")])]),e._v(" "),s("li",[s("code",[e._v("PEG0")]),e._v(" with "),s("code",[e._v("BR2A")])])]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("Now that the ACPI pathing is correct, we can finally apply our fake ID!!!")]),e._v(" "),s("p",[e._v("So the 2 parts we want to change:")]),e._v(" "),s("p",[s("strong",[e._v("device ID")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"device-id",\nBuffer (0x04)\n{\n 0xB0, 0x67, 0x00, 0x00\n},\n')])])]),s("p",[s("strong",[e._v("Model")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"model",\nBuffer ()\n{\n "AMD Radeon R9 390"\n}\n')])])]),s("p",[s("code",[e._v('"device-id"')]),e._v(' will be set to our PCI ID that we found in "Finding a suitable PCI ID" and '),s("code",[e._v('"model"')]),e._v(" is mainly cosmetic")]),e._v(" "),s("h2",{attrs:{id:"now-you-re-ready-to-compile-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#now-you-re-ready-to-compile-the-ssdt"}},[e._v("#")]),e._v(" "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("Now you're ready to compile the SSDT!")])],1)])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/15.6f539457.js b/assets/js/15.6f539457.js new file mode 100644 index 0000000..af9f911 --- /dev/null +++ b/assets/js/15.6f539457.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{313:function(e,t,a){e.exports=a.p+"assets/img/nvidia.672e8e16.png"},328:function(e,t,a){e.exports=a.p+"assets/img/amd.acf5492b.png"},440:function(e,t,a){"use strict";a.r(t);var s=a(25),i=Object(s.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"renaming-gpus-ssdt-gpu-spoof"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#renaming-gpus-ssdt-gpu-spoof"}},[e._v("#")]),e._v(" Renaming GPUs (SSDT-GPU-SPOOF)")]),e._v(" "),s("p",[e._v("So this is mainly needed for GPUs that are not natively supported out of the box due to their names, most commonly:")]),e._v(" "),s("ul",[s("li",[e._v("R9 290/390")]),e._v(" "),s("li",[e._v("R9 280/380")]),e._v(" "),s("li",[e._v("R7 270/370")]),e._v(" "),s("li",[e._v("R9 260/360")]),e._v(" "),s("li",[e._v("R7 250")]),e._v(" "),s("li",[e._v("R7 240")])]),e._v(" "),s("p",[e._v('Instead, these GPUs need to be "spoofed" or faked into a model that closely matches theirs, generally this will be the "X" variant of the card. For some reason Apple never bothered adding the PCI IDs for these other cards even though their GPU cores are supported by the driver.')]),e._v(" "),s("p",[e._v("So to spoof the GPU, we need to find a couple things:")]),e._v(" "),s("ul",[s("li",[e._v("Suitable PCI ID for the GPU")]),e._v(" "),s("li",[e._v("ACPI Path of the GPU")]),e._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-GPU-SPOOF"),s("OutboundLink")],1)])]),e._v(" "),s("h2",{attrs:{id:"finding-a-suitable-pci-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-a-suitable-pci-id"}},[e._v("#")]),e._v(" Finding a suitable PCI ID")]),e._v(" "),s("h3",{attrs:{id:"web"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#web"}},[e._v("#")]),e._v(" Web")]),e._v(" "),s("p",[e._v("To find a suitable PCI ID, we'll be using "),s("a",{attrs:{href:"https://pci-ids.ucw.cz/read/PC/1002",target:"_blank",rel:"noopener noreferrer"}},[e._v("PCI ID Repository"),s("OutboundLink")],1),e._v(" which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the "),s("a",{attrs:{href:"https://dortania.github.io/GPU-Buyers-Guide/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPU Buyers Guide"),s("OutboundLink")],1),e._v(". The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("Vendor 1002 -> Device 1002:67b0\n")])])]),s("p",[e._v("Now lets break this down into a device ID we can use:")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("1002")]),e._v(": The vendor ID, all AMD devices have this ID")]),e._v(" "),s("li",[s("code",[e._v("67B0")]),e._v(": The device ID, this is what we care about")])]),e._v(" "),s("p",[e._v("So how do we convert this to a fake ID? Well the format of a fake ID:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"device-id",\nBuffer (0x04)\n{\n 0xB0, 0x67, 0x00, 0x00\n},\n')])])]),s("p",[e._v("As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT")]),e._v(" "),s("p",[e._v("The specifics are due to "),s("a",{attrs:{href:"https://en.wikipedia.org/wiki/Endianness",target:"_blank",rel:"noopener noreferrer"}},[e._v("Endianness"),s("OutboundLink")],1),e._v(" for those who are curious")]),e._v(" "),s("h3",{attrs:{id:"linux"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#linux"}},[e._v("#")]),e._v(" Linux")]),e._v(" "),s("p",[e._v("If you can run Linux, use command "),s("code",[e._v("lspci -vmmnnD -d 1002::0300")])]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("$ lspci -vmmnnD -d 1002::0300\nSlot:\t0000:01:00.0\nClass:\tVGA compatible controller [0300]\nVendor:\tAdvanced Micro Devices, Inc. [AMD/ATI] [1002]\nDevice:\tOland [Radeon HD 8570 / R7 240/340 / Radeon 520 OEM] [6611]\nSVendor:\tMicro-Star International Co., Ltd. [MSI] [1462]\nSDevice:\tDevice [3740]\nRev:\t87\n")])])]),s("p",[e._v("You can easily get")]),e._v(" "),s("ul",[s("li",[e._v("Slot ID "),s("code",[e._v("0000:01:00.0")]),e._v(", we need it later")]),e._v(" "),s("li",[e._v("Vendor ID "),s("code",[e._v("1002")]),e._v(", all AMD devices have this ID")]),e._v(" "),s("li",[e._v("Device ID "),s("code",[e._v("6611")]),e._v(", this is what we care about")]),e._v(" "),s("li",[e._v("Device name "),s("code",[e._v("Radeon HD 8570 / R7 240/340 / Radeon 520 OEM")]),e._v(", mainly cosmetic")])]),e._v(" "),s("h2",{attrs:{id:"finding-the-acpi-path-of-the-gpu"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#finding-the-acpi-path-of-the-gpu"}},[e._v("#")]),e._v(" Finding the ACPI Path of the GPU")]),e._v(" "),s("h3",{attrs:{id:"windows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#windows"}},[e._v("#")]),e._v(" Windows")]),e._v(" "),s("p",[e._v("To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:")]),e._v(" "),s("ul",[s("li",[e._v("Open Device Manager")]),e._v(" "),s("li",[e._v("Select Display Adapters, then right click your GPU and select Properties")]),e._v(" "),s("li",[e._v('Under the Details Tab, search for "Location Paths"\n'),s("ul",[s("li",[e._v('Note some GPUs may be hiding under "BIOS device name"')])])])]),e._v(" "),s("p",[s("img",{attrs:{src:a(328),alt:""}})]),e._v(" "),s("p",[s("img",{attrs:{src:a(313),alt:"Credit to 1Revenger1 for the image"}})]),e._v(" "),s("p",[e._v('The second "ACPI" is what we care about:')]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)\n")])])]),s("p",[e._v("Now converting this to an ACPI path is quite simple, remove the "),s("code",[e._v("#ACPI")]),e._v(" and "),s("code",[e._v("#PCI(0000)")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("\\_SB_.PC02.BR2A.PEGP\n")])])]),s("h3",{attrs:{id:"linux-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#linux-2"}},[e._v("#")]),e._v(" Linux")]),e._v(" "),s("p",[e._v("Substitute your SLOTID found above into command "),s("code",[e._v("cat /sys/bus/pci/devices/SLOTID/firmware_node/path")]),e._v(", you cat get")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("$ cat /sys/bus/pci/devices/0000:01:00.0/firmware_node/path\n\\_SB_.PCI0.PEG0.PEGP\n")])])]),s("p",[e._v("And voila! We've found our ACPI path, now that we have everything we're ready to get cooking")]),e._v(" "),s("h2",{attrs:{id:"making-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#making-the-ssdt"}},[e._v("#")]),e._v(" Making the SSDT")]),e._v(" "),s("p",[e._v("To start grab our "),s("a",{attrs:{href:"https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-GPU-SPOOF.dsl.zip",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSDT-GPU-SPOOF"),s("OutboundLink")],1),e._v(" and open it up. Here there's a couple things to change:")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("External (_SB_.PCI0, DeviceObj)\nExternal (_SB_.PCI0.PEG0.PEGP, DeviceObj)\n")])])]),s("p",[e._v("For our example, we'll change all mentions of :")]),e._v(" "),s("ul",[s("li",[s("code",[e._v("PCI0")]),e._v(" with "),s("code",[e._v("PC02")])]),e._v(" "),s("li",[s("code",[e._v("PEG0")]),e._v(" with "),s("code",[e._v("BR2A")])])]),e._v(" "),s("p",[e._v("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.")]),e._v(" "),s("p",[e._v("Now that the ACPI pathing is correct, we can finally apply our fake ID!!!")]),e._v(" "),s("p",[e._v("So the 2 parts we want to change:")]),e._v(" "),s("p",[s("strong",[e._v("device ID")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"device-id",\nBuffer (0x04)\n{\n 0xB0, 0x67, 0x00, 0x00\n},\n')])])]),s("p",[s("strong",[e._v("Model")]),e._v(":")]),e._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v('"model",\nBuffer ()\n{\n "AMD Radeon R9 390"\n}\n')])])]),s("p",[s("code",[e._v('"device-id"')]),e._v(' will be set to our PCI ID that we found in "Finding a suitable PCI ID" and '),s("code",[e._v('"model"')]),e._v(" is mainly cosmetic")]),e._v(" "),s("h2",{attrs:{id:"now-you-re-ready-to-compile-the-ssdt"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#now-you-re-ready-to-compile-the-ssdt"}},[e._v("#")]),e._v(" "),s("RouterLink",{attrs:{to:"/Manual/compile.html"}},[e._v("Now you're ready to compile the SSDT!")])],1)])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/app.b3834478.js b/assets/js/app.15add15e.js similarity index 91% rename from assets/js/app.b3834478.js rename to assets/js/app.15add15e.js index 166558d..aa39c5c 100644 --- a/assets/js/app.b3834478.js +++ b/assets/js/app.15add15e.js @@ -1,9 +1,9 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],u=e[1],c=e[2],f=0,p=[];f0?o(r(t),9007199254740991):0}},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){var r=n(33),o=n(20);t.exports=function(t){return r(o(t))}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(143),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e,n){var r=n(5),o=n(1),i=n(6),a=Object.defineProperty,s={},u=function(t){throw t};t.exports=function(t,e){if(i(s,t))return s[t];e||(e={});var n=[][t],c=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:u,f=i(e,1)?e[1]:void 0;return s[t]=!!n&&!o((function(){if(c&&!r)return!0;var t={length:-1};c?a(t,1,{enumerable:!0,get:u}):t[1]=1,n.call(t,l,f)}))}},function(t,e,n){var r=n(115),o=n(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){t.exports=!1},function(t,e,n){var r=n(5),o=n(79),i=n(35),a=n(15),s=n(34),u=n(6),c=n(110),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=s(e,!0),c)try{return l(t,e)}catch(t){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,e,n){var r=n(227),o=n(230);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var u,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),i&&(c._scopeId="data-v-"+i),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=u):o&&(u=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),u)if(c.functional){c._injectStyles=u;var l=c.render;c.render=function(t,e){return u.call(e),l(t,e)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,u):[u]}return{exports:t,options:c}}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";var r=n(0),o=n(31).filter,i=n(52),a=n(18),s=i("filter"),u=a("filter");r({target:"Array",proto:!0,forced:!s||!u},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){var r,o=n(7),i=n(186),a=n(77),s=n(36),u=n(114),c=n(74),l=n(49),f=l("IE_PROTO"),p=function(){},d=function(t){return" + diff --git a/index.html b/index.html index 678ab9a..120c201 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ - + @@ -55,6 +55,6 @@ ⟶

- + diff --git a/ssdt-methods/ssdt-easy.html b/ssdt-methods/ssdt-easy.html index 8f7cec8..35bd6e0 100644 --- a/ssdt-methods/ssdt-easy.html +++ b/ssdt-methods/ssdt-easy.html @@ -10,7 +10,7 @@ - + @@ -59,6 +59,6 @@ ⟶

- + diff --git a/ssdt-methods/ssdt-long.html b/ssdt-methods/ssdt-long.html index ea9c4a9..cb24755 100644 --- a/ssdt-methods/ssdt-long.html +++ b/ssdt-methods/ssdt-long.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/ssdt-methods/ssdt-methods.html b/ssdt-methods/ssdt-methods.html index 64d9bcf..e1f3084 100644 --- a/ssdt-methods/ssdt-methods.html +++ b/ssdt-methods/ssdt-methods.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/ssdt-methods/ssdt-prebuilt.html b/ssdt-methods/ssdt-prebuilt.html index 4ce384d..705a32b 100644 --- a/ssdt-methods/ssdt-prebuilt.html +++ b/ssdt-methods/ssdt-prebuilt.html @@ -10,7 +10,7 @@ - + @@ -54,6 +54,6 @@ ⟶

- + diff --git a/ssdt-platform.html b/ssdt-platform.html index 11e5ab8..2a2ef44 100644 --- a/ssdt-platform.html +++ b/ssdt-platform.html @@ -10,7 +10,7 @@ - + @@ -51,6 +51,6 @@ ⟶

- + diff --git a/troubleshooting.html b/troubleshooting.html index 0dc9f59..ee662f7 100644 --- a/troubleshooting.html +++ b/troubleshooting.html @@ -10,7 +10,7 @@ - + @@ -67,6 +67,6 @@ Pass 1 parse of [DSDT] ⟶

- +