Contribute
Register

Apple Backlight Injector Brightness not saved

Status
Not open for further replies.
The Brightness is now saved when I use the FakeSMC.kext and the SSDT. If I do set to a lower Level then my Screen is flimmering. Maybe I just have to find the correct Values that it will work porperly.
 
A few more details on the CABC thing, just to avoid spreading incomplete or incorrect info.

9343, 9350, 9360, 9550, 9560 do not have ALS. They have it in DSDT, but it's disabled. They definitely don't have it.
CABC is embedded in display controllar's firmware, it's not a BIOS thing.
On 9350 and 9360, the FHD display is NOT flashable, so you cannot disable CABC.
On 9350, 9360 UHD display, you can flash a new display firmware via windows and CABC will go away.
On 9365 FHD+UHD you can flash a new firmware and disable it.
On 9550, 9560 FHD and UHD I think it's disabled by default.

Anyway, it all happens at firmware level, it's not a BIOS thing and BIOS / OS has no way to see the brightness change reported. So if you see the backlight reported level change, it's not CABC.

So the CABC stuff really has nothing to do with PWM based backlight brightness, right?
 
A few more details on the CABC thing, just to avoid spreading incomplete or incorrect info.

9343, 9350, 9360, 9550, 9560 do not have ALS. They have it in DSDT, but it's disabled. They definitely don't have it.
CABC is embedded in display controllar's firmware, it's not a BIOS thing.
On 9350 and 9360, the FHD display is NOT flashable, so you cannot disable CABC.
On 9350, 9360 UHD display, you can flash a new display firmware via windows and CABC will go away.
On 9365 FHD+UHD you can flash a new firmware and disable it.
On 9550, 9560 FHD and UHD I think it's disabled by default.

Anyway, it all happens at firmware level, it's not a BIOS thing and BIOS / OS has no way to see the brightness change reported. So if you see the backlight reported level change, it's not CABC.

Oh, I see. Thanks for clearing that up.

The Brightness is now saved when I use the FakeSMC.kext and the SSDT. If I do set to a lower Level then my Screen is flimmering. Maybe I just have to find the correct Values that it will work porperly.

Not sure what "screen flimmering" is. My 9560 does not do anything strange at any brightness level. Make sure you have AppleBacklightInjector and SSDT-PNLF set up properly.
 
I think it hard to explain how that the Screen is flimmering. I didn't change anything to the SSDT-PNLF or to the AppleBacklightInjector. I tried it also with the Patcher of the AppleBacklightInjector to get the correct values for my monitor but then I don't have the Brightness Slider available anymore.
 

I think the real question here is what in macOS is confused by not having a ALS implementation (now that we are sure there is no active ALS in the default scenario). Because if implementing a Fake ALS (ALS that never reports changes) fixes the problem, then it means something is causing macOS to look for an ALS implementation and becoming confused when there isn't one, and thus messing up the brightness restore...

SMBIOS choice playing a role?
 
Wouldn't doubt it.

I'm using MacBookPro13,3, and AFAIK all MBPs use adaptive backlighting for display and keyboard lights. I briefly changed the identifier to MacPro6,1 and restored vanilla FakeSMC + No SSDT, but it didn't work. I'm not sure if that was a thorough enough test, though. What's the minimum I need to change to check if SMBios is causing the issue? Is it enough to change the identifier or do I also need to change board-id, etc.?
 
Wouldn't doubt it.

I'm using MacBookPro13,3, and AFAIK all MBPs use adaptive backlighting for display and keyboard lights. I briefly changed the identifier to MacPro6,1 and restored vanilla FakeSMC + No SSDT, but it didn't work. I'm not sure if that was a thorough enough test, though. What's the minimum I need to change to check if SMBios is causing the issue? Is it enough to change the identifier or do I also need to change board-id, etc.?

Must change all SMBIOS details (especially board-id).
Try MacBookAir6,2 (I have one, and I haven't noticed any evidence of ALS capability).
 
Last edited:
So the CABC stuff really has nothing to do with PWM based backlight brightness, right?

Exactly, it's completely transparent to the system.
CABC (Content-Adaptive Brightness Control) analyses the current frame displayed and calculates the average white point.
When displaying dark content, or dark portions of it, the resulting luminance is pretty low.
CABC then lowers the backlight brightness AND tunes the image contrast to make the dimming less evident.
It's pure evil for graphics designers.

It is transparent to the system.
On 9360 FHD I have no flicker even if I put wrong values in the injector configuration, I jut get a wrong/nonlinear dimming scale. Another proof that CABC virtualizes the real PWM registers in order to tweak them with its own logic, thus tidying-up wrong values.

Now, speaking of 9360, in contrast with these bad things, there is also a very good thing, which is very rare to be found on modern laptops: PWM frequency is so high and so well made that it should pose no health risks and it is unnoticeable even to the most flicker-sensitive eyes: 44000Hz.
 
Last edited:
Must change all SMBIOS details (especially board-id).
Try MacBookAir6,2 (I have one, and I haven't noticed any evidence of ALS capability).

Actually, just checked... and the MacBookAir6,2 does have an ALS...
It is hidden within the camera.

So, really the question comes in why are some computers affected by this issue and not others...
(I have no issue on my Lenovo u430 that does not have ALS, but is using MacBookAir6,2).

Without the fake ALS, do you have the checkbox for "automatically adjust brightness" in SysPrefs->Displays?
 
Last edited:
:DDDDDDDDDDDDDDDDDDD

Fixed it.

I found this thing in the DSDT:
Code:
    Device (ALSD)
    {
        Name (_HID, "ACPI0008")  // _HID: Hardware ID
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            If ((ALSE == 0x02))
            {
                Return (0x0B)
            }

            Return (Zero)
        }

        Method (_ALI, 0, NotSerialized)  // _ALI: Ambient Light Illuminance
        {
            Return (((LHIH << 0x08) | LLOW))
        }

        Name (_ALR, Package (0x05)  // _ALR: Ambient Light Response
        {
            Package (0x02)
            {
                0x46,
                Zero
            },

            Package (0x02)
            {
                0x49,
                0x0A
            },

            Package (0x02)
            {
                0x55,
                0x50
            },

            Package (0x02)
            {
                0x64,
                0x012C
            },

            Package (0x02)
            {
                0x96,
                0x03E8
            }
        })
    }
It's actually a top-level device, too--not on LPCB or anything.

Here we can see that ALSE--Ambient Light Sensor Enable, most likely--is read from hardware (it's defined in a memory region in my laptop's SaSsdt), but this ALSD sensor, which I think is actually some funky Dell content-based adaptive brightness thing, does not seem to work under macOS. My curiosity as to why this device was defined led to faking it on LPCB as the MacBook Air's ALS0 device, because apparently Airs have dedicated light sensors and Pros don't (???).

Anyways, I had to mod FakeSMC (attached) and use the attached SSDT to get AppleLMUController to load, and the ioreg image is the result. Brightness now gets reloaded correctly. Well, more like Dell's BIOS loads its setting, then during boot the NVRAM.plist setting is applied over top.

If someone else could please try using this kext (it's the latest downloadable version of RehabMan's FakeSMC repo with additions from here) plus corresponding SSDT on a Dell exhibiting the same problem, that would be great. I need to make sure I'm not just going crazy. (I also want to try a couple more things, but at the very least it would be nice to have confirmation that the ALS is the common cause.)

your solution is great.!!!! i got brightness save.
i have to add info in fakesmc.kext.
ALI0/ALRV/ALV0/MSLD/RMde

must be use ALI0/ALRV/ALV0/MSLD/RMde. if dont have any one of 5 keys, it will be not work
thank you for your solution.
 
Last edited:
Status
Not open for further replies.
Back
Top