Windows – Customize adaptative brightness in Windows 8

brightnesslaptopwindowswindows 8

I'd like to customize the adaptative brightness function (max luminosity = fn(sensor-light)) on my laptop.

In a very dark environment, my maximum screen brightness is too low, I have to disable auto brightness but it would be useful to really fix it.

Is there a config file to tune that?
A common .dll/.exe that handle it or is it vendor specific? (I guess the input data come from the SensrSvc service)
Since it's switchable in the built-in automomy settings I guess there could be a common windows component and that I could try to hack it in the worst case.

Best Answer

  • This can be changed in the registry - here's a document from Microsoft that explains all of this in detail.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AdaptiveDisplayBrightness contains configuration values related to the light sensor.

    ALRPoints - controls what brightness to use depending on the value returned by the sensor, in this format : 00 + a list of points in the format [zero-padded hex value of the desired percentage of the baseline brightness] + [zero-padded hex value of the light detected by the sensor] - I got this by a lot of trial and error, here's Microsoft's documentation about this value, and here's my custom ALRPoints value that works.

    IlluminanceChangeSensitivity - controls how much the sensor is sensible to light changes, for example a value of 20 means that the ambient light should change by 20 lux for the screen brightness to change.

    DisplayResponseInterval - controls how much time should the service wait before polling the sensor again (in milliseconds, minimal value is 100), for example a value of 5000 means that the brightness can only change every 5 seconds.

    Note: when editing those values, be sure to select Base decimal in Regedit.

    Screenshot

    I recommend using the Sensor Diagnostic Tool, it's available in the WDK Test Pack (you may need to install the actual WDK first), once installed it's located in C:\Program Files (x86)\Windows Kits\8.1\Tools\x86\sensordiagnostictool.exe and it looks like this :

    Screenshot

    The interesting values are :

    SB (at the very top, here it's at 100%), it shows the brightness set by the Adaptive brightness service.

    SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE is the default ALR curve, in the format [lux, percentage of the baseline brightness] (the opposite format of the registry, which is brightness, lux) - if you want to create your own ALR curve, you'll need to override each and only point of this default curve (that's the only way I got it to work).

    SENSOR_DATA_TYPE_LIGHT_LUX is the luminosity detected by the sensor, I hope that on your system it's actually the real light value in lux, unfortunately on mine it's just a value between 0 and 255, 0 means almost total darkness and 255 means a flashlight pointed at the sensor.

    Once you have set the values you wanted, you'll need to restart the Adaptive brightness service for your changes to take effect.

    Here's a thread on XDA-Developers that provides tweaked luminosity curves for Surface tablets, you may want to take a look at the registry files (they work fine on Windows 7 by the way).