Monitorian icon indicating copy to clipboard operation
Monitorian copied to clipboard

Monitorian is no longer able to control brightness on internal laptop display - Windows 10

Open 3dWrecker opened this issue 10 months ago • 13 comments

OS: Win 10 22H2 19045.5854 Monitorian 4.10.0

Per title, the internal laptop display does not respond to brightness changes in the monitorian app. The display supports HDR but HDR is turned OFF. Using the regular windows brightness control works. Noticed that it stopped working about 1 month ago. Have reinstalled, cleared settings etc with no luck. Built from source in Visual Studio and ran with debug but no errors thrown that I could see.

3dWrecker avatar Jun 07 '25 14:06 3dWrecker

From probe log:

"Monitor Configuration - PhysicalItems": [
{
  "Key": {
    "DisplayIndex": 1,
    "MonitorRect": "Location:-2560,-156, Size:2560,1600"
    },
  "Value": [
    {
      "Description": "Lenovo DisplayHDR",
      "MonitorIndex": 0,
      "Capability": {
        "IsHighLevelBrightnessSupported": false,
        "IsLowLevelBrightnessSupported": false,
        "IsContrastSupported": false,
        "IsPrecleared": false,
        "CapabilitiesString": null,
        "CapabilitiesReport": null,
        "CapabilitiesData": null
      },
      "GetBrightness": "Success: False",
      "SetBrightness": "Success: False",
      "GetContrast": "Success: False",
      "SetContrast": "Success: False"
    }
  ]
}

3dWrecker avatar Jun 08 '25 06:06 3dWrecker

Thank you for a part of log but this section is useful only for external monitors. The section for internal monitors is "MSMonitorClass - DesktopItems".

emoacht avatar Jun 10 '25 12:06 emoacht

Here it is

  "MSMonitorClass - DesktopItems": [
    {
      "DeviceInstanceId": "DISPLAY\\CSO1600\\5&39724F5D&0&UID256",
      "Description": "Lenovo DisplayHDR",
      "BrightnessLevels": "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"
    }
  ],
  "ElapsedTime": [
    "DeviceItems    -> 0.003",
    "DisplayMonitorItems -> 0.004",
    "DisplayConfigItems -> 0.001",
    "InstalledItems -> 0.011",
    "PhysicalItems  -> 4.516",
    "DesktopItems   -> 0.021"
  ]
}

3dWrecker avatar Jun 10 '25 21:06 3dWrecker

Thank you. This section looks normal. Please let me know if you find any error in operation.log.

emoacht avatar Jun 11 '25 00:06 emoacht

No errors I can see. On the last rescan the log is reporting a brightness of 100. However the display is actually set to 0 brightness. The popup is also reporting 100.

Popup Image

Windows Brightness Control Image

operation.log
[Date: 11/06/25 15:04:18 Ver: 4.10.0.0]
Enabled

[Date: 11/06/25 15:04:25 Ver: 4.10.0.0]
ScanAsync [11/06/25 15:04:22]
{
  "Items": [
    {
      "Type": "DdcMonitorItem",
      "DeviceInstanceId": "DISPLAY\AOC2702\5&14475071&0&UID4356",
      "Description": "Q27G2G3R4B",
      "DisplayIndex": 3,
      "MonitorIndex": 0,
      "MonitorRect": 0,0,2560,1440,
      "IsInternal": false,
      "IsReachable": true,
      "IsBrightnessSupported": true,
      "IsContrastSupported": true,
      "IsPrecleared": false,
      "Brightness": -1,
      "BrightnessSystemAdjusted": -1,
      "Contrast": -1
    },
    {
      "Type": "WmiMonitorItem",
      "DeviceInstanceId": "DISPLAY\CSO1600\5&39724f5d&0&UID256",
      "Description": "Lenovo DisplayHDR",
      "DisplayIndex": 1,
      "MonitorIndex": 0,
      "MonitorRect": -2560,-156,2560,1600,
      "IsInternal": true,
      "IsReachable": true,
      "IsBrightnessSupported": true,
      "IsContrastSupported": false,
      "IsPrecleared": false,
      "Brightness": -1,
      "BrightnessSystemAdjusted": -1,
      "Contrast": -1
    }
  ],
  "Monitors": [
    {
      "Item": {
        "Type": "DdcMonitorItem",
        "DeviceInstanceId": "DISPLAY\AOC2702\5&14475071&0&UID4356",
        "Description": "Q27G2G3R4B",
        "DisplayIndex": 3,
        "MonitorIndex": 0,
        "MonitorRect": 0,0,2560,1440,
        "IsInternal": false,
        "IsReachable": true,
        "IsBrightnessSupported": true,
        "IsContrastSupported": true,
        "IsPrecleared": false,
        "Brightness": 83,
        "BrightnessSystemAdjusted": -1,
        "Contrast": -1
      },
      "Name": "Q27G2G3R4B",
      "IsUnison": false,
      "IsControllable": true,
      "IsConfirmed": true,
      "ControllableCount": 5,
      "IsByKey": false,
      "IsSelected": false,
      "IsTarget": true
    },
    {
      "Item": {
        "Type": "WmiMonitorItem",
        "DeviceInstanceId": "DISPLAY\CSO1600\5&39724f5d&0&UID256",
        "Description": "Lenovo DisplayHDR",
        "DisplayIndex": 1,
        "MonitorIndex": 0,
        "MonitorRect": -2560,-156,2560,1600,
        "IsInternal": true,
        "IsReachable": true,
        "IsBrightnessSupported": true,
        "IsContrastSupported": false,
        "IsPrecleared": false,
        "Brightness": 91,
        "BrightnessSystemAdjusted": -1,
        "Contrast": -1
      },
      "Name": "Lenovo DisplayHDR",
      "IsUnison": false,
      "IsControllable": true,
      "IsConfirmed": true,
      "ControllableCount": 5,
      "IsByKey": false,
      "IsSelected": true,
      "IsTarget": true
    }
  ]
}

[Date: 11/06/25 15:15:06 Ver: 4.10.0.0]
ScanAsync [11/06/25 15:15:02]
{
  "Items": [
    {
      "Type": "DdcMonitorItem",
      "DeviceInstanceId": "DISPLAY\AOC2702\5&14475071&0&UID4356",
      "Description": "Q27G2G3R4B",
      "DisplayIndex": 3,
      "MonitorIndex": 0,
      "MonitorRect": 0,0,2560,1440,
      "IsInternal": false,
      "IsReachable": true,
      "IsBrightnessSupported": true,
      "IsContrastSupported": true,
      "IsPrecleared": false,
      "Brightness": -1,
      "BrightnessSystemAdjusted": -1,
      "Contrast": -1
    },
    {
      "Type": "WmiMonitorItem",
      "DeviceInstanceId": "DISPLAY\CSO1600\5&39724f5d&0&UID256",
      "Description": "Lenovo DisplayHDR",
      "DisplayIndex": 1,
      "MonitorIndex": 0,
      "MonitorRect": -2560,-156,2560,1600,
      "IsInternal": true,
      "IsReachable": true,
      "IsBrightnessSupported": true,
      "IsContrastSupported": false,
      "IsPrecleared": false,
      "Brightness": -1,
      "BrightnessSystemAdjusted": -1,
      "Contrast": -1
    }
  ],
  "Monitors": [
    {
      "Item": {
        "Type": "DdcMonitorItem",
        "DeviceInstanceId": "DISPLAY\AOC2702\5&14475071&0&UID4356",
        "Description": "Q27G2G3R4B",
        "DisplayIndex": 3,
        "MonitorIndex": 0,
        "MonitorRect": 0,0,2560,1440,
        "IsInternal": false,
        "IsReachable": true,
        "IsBrightnessSupported": true,
        "IsContrastSupported": true,
        "IsPrecleared": false,
        "Brightness": 89,
        "BrightnessSystemAdjusted": -1,
        "Contrast": -1
      },
      "Name": "Q27G2G3R4B",
      "IsUnison": false,
      "IsControllable": true,
      "IsConfirmed": true,
      "ControllableCount": 5,
      "IsByKey": false,
      "IsSelected": false,
      "IsTarget": true
    },
    {
      "Item": {
        "Type": "WmiMonitorItem",
        "DeviceInstanceId": "DISPLAY\CSO1600\5&39724f5d&0&UID256",
        "Description": "Lenovo DisplayHDR",
        "DisplayIndex": 1,
        "MonitorIndex": 0,
        "MonitorRect": -2560,-156,2560,1600,
        "IsInternal": true,
        "IsReachable": true,
        "IsBrightnessSupported": true,
        "IsContrastSupported": false,
        "IsPrecleared": false,
        "Brightness": 100,
        "BrightnessSystemAdjusted": -1,
        "Contrast": -1
      },
      "Name": "Lenovo DisplayHDR",
      "IsUnison": false,
      "IsControllable": true,
      "IsConfirmed": true,
      "ControllableCount": 5,
      "IsByKey": false,
      "IsSelected": true,
      "IsTarget": true
    }
  ]
}

3dWrecker avatar Jun 11 '25 03:06 3dWrecker

I see. That means the OS returns false value to this app. It is difficult for this app to handle such case because there is no means to double check whether the value is correct.

emoacht avatar Jun 11 '25 03:06 emoacht

OK.... This issue is caused by the new "Windows power modes" which are used in the slider in the battery flyout. I deleted these from the available power plans and the issue is fixed. This forces windows to use the power plan settings. I think this is due to the powermanagement module reading info and setting values for the active power plan, when the brightness is being overriden by the "Best Performance" or "Better Performance" power modes. Changing brightness still works when battery saver mode is selected.

Double checking that the value is correct for internal displays can also be done using WMI eg Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightness in powershell

Windows has deprecated setting brightness via powerplan since Win 10 1809 I think, which is when the brought in the power slider thing for laptops.

If I disable the IsInternal check in the WmiMonitorItems module it fixes the issue even when a power mode is used, which is most regular laptops these days. However it might break adaptive brightness. See here 9313feb158ff400d481aa0b6966e5291a28a21de

3dWrecker avatar Jun 11 '25 07:06 3dWrecker

This works Image

This doesn't Image

3dWrecker avatar Jun 11 '25 07:06 3dWrecker

May have implications for https://github.com/emoacht/Monitorian/issues/426

3dWrecker avatar Jun 11 '25 07:06 3dWrecker

Thank you for the information on the power management stuff. It is a critically important. the power management is too onerous and I wished to avoid though.

emoacht avatar Jun 11 '25 08:06 emoacht

I cannot reproduce it. This app works when Best Performance setting.

Power

emoacht avatar Jun 11 '25 19:06 emoacht

Yes. Likewise. I completely reset windows power config with powercfg –restoredefaultschemes and now it is working. The manufacturer supplied power plans must have some compatibility issue, or my Windows install is corrupt (though throughout all this the bloated competitor app worked)

3dWrecker avatar Jun 12 '25 01:06 3dWrecker

I see. Perhaps the competitor app doesn't look at the power management information so that it isn't affected by the power management issue.

emoacht avatar Jun 12 '25 01:06 emoacht

Added /powerignore option to ignore power managenent 816d1c62e5db7a8bb55099b6890718953d97eda7

emoacht avatar Jun 23 '25 21:06 emoacht