Friday 12 October 2018

Customize adaptative brightness in Windows 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.



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).


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...