Jump to content

ACPI Backlight Driver

  • Please log in to reply
221 replies to this topic



    InsanelyMac Protégé

  • Members
  • Pip
  • 3 posts

Hello everyone,
i just wanted to share my experience and solution for Intel GMA950 (Notebook: Lenovo Thinkpad R60).
Although I'm talking about Hardware that is quite old now (TP R60 is from 2007), the information may help some others.
First of all my system specs:
Lenovo Thinkpad R60
Core 2 Duo T5500 @1,66 Ghz
4 GB RAM (3 usable due to chipset limit)
Intel GMA950 w. 64 MB VRAM
1400x1050 Panel
Mac OS X Lion 10.7.3
GMA950 kext plist-patched (27A2) & Intel Framebuffer kext older Version (7.0.45)
I didn't have problems with backlight after sleep (was working).
Brightness slider & scroll lock / pause keys were also working properly (with a simple device pelf) inside the DSDT.
The only problem was the brightness control not working properly after sleep (display much too bright, fn-keys working, but brightness only 4 steps after sleep and these steps too small).
After trying a lot with dsdt and _bcm _bcl _bqc methods, i simply searched the web for the backlight register of the gma950.
Success: the register is at offset 0x00061254
To write to the register, you have to find your VGA's BAR0:
lspci -vv -> look for "Region 0"
"Region 0" in my case: 0xEE100000
Take Calculator (Hex-Mode), add 0x00061254 + 0xEE100000: voila, our address to write is 0xEE161254.
This address is NOT accessible in PCI-Memory, it must be accessed per physical memory.
And now the interesting thing:
Like i said, after sleep the brightness was always too high & couldn't be controlled anymore.
Take reggie_se as root and write some value to the address:
sudo /usr/bin/reggie_se -D PhysAddr -w 0x59be266c -a 0xEE161254 -B 32
And now: the brightness slider is working again! Working correctly, like on a fresh boot :-)

To get the correct values use the brightness slider and after every step do:

sudo /usr/bin/reggie_se -D PhysAddr -r -a 0xEE161254 -B 32

Or run Reggie SE.app and watch the register there (to see the PCI-Tab in Reggie SE i had to start it with sudo from the command line)
So this shows that somehow OS X (on standby) loses the correct table of values (defined in method _bcl) and is writing wrong value to the register.

If you correct that with the reggie_se command, the system gains control back.
Btw: i have method _wak with a write to the register (store 0x59be266c LEVL) - but it doesn't work.

I guess the method _wak isn't executed or fails on another reason.
The same write from dsdt works on boot (i put it in method _ini inside device PCI0).
So i decided do just put the reggie_se command in a shell script & execute it on wakeup (sleepwatcher: .wakeup file).
This brings the brightness control back working.


To restore to the same value as before sleep, i let my script write the current value to a file (/tmp/blvalue) and after sleep i read this value and write back to the register.


I do NOT use ACPIBacklight.kext, it isn't necessary on my system.


Hope this helps someone.





    InsanelyMac Protégé

  • Members
  • Pip
  • 3 posts

And again some Information for a - meanwhile - legacy notebook:

I got brightness control working on a DELL Inspiron 6400 (E1505):



Edit your PNLF Device as described in the first post.

Then you have to change the variable "WLG" from "Windows 2006" to "Darwin":


Orig Value:   Name (WLG, "Windows 2006")

New Value:     Name (WLG, "Darwin")


Do NOT use "WXP" in this case, it won't work!

If you search Google, you will find a lot of recommendations to use "Windows 2001" for OS X, as the ACPI-behaviour seems to be almost identical.

In case of the Inspiron 6400, this route is the wrong one.


After changing the value to "Darwin", the brightness control started to work.

About 10 brightness-levels, sun-bezel is properly shown.

Even better:

Brightness value is properly restored after reboot / standby.


I also tried without the ACPIBacklight.kext, but this doesn't work.

You need both the "Darwin"-entry AND ACPIBacklight.kext in /S/L/E.


Don't forget to fix permissions and rebuild caches after installing the kext:

sudo chown -R root:wheel /System/Library/Extensions

sudo chmod -R 755 /System/Library/Extensions

sudo touch /System/Library/Extensions (rebuilds the cache)

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2015 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy