15 October 2017
Package ddcutil has been sponsored into Debian and is now included in Debian Testing. It is on track to be part of the next Debian release, which means it should eventually appear in downstream distributions such as Ubuntu. Note that only package ddcutil, containing the command line version of ddcutil is currently in the Debian repositories. The shared library packages, including the C and Python APIs, are not yet part of Debian.
22 July 2017
Release 0.8.4 primarily contains packaging changes to meet Fedora distribution standards.
17 May 2017
Release 0.8.2 contains minor enhancements, primarily to diagnostics in the environment and interrogate commands.
05 May 2017
Release 0.8.1 is a bugfix release that addresses a segfault that can occur when scanning for USB connected monitors.
01 May 2017
Release 0.8.0 contains new features intended to address issues with particular monitors and user environments, and to improve performance
The most significant changes visible to users are:
- If there are multiple monitors and option --async is specified, initial monitor checks are performed in separate threads. Users with multiple monitors should see significantly better startup time.
- If a display is specified by its I2C bus number (option --bus) and option --nodetect is specified, global display detection is skipped, improving performance.
- By default, setvcp and loadvcp now read the VCP value after it has been set, to confirm that the monitor has made the change requested.
- Command getvcp --terse now reports VCP settings in a form that is easily machine readable.
- The C API has been extensively revised. Many names have changed for consistency and clarity.
(Apologies to those of you who have written applications.)
29 April 2017
At some time in the recent past, the files for release 0.7.3 in the OpenSUSE Build Service were corrupted with files from the test system. Symptoms of this corruption include
- Prefixing a VCP feature code number with "0x" causes a segfault, e.g. "ddcutil setvcp 0x10 50"
- Command line option "--verify" is recognized
As of this morning, the production ddcutil project on OBS was restored to release 0.7.3.
ddcutil is a Linux program for querying and changing monitor settings, such as brightness and color levels.
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.
Generally speaking, any settings that can be changed by pressing buttons on the monitor can be modified by ddcutil. Examples include controlling brigtness and switching input source.
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.
- ddcutil does not support laptop displays, which are controlled using a special API, not I2C.
- Nvidia's proprietary video driver may require special configuration. See Special Nvidia Driver Settings.
- Operation with AMD's proprietary video driver fglrx requires a specially built version of ddcutil. See Building with ADL Support.
- Reading and writing Table type features is implemented but untested. See Table Features
ddcutil is a command line program. (A GUI user interface is planned.) ddcutil implements the following subcommands:
|detect||report monitors detected|
|capabilities||report a monitor's capabilities string|
|vcpinfo (feature-code-or-group)||list VCP features codes that ddcutil knows how to interpret|
|getvcp feature-code-or-group||report a single VCP feature value, or a group of values|
|setvcp feature-code new-value||set a single VCP feature value|
|dumpvcp filename||save color related VCP feature values to a file|
|loadvcp filename||restore color related VCP feature values from a file|
|environment||explore the ddcutil installation environment (other than USB)|
|usbenv||explore USB aspects of the ddcutil installation environment|
|probe||explore the capabilities string and probe the features of a single monitor|
|interrogate||collect maximal information for problem diagnosis|
|chkusbmon /dev/hiddevN||used by udev rules to test if a USB device represents a monitor|
There is an extensive set of options for tailoring ddcutil operation. Some are described in this documentation. For a full list of options and detailed documentation for each command, use the --help option or see the man page:
$ ddcutil --help $ man 1 ddcutil
If more than one monitor is attached, the desired monitor can be specified using any of the following options:
--display <display number> --bus <i2c bus number> --adl <iAdapterNumber>.<iDisplayNumber> --usb <usb bus number>.<usb device number> --edid <256 character hex string> --mfg <mfg code> --model <model name> and/or --sn <serial number>
- Monitors under control of AMD's proprietary driver (fglrx) are selected by adapter number and display number. These numbers are specified on the --adl option separated by a period, e.g. "--adl 1.0"
- Any combination of manufacturer code, model name and serial number can be used together to identify a monitor. The first monitor to satisfy all the specified criteria is selected. (This behavior differs from releases prior to 0.7 where model name and serial number had to be specified together.)
To see a list of all attached monitors and their associated identifiers:
$ ddcutil detect
Installing ddcutil From Prebuilt Packages
Packages for recent Debian, Fedoray, openSUSE, and Ubuntu releases are available for download from the openSUSE Build Service. Unfortunately, there's not one clean link for downloading OBS packages, so here are several.
- Add repository and download package ddcutil. This is all you will need if just installing the command line version of ddcutil.
- All ddcutil packages Packages for both the command line and shared library version of ddcutil. Note that the development package is named libddcutil-devel on RPM based distributions (SUSE, Fedora) and libddcutil-dev on dpkg based distributions (Debian, Ubuntu).
- File system view
For Ubuntu xenial, there's a PPA. To use it, add the following lines to /etc/apt/sources.list:
deb http://ppa.launchpad.net/rockowitz/ddcutil/ubuntu xenial main deb-src http://ppa.launchpad.net/rockowitz/ddcutil/ubuntu xenial main
For other distributions, or if using AMD's proprietary fglrx driver, ddcutil must be built from source.
DDC/CI communication must be enabled on the monitor. This setting can only be changed using the monitor's on screen display.
ddcutil users require write permission to /dev/i2c-* devices. See /dev/i2c Permissions
If using an open source video driver, kernel module i2c-dev must be loaded. See Kernel Module Configuration
If using Nvidia's proprietary video driver, special settings may be necessary. See Special Nvidia Driver Settings
If ddcutil installs successfully but execution fails, command
can be used to probe the I2C environment and may provide clues as to the problem.
For USB connected monitors, use command
Sanford Rockowitz email@example.com