ddcutil

Announcements

08 February 2021

ddcutil release 1.0.1 addresses the situation wherein a display connected through a docking station is not detected when the i915 video driver is used. (I2C support for docking station connected displays, and more generally displays using DisplayPort Multi Stream Transport. was recently implemented for i915 and amdgpu drivers in Kernel 5.10. Initial ddcutil code for this situation did not adequately work around problems in the driver implementation.

03 February 2021

ddcutil release 1.0.0 marks a milestone. It is time to regard ddcutil as having reached production status. There of course remain features to add, and the codebase warrants cleanup, but the feature set has been stable for some time. Bug reports are infrequent, and reflect unusual situations.

There are two enhancements of general interest:

  • User Defined Features, which have existed for some time, are now formally available.
  • Option --mccs now applies to getvcp, setvcp, and dumpvcp as well as vcpinfo.

The remaining changes in this release, while extensive, are likely of little interest to most users. The most notable changes are:

  • ddcutil no longer by default checks for monitors exposing the Virtual Control Panel over USB. Such monitors have proven rare, and messages about lack of permission to read /dev/usb/hiddev devices can be be needless confusing. Command option --enable-usb will activate handling of USB connected monitors.
  • The detect commands provides additional information about the monitors found.
  • The capabilities command better handles malformed capabilities strings.
  • getvcp has special handling for features x62 (audio volume), x87 (audio treble), x91 (audio bass), and x93 (audio balance). In MCCS 2.2 and 3.0, these otherwise continuous VCP features have special reserved values.
  • Parsing setvcp command arguments was incorrect when multiple features are changed on a single setvcp command.

The shared library API has minor, but not upwardly compatible, changes. The current library SONAME is libddcutil.so.1, and the library package is libddcutil4.

For a complete list of ddcutil changes and bug fixes, see Release Notes. Prior announcements can be found here.

Introduction

ddcutil is a Linux program for managing monitor settings, such as brightness, color levels, and input source. Generally speaking, any setting that can be changed by pressing buttons on the monitor can be modified by ddcutil.

ddcutil primarily uses DDC/CI (Display Data Channel Command Interface) to communicate with monitors implementing MCCS (Monitor Control Command Set) over I2C. Normally, the video driver for the monitor exposes the I2C channel as devices named /dev/i2c-n. Alternatively, there is support for monitors (such as Eizo ColorEdge displays) that implement MCCS using a USB connection. See USB Connected Monitors.

A particular use case for ddcutil, and the one that inspired its development, is as part of color profile management. Monitor calibration is relative to the monitor color settings currently in effect, e.g. red gain. ddcutil allows color related settings to be saved at the time a monitor is calibrated, and then restored when the calibration is applied.

Restrictions:

  • ddcutil does not support laptop displays, which are controlled using a special API, not I2C.
  • Generally speaking, ddcutil can be built in a virtual machine, but will not run in a VM. This is because the virtual video drivers do not implement I2C. However, if the VM is connected to a separate video card and is running a non-virtualized driver for the card in passthru mode, then ddcutil will work.
  • Nvidia's proprietary video driver may require special configuration. See Special Nvidia Driver Settings.
  • Reading and writing Table type features is implemented but untested. See Table Features

ddcutil is released under the GNU Public License, V2 (GPLV2). The source is hosted on Github.

General support questions are best directed to the issue tracker on Github. Use of that forum allows everyone to benefit from individual questions and ideas. For details, see Technical Support.

ddcui

ddcui is a graphical user interface to ddcutil, built using Qt. It is currently beta level code. For further information, see ddcui Overview.

ddcui is released under the GNU Public License, V2 (GPLV2). The source is hosted on Github.

ddcui questions should also be directed the to the ddcutil issue tracker on Github.

Topics

Using ddcutil:

Commands and Options: - Detailed command and option documentation(command_detail.md)

Installation and Configuration:

Other:

Author

Sanford Rockowitz rockowitz@minsoft.com