Jump to content

UPDATED 20.12. GenericBrightness.kext


ivik
 Share

674 posts in this topic

Recommended Posts

I wonder why the brightness for me works only if I boot the system in ARCH=I386 mode...

 

When it boots normally (LP_64), nothing works! ;)

 

Please give me some hint... anyone... my graphic card is GMA950 (Intel)

 

Hello ivik,

I hope you can help me.

 

In my thinkpad there's no way for me to control the brightness of my screen, and neither in the "screen" control panel I have the slider to correct or change lcd brightness.

So everytime I have to change it before the laptop boots into SL, by using the Fn + Home (to raise up brightness) or Fn + End (to lower brightness).

 

I am not keen in making changes to DSDT, I don't want to break up something... so can you tell me what do I have to do?

Can you have a look at my actual DSDT and see if its possible to modify it, to allow me to change brightness in snow leopard? I just want a slider to make it possible to control it otherwise I have to reboot everytime just to change brightness level :)

 

I attach my actual working DSDT here:

 

http://www.mediafire.com/?5bjexyk8zlmg5r2

 

Thanks in advance

Link to comment
Share on other sites

Intel graphics drivers are not 64 bit.

But with "graphic enabler" option enabled in chameleon at boot, it works anyway, even in LP_64 and it's stable. Only missing is the brightness control.

 

I did not try... but If I install just your kext "GenericBrightness.kext" should add the brightness control option in 64-bit mode?

Or do I still have to add functions in DSDT?

 

Sorry if i'm a bit confused ;)

Link to comment
Share on other sites

Please post yout dsdt.dsl (not aml, i couldn't decompile the one you posted before)

 

Maybe it is working, but hardware acceleration is not enabled because GMA drivers are 32bit.

 

You can't install my kext before dsdt edit.

 

"should add the brightness control option in 64-bit mode" => don't understand what you mean by that.

Link to comment
Share on other sites

Please post yout dsdt.dsl (not aml, i couldn't decompile the one you posted before)

 

Maybe it is working, but hardware acceleration is not enabled because GMA drivers are 32bit.

 

You can't install my kext before dsdt edit.

 

"should add the brightness control option in 64-bit mode" => don't understand what you mean by that.

hi again ivik,

i just extracted the dsl from my system (I hope I did the right thing)

 

http://www.mediafire.com/?c9ukrac3sro6dzc

 

in the last line you did not understand i meant... mmm... if there's a chance to see the slide brightness control also in 64bit...because now in Preferences ---> Monitor, I see the brightness level only in 32bit, in 64 I have no chance to control it, somehow...

 

try to have a look at my dsl when you can... and see if there's something we can try...

thanks.

Link to comment
Share on other sites

Don't know why but the kext doen't start automatically. It placed into /s/l/e and started only after

bash-3.2# kextutil /System/Library/Extensions/GenericBrightness.kext/
bash-3.2#

Link to comment
Share on other sites

Yeah... i added different poller variable since brightness from ioreg is not available before login.

It waits 10 sec if brightness is not available before next attempt.

You could delete that timer value if bothers you.

Does it compile on on tiger?

Also... i found bug today. Missed one index . :) It should look like this now + one variable less:

if (fLastBrightness != fCurrentBrightness)
{
fLastBrightness = fCurrentBrightness;
// IOLog("brightnessmin %d, brightnessmax %d, currentbrightness %d\n", (int)fMinBrightness, (int)fMaxBrightness, (int)fCurrentBrightness);


OSObject * param = OSNumber::withNumber(GetValueFromArray(brightnessTable,((fCurrentBrightness*(brightnessIndex-3))/fMaxBrightness)+2),8);

SetBrightness("_BCM", param);
}
Link to comment
Share on other sites

OK, I decrease timeout to 2sec and apply your patch.

I also compile without PPC arch

Your

bash-3.2# kextlibs --undef /Users/slice/Downloads/Brightness/GenericBrightness.kext 
For x86_64:
com.apple.iokit.IOGraphicsFamily = 2.2
com.apple.kpi.iokit = 10.5
com.apple.kpi.libkern = 10.5
For i386:
com.apple.iokit.IOGraphicsFamily = 2.2
com.apple.kpi.iokit = 10.5
com.apple.kpi.libkern = 10.5
For ppc:
com.apple.kpi.iokit = 10.5
com.apple.kpi.libkern = 10.5

3 symbols not found in any library kext:
_gIODisplayBrightnessKey
__ZN9IODisplay15getIntegerRangeEP12OSDictionaryPK8OSSymbolPlS5_S5_
__ZN18IOBacklightDisplay9metaClassE
bash-3.2#

and my

bash-3.2# kextlibs --undef /Users/slice/Downloads/Brightness/GenericBrightnessSVIapple/build/Release/GenericBrightness.kext 
For all architectures:
com.apple.iokit.IOGraphicsFamily = 2.2
com.apple.kpi.iokit = 10.5
com.apple.kpi.libkern = 10.5

bash-3.2#

But the kext is still not started at boot.

 

Tiger will be available at evening, little later.

Link to comment
Share on other sites

Hi ivik, i have see what you have to say me with rweverything but it's impossible to understand. The values, all values change always indipendently for min max of light screen. It's impossible to understand. Any help please? Can try something in dsdt and make some attempts?

 

Thank you

Link to comment
Share on other sites

Hmm... don't know why that linking error appears. These are my settings:

grabi.png

 

Are you using includes from your system or supplied with my archive? My are little modified.

 

A also get that linkinkg eror with that check... but it works fine here and it worked for others.

I know i had these problems without proper plist (com.apple.iokit.IOGraphicsFamily)

 

 kextlibs --undef GenericBrightness.kext
For x86_64:
   com.apple.iokit.IOGraphicsFamily = 2.2
   com.apple.kpi.iokit = 10.5
   com.apple.kpi.libkern = 10.5
For i386:
   com.apple.iokit.IOGraphicsFamily = 2.2
   com.apple.kpi.iokit = 10.5
   com.apple.kpi.libkern = 10.5
For ppc:
   com.apple.kpi.iokit = 10.5
   com.apple.kpi.libkern = 10.5

   3 symbols not found in any library kext:
_gIODisplayBrightnessKey
__ZN9IODisplay15getIntegerRangeEP12OSDictionaryPK8OSSymbolPlS5_S5_
__ZN18IOBacklightDisplay9metaClassE

 

 

Hi ivik, good work. Can you help me? This is my dsdt: http://www.mediafire.com/?4uukl7to7ti5r27

 

It's very complicated for me. Video card is gfx0. It's a sony vaio and all components work flawlessy, no problems. The dsdt is marked by asus.

 

Thank you for help. I'm french. ;)

 

Why is marked as asus? Could you provide me with really (virgin) clean dsdt?

I know that sony has snc device for brightness. One user got it working, but your snc device is empty.

Link to comment
Share on other sites

Read this post:http://www.insanelymac.com/forum/index.php?showtopic=236835&st=180

 

You don't have those methods... and PCI0.LPCB.SNC.SBRT doesn't exist... don't know. Maybe you deleted it or it is some other method.

 

It is hard to say...

Link to comment
Share on other sites

Hi ivik, i have try, thanks. The slide of brightness in monitor preferences works as before, but the problem is the same for me, the values are not read correctly maybe, the screen begin all black after a few seconds if i decrease brightness, i think that still something of wrong

 

;)

Link to comment
Share on other sites

Hmm... don't know why that linking error appears. These are my settings:

 

Are you using includes from your system or supplied with my archive? My are little modified.

No problem. The error is for PPC arch that you included in the project. I exclude.

 

With Tiger I have no result yet.

I changed IODisplay.h and IOFramebuffer.h to Tiger's version and the project is successfully compiled. And yes, project settings, SDK, compiler, archs.

Is it good?

But I have some problem with DSDT so can't say anything. I had very few time to do that.

The kext panic if _BCM is absent?

Link to comment
Share on other sites

SUCCESS !!!

I managed to get brightness working on my laptop (Nvidia G310m) ! Although it doesn't use your kext, ivik, but I have used it a lot during my research and I think it is interesting information for other nvidia users.


Now, before I get to how I did it, I'd like to warn you that I have just succeeded moments ago and I still need to check temperatures and other harmful factors that may cause harm to the hardware.

Apparently, all it needed was the @0,pwm-info key injected, I took this key from a MacBookPro6,1 dump,
Here, since our graphics card were similar and injected it via GFX strings. Additionally, I added a PNLF device to my DSDT ( usefulness is still to be tested ).

Here is the Pnlf device:

Device (PNLF)
{
Name (_HID, EisaId ("APP0002"))
Name (_CID, "backlight")
Name (_UID, 0x0A)
Name (_STA, 0x0B)
}

And here is the injected part, you can inject it via DSDT or GFX string, it is your choice. You can look up information on how to do that on this forum.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<string>0x00000001</string>
<key>@0,EDID</key>
<data>AP///////wBMo0UyAAAAAAASAQCAIhN4Cof1lFdPjCcnUFQAAAABAQEBAQEBAQEBAQEBAQEBQRxWoFAAFjAwICUAWMIQAAAZAAAADwAAAAAAAAAAACOHAmQBAAAA/gBTQU1TVU5HCiAgICAgAAAA/gBMVE4xNTZBVDAyMDAwAHw=</data>
<key>@0,backlight-control</key>
<data>AQAAAA==</data>
<key>@0,use-backlight-blanking</key>
<data></data>
<key>@1,can-hot-plug</key>
<data></data>
<key>@0,pwm-info</key>
<data>AhgAZJBZAgAIUgAApRwAAAAEAAABAAAA</data>
<key>AAPL,backlight-control</key>
<data>AQAAAA==</data>
<key>AAPL,aux-power-connected</key>
<data>AQAAAA==</data>
<key>@0,built-in</key>
<string>0x01</string>
<key>@0,compatible</key>
<data>TlZEQSxOVk1hYwA=</data>
<key>@0,device_type</key>
<data>ZGlzcGxheQA=</data>
<key>@0,display-cfg</key>
<string>0x0036ffff</string>
<key>@0,name</key>
<data>TlZEQSxEaXNwbGF5LUEA</data>
<key>@1,compatible</key>
<data>TlZEQSxOVk1hYwA=</data>
<key>@1,device_type</key>
<data>ZGlzcGxheQA=</data>
<key>@1,display-cfg</key>
<string>0x013eff00</string>
<key>@1,name</key>
<data>TlZEQSxEaXNwbGF5LUIA</data>
<key>AAPL,slot-name</key>
<string>Slot-1</string>
<key>NVCAP</key>
<data>BAAAAAAAAQD+AAAAAAAACgAAAAA=</data>
<key>NVPM</key>
<data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
<key>VRAM,totalsize</key>
<string>0x20000000</string>
<key>device_type</key>
<data>TlZEQSxQYXJlbnQA</data>
<key>model</key>
<data>R2VGb3JjZSBHMzEwTQA=</data>
<key>rom-revision</key>
<data>IEJJT1MA</data>
</dict>
</dict>
</plist>

It all began to work for me when I injected the @0,pwm-info key however some of the other keys may still be necessary (especially the keys concerning backlight).

Again, this may be dangerous, be careful when or if you try this out. I am not responsible if this bricks your hardware
Link to comment
Share on other sites

Yeah. I compiled just intel 32/64 and no missing symbols. But you said that driver wasn't auto loaded.

Maybe changing IODisplay.cpp from tiger could fix that. getIntegerRange is from there.

It doesn't panic if _BCM is missing. One user reported panic when _BQC didn't return value(all.zip package)

Didn't test it when _BCL is missng.

Do IODisplayParamets look the same as on SL? And service has same name (IOBacklightDisplay) and IODisplayGUID?

I never compiled something for tiger.. so don't know.



 

SUCCESS !!!

I managed to get brightness working on my laptop (Nvidia G310m) ! Although it doesn't use your kext, ivik, but I have used it a lot during my research and I think it is interesting information for other nvidia users.


Now, before I get to how I did it, I'd like to warn you that I have just succeeded moments ago and I still need to check temperatures and other harmful factors that may cause harm to the hardware.

Apparently, all it needed was the @0,pwm-info key injected, I took this key from a MacBookPro6,1 dump,
Here, since our graphics card were similar and injected it via GFX strings. Additionally, I added a PNLF device to my DSDT ( usefulness is still to be tested ).

Here is the Pnlf device:
Device (PNLF)
{
Name (_HID, EisaId ("APP0002"))
Name (_CID, "backlight")
Name (_UID, 0x0A)
Name (_STA, 0x0B)
}

And here is the injected part, you can inject it via DSDT or GFX string, it is your choice. You can look up information on how to do that on this forum.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<string>0x00000001</string>
<key>@0,EDID</key>
<data>AP///////wBMo0UyAAAAAAASAQCAIhN4Cof1lFdPjCcnUFQAAAABAQEBAQEBAQEBAQEBAQEBQRxWoFAAFjAwICUAWMIQAAAZAAAADwAAAAAAAAAAACOHAmQBAAAA/gBTQU1TVU5HCiAgICAgAAAA/gBMVE4xNTZBVDAyMDAwAHw=</data>
<key>@0,backlight-control</key>
<data>AQAAAA==</data>
<key>@0,use-backlight-blanking</key>
<data></data>
<key>@1,can-hot-plug</key>
<data></data>
<key>@0,pwm-info</key>
<data>AhgAZJBZAgAIUgAApRwAAAAEAAABAAAA</data>
<key>AAPL,backlight-control</key>
<data>AQAAAA==</data>
<key>AAPL,aux-power-connected</key>
<data>AQAAAA==</data>
<key>@0,built-in</key>
<string>0x01</string>
<key>@0,compatible</key>
<data>TlZEQSxOVk1hYwA=</data>
<key>@0,device_type</key>
<data>ZGlzcGxheQA=</data>
<key>@0,display-cfg</key>
<string>0x0036ffff</string>
<key>@0,name</key>
<data>TlZEQSxEaXNwbGF5LUEA</data>
<key>@1,compatible</key>
<data>TlZEQSxOVk1hYwA=</data>
<key>@1,device_type</key>
<data>ZGlzcGxheQA=</data>
<key>@1,display-cfg</key>
<string>0x013eff00</string>
<key>@1,name</key>
<data>TlZEQSxEaXNwbGF5LUIA</data>
<key>AAPL,slot-name</key>
<string>Slot-1</string>
<key>NVCAP</key>
<data>BAAAAAAAAQD+AAAAAAAACgAAAAA=</data>
<key>NVPM</key>
<data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
<key>VRAM,totalsize</key>
<string>0x20000000</string>
<key>device_type</key>
<data>TlZEQSxQYXJlbnQA</data>
<key>model</key>
<data>R2VGb3JjZSBHMzEwTQA=</data>
<key>rom-revision</key>
<data>IEJJT1MA</data>
</dict>
</dict>
</plist>

It all began to work for me when I injected the @0,pwm-info key however some of the other keys may still be necessary (especially the keys concerning backlight).

Again, this may be dangerous, be careful when or if you try this out. I am not responsible if this bricks your hardware


Good job!!!!

And all brightness levels are oke? Are you inejcting your EDID?
Link to comment
Share on other sites

Brightness levels seem to be OK, as for the EDID I injected prior to all the attempts I made to get brightness control working because without it screen colours would be strange.

Here is the brightness section on my IOReg

 

post-662703-1291760082_thumb.jpg

 

Now I just need to map my brightness keys to Fn+Up and Fn+Down :P , I seem to remember that there was some info on this thread, a few pages back.

Link to comment
Share on other sites

 Share

×
×
  • Create New...