I'm trying to control the backlight brightness of my HP laptop integrated LCD, on Windows 10, with or without intel graphics driver.
I wanna lower the brightness much lower than the minimum allowed by windows/intel, just like I can do on Linux Mint (dual boot setup) through ACPI /sys/class/backlight/intel_backlight/brightness
.
Here is what I have tried already:
WmiSetBrightness
IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS
- laptop screen doesn't support DDC/CI
- every single tool I could find online (f.lux, nircmd, screenbright, ...)
- trying every single method in the undocumented igfx dll libraries in Windows/System32 and comparing the returned data with different brightness values of the screen, as well as
igfxDHLib.IDataHandler::SetBackLightBrightness(_CUI_CALIBRATION_COLOR_INFO)
but it didn't work, returning error codes that are nowhere to be found online. - trying to find the ACPI driver code from linux code, but didn't find much
- tried static analysis (IDA) on monitor.sys, wmiprov.dll and igdkmd64.sys, found some promising functions like
BrightnessTargetToPossible
,IoctlSetBrightness
andIoctlQueryBrightnessCaps
, but couldn't find any hardcoded caps, instead justCallNextLowerDriver
, so my guess is that it is passed to the next driver in the device stack, and I don't have pdb for igdkmd64 obviously :(
(Also, without the intel graphics driver, windows can't change brightness at all.)
Things I still didn't try:
- Kernel mode debugging, mainly because I doubt that it would work on a VM since it should instead be able to access the real display interface? (and because I never tried Kernel debugging before)
- writing a monitor filter driver? a
Filter DO
as described here
I know this question has been asked before, but those questions are more than 5 years old and have no correct answer. I wasted so much time on this and it's driving me insane how such a simple thing of controlling one single number (the PWM duty cycle) can be this much difficult to do. It's really unbelievable that intel and windows never thought their minimum brightness could be too blinding at night.
I'm really desperate for any way of doing this. Thank you very much for any help.