Fixing Backlight (SSDT-PNLF)
What this SSDT does
The purpose of this SSDT is to create a PNLF device for macOS to play with, specifically one with a hardware ID of
APP0002. Luckily WhateverGreen will handle the rest of the work for us.
Methods to make this SSDT
For the backlight fix, there are 2 methods you can choose from:
By far the easiest method, all you need to do is download the following file:
Main things to note with this method:
- Assumes GPU pathing, works great for 99% of devices but if you're having issues controlling backlight this may be something to look at
- 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
Finding the ACPI path
Unfortunately there is no guidance for this yet. Try on Linux or Windows.
These steps work on Ubuntu and may work on other distros. If not then try the procedure for Windows.
lspci command to get your display adapters PCI identification number.
The output here will be different on your system!
For this guide, we're gonna assume Windows is already on this laptop, as otherwise creating this SSDT is a bit more difficult.
# lspci -D 0000:00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 0000:00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 0000:00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 0000:00:02.0 VGA compatible controller: VMware SVGA II Adapter 0000:00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) 0000:00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
Search the output for an entry that looks like your display adapter. E.g: In this example we have
VGA compatible controller with PCI number
0000:00:02.0. The format of this number is
Now use this command from a Terminal to find the ACPI path for your display adapter
# cat /sys/class/pci_bus/<domain:bus>/device/<domain:bus:device:function>/firmware_node/path
# cat /sys/class/pci_bus/0000:00/device/0000:00:02.0/firmware_node/path \_SB_.PCI0.GFX0 <-- The ACPI path
Further details at this link.
Open DeviceManager, and head to the following:
Device Manager -> Display Adapters -> Properties -> Details > BIOS device name
From the above example, we can see our display is hooked up to
Edits to the sample SSDT
Now that we have our ACPI path, lets grab our SSDT and get to work:
By default, this uses
\_SB.PCI0.GFX0 for the pathing. you'll want to rename accordingly. For this example, we'll assume your pathing is
External (_SB_.PCI0.GFX0, DeviceObj) <- Rename this Scope (_SB.PCI0.GFX0) <- Rename this Device(_SB.PCI0.GFX0.PNLF) <- Rename this
Following the example pathing we found, the SSDT should look something like this:
External (_SB_.PCI0.GPU0, DeviceObj) <- Renamed Scope (_SB.PCI0.GPU0) <- Renamed Device(_SB.PCI0.GPU0.PNLF) <- Renamed
Compiling the SSDT
With the SSDT done, you're now ready to compile the SSDT!
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: