https://bugs.kde.org/show_bug.cgi?id=516066

--- Comment #3 from Sanfod Rockowitz <[email protected]> ---
This issue has been closed at ddcutil with no changes. 

There are two separate things going on here.  The first is DDC communication
failure that the user associates with recent ddcutil releases, in particular
with the current development branch 2.2.6-dev.  This failures resolve if the
the special nvidia driver settings (https://www.ddcutil.com/nvidia/) are
applied. My best guess is that DDC communication between the user's video card
and monitor was marginal to begin with; and some change in ddcutil pushed it
over the edge,  Since the special nvidia driver settings resolve the problem I
regard it as yet another instance of the problematic nature of the proprietary
nvidia driver.

The second is the disappearance of the display from the PowerDevil Brightness
and Color Widget.  API function ddca_set_non_table_vcp_value() is called with
verification enabled, so it's actually two operations.  The first sets the
value.  Success for this operation means the request packet was delivered to
the monitor; there is no guarantee that the monitor acts on request.  To check
that the value has changed, a second request is issued to the monitor to read
the current value.  From the system journal I see that (without the special
nvidia settings) the API call returns status -3023, which is DDCRC_VERIFY, i.e.
the expected value was not read.  After some retries, PowerDevil regards this
as fatal and deletes the monitor from its widget.  There's an entry to this
effect in the system journal, but no notification at the UI level. Hence the
report of the disappearing monitor.

I suggest that ddca_set_non_table_vcp_value() be called with verification
disabled, then get_non_table_vcp_value() be called to obtain the current value.
This is what ddcui does.  Note that a mismatch need not even mean an error.    
There are monitors which adjust very low brightness requests higher, apparently
to prevent the user from setting the brightness so low the monitor appears
dead.  

In retrospect it's unfortunate that ddca_set_non_table_vcp_value() even has the
verification option, and that the default is verification, mimicing command
line ddcutil's setvcp command..  But I'm loath to change existing API
behaviour.  I may deprecate ddca_get_non_table_vcp_value() in a future release
in favor of a version that never performs verification.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to