Contribute
Register

[Guide] Laptop backlight control using AppleBacklightFixup.kext

Follow the ProBook guide. Use the 'beta' branch.
That worked thank you! Though 100% brightness seems like 20%, and I can't go any higher. How would I go about fixing this on my Ivy Bridge laptop?
 

Attachments

  • Chad’s MacBook ProIOReg.zip
    560.3 KB · Views: 66
  • CLOVER.zip
    1.7 MB · Views: 76
  • RehabMan.zip
    59.9 KB · Views: 66
  • TerminalOutput.zip
    1.1 KB · Views: 85
That worked thank you! Though 100% brightness seems like 20%, and I can't go any higher. How would I go about fixing this on my Ivy Bridge laptop?

It is a problem with specific screens.
As you can see in ioreg, you ended up with the F10Pxxxx instead of F10Txxxx profile in ApplePanel (look at PNLF@0->AppleIntelPanelA, then property ApplePanel).
It is being discussed in this thread.
No generic solution at this point...
 
It is a problem with specific screens.
As you can see in ioreg, you ended up with the F10Pxxxx instead of F10Txxxx profile in ApplePanel (look at PNLF@0->AppleIntelPanelA, then property ApplePanel).
It is being discussed in this thread.
No generic solution at this point...
What are the chances of the IntelBacklight.kext being updated to 10.12.4? Also is there anything I can do to help find a solution? Thanks.
 
What are the chances of the IntelBacklight.kext being updated to 10.12.4?

It is not possible to predict the future.
Currently, we don't know exactly what is wrong that causes IntelBacklight.kext to not work...
 
Is your laptop using eDP instead of LVDS?
Supported display-ids can be seen in the Info.plist for AppleBacklight.kext. You should look at only those profiles that are FxxPxxxx. Keep in mind you'll need to change the _UID to match as well, depending on which one you want to try.

I did some tests with different product ids
A00F
- System Information display properties, I see
Display Type: Built-In Retina LCD
Resolution: 2880 x 1800 Retina
- Settings/Display only shows 1600x900 resolution.
- IoReg again shows default profile.
A007 (F10Ta007 ??)
- System Information display properties, I see
Display Type: LCD
Resolution: 1600 x 900 @ 60 Hz
- Settings/Display only shows following resolutions.
1920x1080
1600x900
1344x756
1280x720
- IoReg again shows default profile.

Both of those edits again gives working backlight. However after successful change, screen resolution and brightness settings resets of course.

What you mean by UID? I don't know how to change this one.
 
I did some tests with different product ids
A00F
- System Information display properties, I see
Display Type: Built-In Retina LCD
Resolution: 2880 x 1800 Retina
- Settings/Display only shows 1600x900 resolution.
- IoReg again shows default profile.
A007 (F10Ta007 ??)

The only way to know which profile will be selected is to install a AppleBacklightInjector.kext that has all the profiles for a given display-id (as I uploaded to you earlier).

What you mean by UID? I don't know how to change this one.

_UID is set in SSDT-PNLF.aml.
 
The only way to know which profile will be selected is to install a AppleBacklightInjector.kext that has all the profiles for a given display-id (as I uploaded to you earlier).



_UID is set in SSDT-PNLF.aml.

EDID patch, your kext
slider works but can't increase after certain level and still too dark. Profile this time is set to F10Pxxxx

EDID patch, your kext,SSDT-PNLF.aml
slider works but again it is dark. Profile is again set to F10Pxxxx

So it means I should change UID in SSDT-PNLF.aml to some profile value from Info.PLIST F10P values? ie F10P9C74 so that display id in EDID is 9C74 ?
 
EDID patch, your kext
slider works but can't increase after certain level and still too dark. Profile this time is set to F10Pxxxx

EDID patch, your kext,SSDT-PNLF.aml
slider works but again it is dark. Profile is again set to F10Pxxxx

SSDT-PNLF.aml will be needed to set PWMMax (to same as it would be set after a sleep/wake).
But your results above prove that changing the display-id in EDID is not changing the profile used.

So it means I should change UID in SSDT-PNLF.aml to some profile value from Info.PLIST F10P values? ie F10P9C74 so that display id in EDID is 9C74 ?

Assuming you're not using an injector and no patches for AppleBacklight...
Then yes... you make EDID display-id match one of the FxxP profiles, and make _UID match also.
Then AppleBacklight.kext will pick up that profile.
If you find a good combo, we can simply put that data in the injector (for the FxxPxxxx profiles).
Always verify what you're doing by looking in ioreg to see which profile is being picked up.
If you see an entire list of profiles in 'ApplePanels', then you didn't match anything... (problem with EDID display-id or _UID)
If you see just 'ApplePanel' with one entry, then you know you matched that entry.

Note: ApplePanels entries are case sensitive. And sprintf format specifier %04x is being used. Therefore, you will find hex values such as 9C74 must use '9c74', not '9C74'.
 
Last edited:
SSDT-PNLF.aml will be needed to set PWMMax (to same as it would be set after a sleep/wake).
But your results above prove that changing the display-id in EDID is not changing the profile used.
But changing EDID affects brightness slider. Also affects supported resolutions of display. It certainly doing something but as you said it doesn't cause profile selection :(

Assuming you're not using an injector and no patches for AppleBacklight...
Then yes... you make EDID display-id match one of the FxxP profiles, and make _UID match also.
Then AppleBacklight.kext will pick up that profile.
If you find a good combo, we can simply put that data in the injector (for the FxxPxxxx profiles).
Always verify what you're doing by looking in ioreg to see which profile is being picked up.
If you see an entire list of profiles in 'ApplePanels', then you didn't match anything... (problem with EDID display-id or _UID)
If you see just 'ApplePanel' with one entry, then you know you matched that entry
I tried 9C74 but it didn't cause any change. I think for now better option is delete .kext and .aml file and just use EDID patch because that is the only way I get full brightness. Tomorrow I will try another options that comes to my mind and let you know.
 
I tried 9C74 but it didn't cause any change. I think for now better option is delete .kext and .aml file and just use EDID patch because that is the only way I get full brightness. Tomorrow I will try another options that comes to my mind and let you know.

You should test that you have same brightness levels prior to sleep as after sleep/wake cycle.
Because without SSDT-PNLF.aml, you will not be initializing PWMMax.

Note: You can also use ACPIDebug.kext + ACPIPoller.kext + appropriate ACPI code to periodically print the PWM registers to the kernel log. This can be useful in discovering what is happening at the hardware level regarding brightness in the various scenarios. Definitely worth looking into.
 
Back
Top