Jump to content
Welcome to InsanelyMac Forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
ivik

UPDATED 20.12. GenericBrightness.kext

674 posts in this topic

Recommended Posts

Hi Ivik,

 

i have a X3100 and i have working brightness slider with device pnlf and a version of the appleintelx3100fb.kext (1.5.18) + efi string.with your kext i cant change brightness any more. i dont have a method to store the brightness level in my dsdt, maybe you will find it? thank you very much in advance, Alex

dsdt.dsl.zip

Share this post


Link to post
Share on other sites

 

 

...
Try runing RW-everything under windows and watch EC register for changes when brightness is changed.

Also... try with different _BCL return tables...

Hi ivik
I was testing your kext with different DSDT settings last couple of days but have no luck with it

I wrote similar post before so just copying it to pass info to you:
on my system (dv9040) two methods are responsible for brightness control (i mean if I remove them Im losing fn+f7 and fn+f8 key combination to cntrl brightness):

Method (_Q11, 0, NotSerialized)
{
Store (0x14, SMIF)
Store (Zero, TRP0)
Sleep (0x32)
}

Method (_Q10, 0, NotSerialized)
{
Store (0x15, SMIF)
Store (Zero, TRP0)
Sleep (0x32)
}

they are located in Device (EC0) _SB.PCI0.LPCB.EC0._Q11/10
thats how they looked before I stripped them:

Method (_Q11, 0, NotSerialized)
{
If (LEqual (OSYS, 0x07D6))
{
If (IGDS)
{
Notify (^^^GFX0.DD04, 0x86)
}
Else
{
Notify (^^^PEGP.VGA.LCD, 0x86)
}
}
Else
{
Store (0x14, SMIF)
Store (Zero, TRP0)
}

Sleep (0x32)
}

Method (_Q10, 0, NotSerialized)
{
If (LEqual (OSYS, 0x07D6))
{
If (IGDS)
{
Notify (^^^GFX0.DD04, 0x87)
}
Else
{
Notify (^^^PEGP.VGA.LCD, 0x87)
}
}
Else
{
Store (0x15, SMIF)
Store (Zero, TRP0)
}

Sleep (0x32)
}

I started wondering if my brightness control is just controlled from BIOS level only and is just too much pain=effort to adapt it to software OSX language, but must say - it is still tempting to solve it !

can you possibly send me a link with some info or shortly guide me to explain "runing RW-everything" on Windows ? dont know what to do with that.

thank a lot mate
s

Share this post


Link to post
Share on other sites

_Q* methods are embedded controller events. In your's case they are writing some values to smif-system management interface.

 

Open rw-everything and watch EC controller. Watch values that are changing when brightness is changed. If there is no difference, then your brightness is not controlled by EC.

Share this post


Link to post
Share on other sites
_Q* methods are embedded controller events. In your's case they are writing some values to smif-system management interface.

 

Open rw-everything and watch EC controller. Watch values that are changing when brightness is changed. If there is no difference, then your brightness is not controlled by EC.

Hi ivik

ok, my dmesg brightness output:

 

Acpi brightness levels:11, lowest brightness:20, highest brightness:95

We still don't have brightness entry in ioreg... waiting...

We still don't have brightness entry in ioreg... waiting...

 

Rw-everything gives me two pairs of changing numbers while Im increasing, decreasing brightness

starting from darkest lvl:

14,18,1C,20,25,2B,32,3B,45,51,5F

 

thanks

swavek

Share this post


Link to post
Share on other sites
@swavek

try this

 

going to try now, but just to make clear - if the only method you changed is this:

			Method (_BCL, 0, NotSerialized)
		{
				Return (BCL1)
		}

 

then I already tried that without success

Share this post


Link to post
Share on other sites

thanks for all your help and time ivik

no luck with your last modifications here

posting RegExplorer screenshot just for off chance if will help

reg.tiff

 

I wonder why I have 13 values in DSDT while only 11 change in rw-everything and dmesg says 11 too, also I have to check VoodooPS2 controller settings as I have sun icon only on F7 key, F8 shows desktops view and F6 doesnt work (same with your kext), still can check brightness in Desktop prefpanel - slider stays in max position now

 

cheers

s

Share this post


Link to post
Share on other sites

@ivik, here is the dmesg :dmesg.rtf

Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6
Unknown scancode= 0046
Unknown scancode= 00c6

and this :

We still don't have brightness entry in ioreg... waiting...

 

thanks.

Share this post


Link to post
Share on other sites
thanks for all your help and time ivik

no luck with your last modifications here

posting RegExplorer screenshot just for off chance if will help

reg.tiff

 

I wonder why I have 13 values in DSDT while only 11 change in rw-everything and dmesg says 11 too, also I have to check VoodooPS2 controller settings as I have sun icon only on F7 key, F8 shows desktops view and F6 doesnt work (same with your kext), still can check brightness in Desktop prefpanel - slider stays in max position now

 

cheers

s

 

First 2 valuese are for brightness on charger/bat.

 

This is problem... max=0.

If you have intel card, read post 50. Maybe injecting some values in dsdt on boot could fix your max brightness 0.

 

@zprood

 

Are these scan codes from FN-up/down?

Are u using Voodoops2?

Share this post


Link to post
Share on other sites
@BlackCH

here is the dsdt for u

change in bcm method to values that u think that are right

 

Thanks al lot! but sadly it doesnt work yet. After a brightness value is set, the address is written with zeroes (black screen). Only when is at maximum brightness it remains there.

I dont know if you got my last PM. The correct values are FFFF0000 (minimum), FFFFFFFF (maximum). Notice the lower two bytes need to be always 'on' (FFFF) and the other two bytes are holding the brightness value. You could have 16 brightness steps for example: FFFF0000, FFFF1000, FFFF2000, FFFF3000, etc, up to FFFFFFFF

Share this post


Link to post
Share on other sites

Did you modified dsdt?

 

If (LEqual (Arg0, 0x1E)) {Store (0xFFFF0000, LEVL)} for minimum.. snd so on

 

Example for max:

If (LEqual (Arg0, 0x64)) {Store (0xFFFFFFFF, LEVL)}

Share this post


Link to post
Share on other sites
Did you modified dsdt?

 

If (LEqual (Arg0, 0x1E)) {Store (0xFFFF0000, LEVL)} for minimum.. snd so on

 

Example for max:

If (LEqual (Arg0, 0x64)) {Store (0xFFFFFFFF, LEVL)}

 

I will try, and I let you know how it turns up

 

EDIT:

 

Yes! That worked. Apple driver write the wrong value first, and then the value gets corrected by your driver. The only bad thing is that you see this on the screen; but is far better than befor already. Thanks a lot

How I can add more brightness steps?

Sometimes the brightness get corrected after a couple of seconds (maybe less), would be possible to shorten this time?

 

EDIT 2:

When you change the BRT with the slider, there are some point in which the brightness does not get corrected. With key strokes works fine

 

Now I should try to remap the keys. Everytime I press brightness-up my DVD drive opens...

Share this post


Link to post
Share on other sites

Nice!!!

I think that your laptop could change brightness without my driver. Problem is that max brightness is wrong FFFF?

* The GMA950 has a backlight control register at offset 0x00061254 in its
* PCI memory space (512K region):
* - bits 0-15 represent the backlight value
* - bits 16 indicates legacy mode is in use when set
* - bits 17-31 hold the max backlight value << 1
*
* Bit 16 indicates whether the backlight control should be used in legacy
* mode or not. This bit is 0 on MacBooks, indicating native mode should be
* used. This is the only method supported here.
*
*
* The GMA965 is slightly different; the backlight control register is at
* offset 0x00061250 in its PCI memory space (first 512K in the 1M region):
* - bits 0-15 represent the backlight value
* - bits 16-31 hold the max backlight value
* - bit 30 indicates legacy mode is in use when set
*
*
* For BOTH cards, the register for the backlight value is at offset 0x00061254.

maybe writing it at boot with _INI method on PCIO could solve this.
maybe setting both valuesfor max at 0x00061254 and 0x00061250, becuse x3100 uses both registers. to store brightness (bit 0-15)

Brightness is changed after one second and only if there is difference/changed. But apple driver changes it first... and since u have 11 steps, maxbrightness/11 then under these ranges is not set by my driver.

I could do some fixes for laptop, and change time to 0.5 second.

Share this post


Link to post
Share on other sites
Nice!!!

 

I think that your laptop could change brightness without my driver. Problem is that max brightness is wrong FFFF?

 

It works with FF00 too, I can not notice any difference. I will look into the other register, but last time I look @ 0x00061254 it was all zeros and I couldnt write to it with reggie_se

Share this post


Link to post
Share on other sites

Ok, but maybe at boot time it could be changed.

 

Now give me all yours brightness velues from min to max to add all steps to your brightness.

Share this post


Link to post
Share on other sites

Those code is by pressing Fn+Delete and Pause keys, when pressing Fn+up&down, no those code.I use the AppleACPIPS2Controller.kext for the keyboard driver, and modified by Slice, he do some patches to enable media key function.Upload here:PS2_Multimedia_Snow.zip

Share this post


Link to post
Share on other sites

BlackCH, i have 6710b Notebook which is very similar to yours, i also have the (uneven, 95%) brightness problems (display: 1680x1050 non-glare). Can you point out which parts of the DSDT you modified in the end to get it working now, so i can add it to my dsdt.

 

You write you patched original x3100 driver to disable driver brightness control? Can you explain this alternative solution. You said driver messes up brightness and it is corrected by the generic brightness.kext. Did you try a combination of patched driver and this kext.

 

I currently use the keyboard maestro solution.

Share this post


Link to post
Share on other sites

 

 

Ok, but maybe at boot time it could be changed.

Now give me all yours brightness velues from min to max to add all steps to your brightness.


I've added them myself to the PNLF device.

Device (PNLF)
{
Name (_HID, EisaId ("APP0002"))
Name (_CID, "backlight")
Name (_UID, 0x0A)
Name (_STA, 0x0B)
Name (C1AF, Package (0x15)
{
0x64,
0x33,
0x1E,
0x22,
0x26,
0x2A,
0x2E,
0x32,
0x36,
0x3A,
0x3E,
0x42,
0x46,
0x4A,
0x4E,
0x52,
0x56,
0x5A,
0x5E,
0x62,
0x64
})
Name (C1B0, 0x00)
Method (_BCL, 0, Serialized)
{
If (LAnd (LEqual (C1B0, 0x00), And (C06C, 0x10)))
{
Store (C06E, Local0)
Store (0x00, Local1)
While (LLess (Local1, 0x0B))
{
Store (DerefOf (Index (Local0, Local1)), Local2)
Multiply (Local2, 0x64, Local3)
Divide (Add (Local3, 0x7F), 0xFF, Local4, Local2)
Store (Local2, Index (C1AF, Add (Local1, 0x02)))
Increment (Local1)
}

Store (DerefOf (Index (C1AF, 0x05)), Index (C1AF, 0x01))
Store (Local2, Index (C1AF, 0x00))
Store (0x01, C1B0)
}

Return (C1AF)
}

Name (C1B1, 0x64)
Method (_BCM, 1, Serialized)
{
/* Store (0x00, Local0)
If (LGreater (\OSDW (), 0x05))
{
Or (C05B, 0x40, C05B)
Store (0x01, Local0)
}

Store (Arg0, C1B1)
Store (Match (C1AF, MEQ, Arg0, MTR, 0x00, 0x00), Local1)
Store (Local1, C072)
\_SB.C1B2 (0xEA74, 0x04, Local1, 0x00, 0x00)
Signal (\_SB.C1AC) */

If (LEqual (Arg0, 0x1E)) {Store (0xFFFF0000, LEVL)} //minimum brightness
If (LEqual (Arg0, 0x22)) {Store (0xFFFF0500, LEVL)}
If (LEqual (Arg0, 0x26)) {Store (0xFFFF1000, LEVL)}
If (LEqual (Arg0, 0x2A)) {Store (0xFFFF2000, LEVL)}
If (LEqual (Arg0, 0x2E)) {Store (0xFFFF3000, LEVL)}
If (LEqual (Arg0, 0x32)) {Store (0xFFFF4000, LEVL)}
If (LEqual (Arg0, 0x36)) {Store (0xFFFF5000, LEVL)}
If (LEqual (Arg0, 0x3A)) {Store (0xFFFF6000, LEVL)}
If (LEqual (Arg0, 0x3E)) {Store (0xFFFF7000, LEVL)}
If (LEqual (Arg0, 0x42)) {Store (0xFFFF8000, LEVL)}
If (LEqual (Arg0, 0x46)) {Store (0xFFFF9000, LEVL)}
If (LEqual (Arg0, 0x4a)) {Store (0xFFFFa000, LEVL)}
If (LEqual (Arg0, 0x4e)) {Store (0xFFFFb000, LEVL)}
If (LEqual (Arg0, 0x52)) {Store (0xFFFFc000, LEVL)}
If (LEqual (Arg0, 0x56)) {Store (0xFFFFd000, LEVL)}
If (LEqual (Arg0, 0x5A)) {Store (0xFFFFe000, LEVL)}
If (LEqual (Arg0, 0x5E)) {Store (0xFFFFE500, LEVL)}
If (LEqual (Arg0, 0x62)) {Store (0xFFFFFF00, LEVL)}
If (LEqual (Arg0, 0x64)) {Store (0xFFFFFFFF, LEVL)} //maksimum
}

Method (_BQC, 0, Serialized)
{
Store (C1B1, Local0)
Return (Local0)
}

}

Its a bit redundant (too many steps) but I was just trying things.

Thanks!!

Share this post


Link to post
Share on other sites
Do all these steps work?

 

If I enter those with reggie_se all works; I guess one could do a (BrightValue=BrightValue+1) in a loop, and you'll get a continuous smooth brightness going up (that wouldnt be useful though)

 

Could you try this driver? 16 steps and always writing values when slider is moved (when little moved).

It is modified only for your notebook.

There is also dsdt in archive that only works with this driver.

 

That didnt work. It acts like before (non-linear buggy brightness)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.



×