Contribute
Register

Native Brightness working without 'blinkscreen' using patched AppleBacklight.kext

Status
Not open for further replies.

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,805
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Thanks a lot, worked like a charm, my brightness is much better now,

a few more things i would like to know, whenever i want to change the data, do i have to do it through the script and reinstall the kext, fix permissions, rebuild cache and reboot every time, or is there an easier way, I'm assuming i can fix permissions for just the installed kext right? I also want to know what is the lowest and highest values my panel can take and how to go about editing the values manually.

You can just edit your injector kext's Info.plist directly, then install via Kext Wizard again (repair permissions, rebuild cache, reboot). No need to run the script at this point.

With HD3000 (and HD4000) the range is 0-0x710. You will notice that the script generates right up to the max, where the built-in kext data from Apple usually sets the highest value at somewhat lower than that. Yes, most Macs are running with the max brightness less than what is possible. Notice that with the data I showed, the max was 0x64c (so 0x64c/0x710=89% of theoretical max).

The lowest value will depend on the panel... you'll need to experiment. When you use a value lower than what the panel can handle, you'll either get a flickering display or just black.
 
Joined
May 17, 2013
Messages
8
Mac
Classic Mac
Mobile Phone
You can just edit your injector kext's Info.plist directly, then install via Kext Wizard again (repair permissions, rebuild cache, reboot). No need to run the script at this point.

With HD3000 (and HD4000) the range is 0-0x710. You will notice that the script generates right up to the max, where the built-in kext data from Apple usually sets the highest value at somewhat lower than that. Yes, most Macs are running with the max brightness less than what is possible. Notice that with the data I showed, the max was 0x64c (so 0x64c/0x710=89% of theoretical max).

The lowest value will depend on the panel... you'll need to experiment. When you use a value lower than what the panel can handle, you'll either get a flickering display or just black.

ok, feels like im missing something how do you convert the string of data in the info.plist to those hexadecimal values and back, also after editing the script i cant seem to get the injector kext, only the AppleBacklight but it works okay.
 
Joined
May 17, 2013
Messages
8
Mac
Classic Mac
Mobile Phone
ok, feels like im missing something how do you convert the string of data in the info.plist to those hexadecimal values and back, also after editing the script i cant seem to get the injector kext, only the AppleBacklight but it works okay.

never mind, had been using the old script.
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,805
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
ok, feels like im missing something how do you convert the string of data in the info.plist to those hexadecimal values and back,

Not sure what your question is... The data is right inside the injector's Info.plist.

also after editing the script i cant seem to get the injector kext, only the AppleBacklight but it works okay.

What do you mean by "cant seem to get the injector kext"?
 
Joined
May 17, 2013
Messages
8
Mac
Classic Mac
Mobile Phone
Not sure what your question is... The data is right inside the injector's Info.plist.
Ahh figured it out i should be using xcode, i was editing the values with a text editor so the data was showing up as a weird string ,

What do you mean by "cant seem to get the injector kext"?

the script only produced the AppleBacklight.kext and not the AppleBacklightInjector.kext, but im happy using the non injector one

On the other hand, tried experimenting with the values, apparently the macbook panel can go down to ridiculously low values (currently set the minimum at 0x5 havent tried going lower though but im sure it can) the ideal low value for me is 0x10 then i will have to figure out how to fill in the other values manually.
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,805
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Ahh figured it out i should be using xcode, i was editing the values with a text editor so the data was showing up as a weird string ,

Not a "weird string"... <data> values are base64 encoded. You should always use a plist editor (such as Xcode).

the script only produced the AppleBacklight.kext and not the AppleBacklightInjector.kext, but im happy using the non injector one

The v2 script generates the Injector (second attachment).

It is best to use an injector. Otherwise, system updates will overwrite your patched AppleBacklight.kext.
 
Joined
Jan 11, 2014
Messages
103
Motherboard
Samsung NP530U3B
CPU
i5-2467M
Graphics
Intel HD 3000
Mac
Classic Mac
Mobile Phone
  1. iOS
Hi RehabMan, do you remember me? The guy with the weird backlight problems... and we finally managed to solve it on Mavericks by using ACPIBacklight to inject a value to a memory register :)

now with El Capitan it doesn't work anymore: I'm using the newest ACPIBacklight (2015-08-13) and the same DSDT and Clover config as I use on Mavericks. Decided to give this new method a try then (yes, I did patch my DSDT with 13_Brightness before running the script), but no success, my maximal brightness is still very low. I then uninstalled ACPIBacklight and kept AppleBacklightInjector, but the only difference is that now I can change the brightness levels, however the max is still the same very low... :(

I believe it's just a matter of injecting that value again and for some reason this is not working anymore. Any tips? Any debug info you'd like me to share? Thanks once again!

edit: small detail I've just noticed... Any reason why you're using BAR1 offset by 4 in relation to what you previously used? My old DSDT has BAR1 defined at 0xE1180 so the values inside Field (BRIT) are also offset by 4 in relation to the new 13_Brightness patch, where BAR1 is defined at 0xE1184.
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,805
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Hi RehabMan, do you remember me? The guy with the weird backlight problems... and we finally managed to solve it on Mavericks by using ACPIBacklight to inject a value to a memory register :)

now with El Capitan it doesn't work anymore: I'm using the newest ACPIBacklight (2015-08-13) and the same DSDT and Clover config as I use on Mavericks. Decided to give this new method a try then (yes, I did patch my DSDT with 13_Brightness before running the script), but no success, my maximal brightness is still very low. I then uninstalled ACPIBacklight and kept AppleBacklightInjector, but the only difference is that now I can change the brightness levels, however the max is still the same very low... :(

Correct patching procedure here: http://www.tonymacx86.com/yosemite-...ching-dsdt-ssdt-laptop-backlight-control.html

If you want me to check what you have...

Download patchmatic: https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/RehabMan-patchmatic-2015-0107.zip
Extract the 'patchmatic' binary from the ZIP. Copy it to /usr/bin, such that you have the binary at /usr/bin/patchmatic.

In terminal,
Code:
if [ -d ~/Downloads/RehabMan ]; then rm -R ~/Downloads/RehabMan; fi
mkdir ~/Downloads/RehabMan
cd ~/Downloads/RehabMan
patchmatic -extract

Note: It is easier if you use copy/paste instead of typing the commands manually.

Post contents of Downloads/RehabMan directory (as ZIP).

Also, post ioreg: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.


edit: small detail I've just noticed... Any reason why you're using BAR1 offset by 4 in relation to what you previously used? My old DSDT has BAR1 defined at 0xE1180 so the values inside Field (BRIT) are also offset by 4 in relation to the new 13_Brightness patch, where BAR1 is defined at 0xE1184.

Low bits are various flags, not part of the address. They are masked with And.
 
Joined
Jan 11, 2014
Messages
103
Motherboard
Samsung NP530U3B
CPU
i5-2467M
Graphics
Intel HD 3000
Mac
Classic Mac
Mobile Phone
  1. iOS
Thank you very much, I've reapplied the PNLF patch for Sandy Bridge and it worked now fine for both Mavericks and El Capitan. Seems there have been some changes to the patch :)
I need to use ACPIBacklight though (nearly obvious). And currently the AppleBacklightInjector is installed together without any problems. Should I remove it?
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,805
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Thank you very much, I've reapplied the PNLF patch for Sandy Bridge and it worked now fine for both Mavericks and El Capitan. Seems there have been some changes to the patch :)
I need to use ACPIBacklight though (nearly obvious).

Yes/Yes. And lots of changes to ACPIBacklight.kext, as on 10.11, it doesn't use ACPI to set the backlight. You'll notice IntelBacklightHandler in your IGPU tree in ioreg, which handles backlight for ACPIBacklight.kext instead of _BCM/_BQC.

And currently the AppleBacklightInjector is installed together without any problems. Should I remove it?

AppleBacklightInjector.kext will only be used when ACPIBacklight.kext is not present. It does no harm to keep it, and it is a nice fallback for the case ACPIBacklight.kext does something strange and you want to test with native AppleBacklight.kext.
 
Status
Not open for further replies.
Top