Since 10.11 broke ACPI access to the backlight registers, the new version of ACPIBacklight.kext goes direct to the hardware instead of calling ACPI methods _BQC, _BCM to get/set brightness. It depends on the patch being used (how XOPT is set), of course,... because there are brightness patches that always must go through ACPI. But for the normal patches we use, it will go direct to the hardware when they are detected.
Since ACPI is not really involved (except for configuration), I thought why not have a kext that is specifically for computers (mostly laptops, all-in-ones) using the Intel PWM registers for backlight?
IntelBacklight.kext is the result of stripping out all ACPI code as it relates to manipulating the backlight from ACPIBacklight.kext. And a fair bit of cleanup.
It is available here:
https://github.com/RehabMan/OS-X-Intel-Backlight
It uses a new method for configuration, which is described in the README. I'll likely use this new configuration method in other kexts I work on.
For this kext, you can use your existing PNLF patch ("Brightness Fix (HD3000/HD4000)", or "Brightness Fix (Haswell/Broadwell)", or you can just use the simple "Brightness Fix" (which is easier to apply).
Advanced users could also construct an SSDT that has only the PNLF in it.
For example:
Code:
DefinitionBlock ("SSDT-PNLF.aml", "SSDT", 1, "PNLF", "PNLF", 0x00003000)
{
Scope (_SB)
{
Device (PNLF)
{
Name (_ADR, Zero)
Name (_HID, EisaId ("APP0002"))
Name (_CID, "backlight")
Name (_UID, 10)
Name (_STA, 0x0B)
}
}
}
//EOF
The SSDT above, is just this boiler-plate empty SSDT with the "Brightness Fix" patch applied to it:
Code:
DefinitionBlock ("SSDT-PNLF.aml", "SSDT", 1, "PNLF", "PNLF", 0x00003000)
{
}
//EOF
Custom configurations are described in the README, as well as download locations. Read it carefully.
As usual, this is new code (v1.0.0), so there could be bugs. I've tested the kext on HD4400 Haswell (my u430), and HD4000 Ivy (my 4540s).
It has a higher IOProbeScore, so it will override ACPIBacklight.kext, but it is best to remove ACPIBacklight.kext when using IntelBacklight.kext.
Note: IntelBacklight.kext uses intel-backlight-level in NVRAM, not acpi-backlight-level, so don't be surprised you lose your backlight level preference on first boot.