# Fixing Trackpads: Manual
# Finding the ACPI path
Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from Dumping the DSDT and Decompiling and Compiling with either MaciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an ACPI extension (opens new window) 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:
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 <- Proper variables
}
Following the example pathing we found, the SSDT should look something like this:
After:
External(GPEN, FieldUnitObj) <- Declare the right variables
External(SBRG, FieldUnitObj) <- Declare the right variables
Scope (\)
{
If (_OSI ("Darwin"))
{
GPEN = One <- Change to the right variables
SBRG = One <- Change to the right variables
}
# Compiling the SSDT
With the SSDT done, you're now ready to compile the SSDT!
# 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: