-
Notifications
You must be signed in to change notification settings - Fork 351
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow quicker access to DDC power control options #1372
Comments
Sure, I can make it an option to have it up there. The power command is not uniformly supported and might be annoying for users if they inadvertently click on it so I would not do it by default but if somebody chooses to put it up there, that's a different story. |
By the way, is there really no "power on" option in DCC or this is just rarely supported? |
there is a command (D6) to change DPMS power modes and to power off the display. VESA DPMS was a thing devised when CRTs ruled, but the states are carried over to some modern LCDs These are the four DPMS modes (DDC D6 command values 1-4)
And there is a command value 5 which is to turn the display Off. BD uses DPMS mode 3 for panel off and 0 for panel on (command value 4 and 1) and value 5 for power off. But support for these varies heavily. |
but you can try overriding the command value for backlight off/on, your display might respond to command 2-3 instead of 4 - if it still turns off the backlight in any of those modes but can turn it back on, then you could use that instead of power off/on or the not able to backlight on from DPMSModeOff. |
So for clarification, the DDC values are this:
States 01-04 should be readable which implies that the display must respond to DDC and should be able to come back from 02-04 the state to 01. Not doing so is a firmware issue, but much more severe incompatibilities exist in the DDC field as it is very neglected generally by manufacturers - your display supporting most other things actually puts it among the good ones. :) |
Hmm.... I've tested all the values and all of them turns display off, with the difference that after issuing 1-4 I had to additionally send 5 to be able to power monitor back on. Otherwise, display is not responding to the power button. |
@waydabber Is there any way to query DDC capabilities |
Yes, there is but this capability is not built into BetterDisplay. The reason for this is that read support is rather sporadic to begin with and capacity flags, reported min-max values are often unreliable. MonitorControl had some of this ability but not active, querying min-max values is also disabled by default. I might add this feature in the future but it's a low priority #1168 |
So, I found It seems display is VESA MCCS v2.1 compliant and capable of Power mode
|
After further investigation of MCCS codes and some tests, this seems to be right approach:
If we send PS 1 But I wonder if we could take another approach analogous to "no signal" case while computer goes to sleep. When computer wakes up then displays wake up. I don't know the protocol that stands behind it, and I don't know if it is feasible for particular monitor, but might be port agnostic solution. What do you think? PS 2 |
Background |
So if you send a single Power off command, can you turn the display back on with a backlight on command? Btw you can remap the backlight off and on to any value you want in the app. |
also, you can use m1ddc on the mac to send messages one by one.
|
"I found that BD does not allow to change control code - always resets changes back to default value." Hmm. I can't seem to reproduce this issue. Where do you see this? If this is the case then it must be a bug. I tried with some displays, if I send d6=5 the display turns off and no more communication is possible (the standard also states that this is a write only value since afterwards the display control panel is powered off). Is this not the case with your LG display? |
Have you tried with HDMI? IMG_4481_720p.webm |
I can't set code 0 (i.e. 00h) in particular. Any other values are stored. So, maybe it's not important. |
Nice! It's good to know that there is a combination of settings that works for this display. I think for many people who wants to use this feature, some levels of tinkering will be needed. Yes, code 00h is not valid, the app treats that as no input (as default non-numeric string to int conversion result is 00h). |
Hi @KrzysztofPrzygoda - I plan to add a feature to generally disconnect/connect a display in one of the next versions which might be of an interest to you - this might prove a more stable solution than using DDC for power control. This solution puts the display to sleep using the standard means + also removes the unneeded display from the display layout. |
Hi @waydabber, great news! Removing display from the layout could be an option. There are situations when I'd like to power monitor off (saving energy) but keep its layout untouched, which means keeping desktop spaces layout and apps still there that I can get back to them quickly by powering monitor back on. Otherwise, all my remaining desktop spaces will be reconfigured, creating some sort of confusion. |
Right. For that use case using DDC power is the best - I don't know a way currently to send a sleep signal to a display (without DDC) while keeping the display in the layout. There might be one, will investigate and if I find a solution, will add as an option. |
Turn Display Off
option next to main controls
Actually DCC works strange. There are several conditions when display is not removed from the display layout:
Anyway, macOS somehow navigates displays power while going to sleep and waking up without DCC. |
Yes, macOS does not use DDC at all for power control at all. We identified the required call that should initiate power saving mode without removing the framebuffer and keeping the display in the layout but for some reason it does not work currently, more research is needed on how to make it work. |
This will be #1424 |
It would be nice to have power off button available next to monitor menu (perhaps as an option to display it there). Quite popular I think (for me at least).
Right now I need to make 4+ extra steps:
The text was updated successfully, but these errors were encountered: