[GH-ISSUE #843] Always increases brightness of external display after sleep #534

Closed
opened 2026-05-05 06:11:50 -06:00 by gitea-mirror · 7 comments
Owner

Originally created by @arobertn on GitHub (Dec 12, 2021).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/843

Originally assigned to: @waydabber on GitHub.

Before opening the issue, have you...?

  • Searched for existing issues
  • Looked through the wiki
  • Updated MonitorControl to the latest version (if applicable)

Describe the bug

It always jacks up the brightness of the external display after sleep. I am using MonitorControl to "slave" my external monitor brightness to the interrnal, which autoadjusts to ambient light. I have a Samsung external monitor connected through DisplayPort through a Thunderbolt docking station. I've also tried Lunar (commercial product) and it does not have this issue.

Steps to reproduce

  1. In preferences set "Sync brightness changes from built-in and Apple displays" checked, and disable keyboard control.
  2. Manually adjust the external brightness with the MonitorControl slider so the percentages are about equal.
  3. [Throughout the time the computer is awake, sync works well, raising and lowering brightness to follow the interrnal display (which follows ambient light or my keyboard presses).]
  4. Put computer to sleep.
  5. Wake computer, in same or different ambient light level.

Expected behavior

Expected behavior

The app resumes by setting the external monitor to approximately the same percentage as the internal, as it was before.

beforeSleep

Actual behavior

The app jacks up the external display to blinding levels. I need to manually adjust it back down.

afterWake

Anything else?

No response

Environment Information (please complete the following information)

- macOS version: 12.0.1
- Mac model: 2019 (Intel) Macbook Pro 16"
- MonitorControl version: 4.0.2
- Monitor(s): internal display, Samsung U32R59x
- Apple Silicon/M1 (yes or no): no
Originally created by @arobertn on GitHub (Dec 12, 2021). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/843 Originally assigned to: @waydabber on GitHub. ### Before opening the issue, have you...? - [X] Searched for existing issues - [X] Looked through [the wiki](https://github.com/MonitorControl/MonitorControl/wiki) - [X] Updated MonitorControl to the latest version (if applicable) ### Describe the bug It always jacks up the brightness of the external display after sleep. I am using MonitorControl to "slave" my external monitor brightness to the interrnal, which autoadjusts to ambient light. I have a Samsung external monitor connected through DisplayPort through a Thunderbolt docking station. I've also tried Lunar (commercial product) and it does not have this issue. ### Steps to reproduce 1. In preferences set "Sync brightness changes from built-in and Apple displays" checked, and disable keyboard control. 2. Manually adjust the external brightness with the MonitorControl slider so the percentages are about equal. 3. [Throughout the time the computer is awake, sync works well, raising and lowering brightness to follow the interrnal display (which follows ambient light or my keyboard presses).] 4. Put computer to sleep. 5. Wake computer, in same or different ambient light level. ### Expected behavior ## Expected behavior The app resumes by setting the external monitor to approximately the same percentage as the internal, as it was before. <img width="272" alt="beforeSleep" src="https://user-images.githubusercontent.com/1867738/145724104-70387dad-9898-4b3c-b723-629c4060f6ae.png"> ## Actual behavior The app jacks up the external display to blinding levels. I need to manually adjust it back down. <img width="272" alt="afterWake" src="https://user-images.githubusercontent.com/1867738/145724123-75fae0d6-b0e2-43ad-8cbb-cba242ec6f2c.png"> ### Anything else? _No response_ ### Environment Information (please complete the following information) ```markdown - macOS version: 12.0.1 - Mac model: 2019 (Intel) Macbook Pro 16" - MonitorControl version: 4.0.2 - Monitor(s): internal display, Samsung U32R59x - Apple Silicon/M1 (yes or no): no ```
gitea-mirror 2026-05-05 06:11:50 -06:00
Author
Owner

@arobertn commented on GitHub (Dec 12, 2021):

Happy to collect debug logs if there is some way to do this.

<!-- gh-comment-id:991944440 --> @arobertn commented on GitHub (Dec 12, 2021): Happy to collect debug logs if there is some way to do this.
Author
Owner

@waydabber commented on GitHub (Dec 14, 2021):

Hi @arobertn - sorry for being late with the response.

If you do not use the sync setting, does the display retain the last brightness set? What happens if you change the following settings either to "Apply last saved values" or "Attempt to read display"?

Screen Shot 2021-12-14 at 13 34 39

Thank you!

<!-- gh-comment-id:993496957 --> @waydabber commented on GitHub (Dec 14, 2021): Hi @arobertn - sorry for being late with the response. If you do not use the sync setting, does the display retain the last brightness set? What happens if you change the following settings either to "Apply last saved values" or "Attempt to read display"? <img width="608" alt="Screen Shot 2021-12-14 at 13 34 39" src="https://user-images.githubusercontent.com/37590873/145999306-3d25ff44-d38e-499c-bca2-7fb3d1bda278.png"> Thank you!
Author
Owner

@arobertn commented on GitHub (Dec 15, 2021):

I thought your response was pretty quick :). I tried both the first and the last option there, and they seemed to behave the same. Note, the "Attempt to read display settings" is unclear. What I'd like it to do is read internal display, and use said result to force-update the external, but I don't know if it does that. I didn't try the middle one since the light level could be different when starting/waking, so restoring previous values is not of any use.

I did check what was getting logged in Console, but there were no lines that seemed to relate to reading or writing display values. If it might be of interest anyway, I can collect some.

<!-- gh-comment-id:994733176 --> @arobertn commented on GitHub (Dec 15, 2021): I thought your response was pretty quick :). I tried both the first and the last option there, and they seemed to behave the same. Note, the "Attempt to read display settings" is unclear. What I'd _like_ it to do is read internal display, and use said result to force-update the external, but I don't know if it does that. I didn't try the middle one since the light level could be different when starting/waking, so restoring previous values is not of any use. I did check what was getting logged in Console, but there were no lines that seemed to relate to reading or writing display values. If it might be of interest anyway, I can collect some.
Author
Owner

@waydabber commented on GitHub (Dec 17, 2021):

Hi @arobertn sorry for the delayed answer. The "Attempt to read..." will read the currently set brightness to the external display and synchronize MonitorControl with that. The "Apply last saved..." will reapply the brightness setting according to MonitorControl after wake (if the display resets its brightness for some reason).

If both the built-in and external display wake to the same brightness as before, then the difference between them should be constant. MC only synchronizes brightness difference after the wake period.

Does the internal screen's brightness the same after wake as before sleep?

<!-- gh-comment-id:996639094 --> @waydabber commented on GitHub (Dec 17, 2021): Hi @arobertn sorry for the delayed answer. The "Attempt to read..." will read the currently set brightness to the external display and synchronize MonitorControl with that. The "Apply last saved..." will reapply the brightness setting according to MonitorControl after wake (if the display resets its brightness for some reason). If both the built-in and external display wake to the same brightness as before, then the difference between them should be constant. MC only synchronizes brightness difference after the wake period. Does the internal screen's brightness the same after wake as before sleep?
Author
Owner

@arobertn commented on GitHub (Dec 17, 2021):

I (think) I have MonitorControl disabled from doing any updates to the internal display (see screenshot). I have "Automatically adjust brightness" set in Mac preferences for that one. My external monitor does not have a light sensor and so will wake up as it was before, regardless if it was broad daylight then and now the room is dark. But it sounds like the functionality I am after (slave external to internal, the latter being managed according to ambient light by macOS) is not a supported use case.

Screen Shot 2021-12-17 at 12 17 06
<!-- gh-comment-id:996647638 --> @arobertn commented on GitHub (Dec 17, 2021): I (think) I have MonitorControl disabled from doing any updates to the internal display (see screenshot). I have "Automatically adjust brightness" set in Mac preferences for that one. My external monitor does not have a light sensor and so will wake up as it was before, regardless if it was broad daylight then and now the room is dark. But it sounds like the functionality I am after (slave external to internal, the latter being managed according to ambient light by macOS) is not a supported use case. <img width="713" alt="Screen Shot 2021-12-17 at 12 17 06" src="https://user-images.githubusercontent.com/1867738/146537553-786bccba-73c5-4412-84d0-9c37c5fca54b.png">
Author
Owner

@waydabber commented on GitHub (Dec 17, 2021):

Hi @arobertn - even in the setup above, MonitorControl reads the internal display's brightness and replicates the changes to the external display. It is important to note that only change (delta) is replicated, not absolute numbers, as MonitorControl has no way of knowing what percentage of DDC brightness corresponds to what percentage of the internal display's brightness (as both displays have different characteristics and max. brightnesses). So if the internal display is set to 30%, the external to 60% upon wake, these will not be synchronized, but if the internal display increased from 30% to 40% by the ambient light sensor, the external screen will also increment gradually from 60% to 70%. The way this works allows users to independently adjust the two displays manually and sync their brightness manually using their own eye's judgement and then let the system synchronize from that point using the amibent light sensor input that is reflected in the internal display's brightness changes.

<!-- gh-comment-id:996670836 --> @waydabber commented on GitHub (Dec 17, 2021): Hi @arobertn - even in the setup above, MonitorControl reads the internal display's brightness and replicates the _changes_ to the external display. It is important to note that only change (delta) is replicated, not absolute numbers, as MonitorControl has no way of knowing what percentage of DDC brightness corresponds to what percentage of the internal display's brightness (as both displays have different characteristics and max. brightnesses). So if the internal display is set to 30%, the external to 60% upon wake, these will not be synchronized, but if the internal display increased from 30% to 40% by the ambient light sensor, the external screen will also increment gradually from 60% to 70%. The way this works allows users to independently adjust the two displays manually and sync their brightness manually using their own eye's judgement and then let the system synchronize from that point using the amibent light sensor input that is reflected in the internal display's brightness changes.
Author
Owner

@waydabber commented on GitHub (Dec 21, 2021):

I am not sure if there is an issue here or things work as they should be working. I'll convert this into a discussion, we can continue there - if a better method is worked out, we can create a feature request out of it.

<!-- gh-comment-id:998621668 --> @waydabber commented on GitHub (Dec 21, 2021): I am not sure if there is an issue here or things work as they should be working. I'll convert this into a discussion, we can continue there - if a better method is worked out, we can create a feature request out of it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/MonitorControl#534
No description provided.