Preliminary Notes for the Next ddcutil Release

Release 2.0.0 is a major update to ddcutil, containing significant performance improvements. The version of the shared library is not backwards compatible.

For notes on changes to the shared library, see Shared Library Changes for the Next Release (Draft)


ddcutil installation installs file /usr/lib/modules-load.d/ddcutil.conf to ensure that kernel module i2c-dev is loaded at boot time (if it is not built into the kernel).

Along with the udev rules changes in release 1.4.1, this change means ddcutil should just work "out of the box" with no special system configuration. The most signficiant exception is that special settings may still be needed for the proprietary Nvidia driver.

Performance Improvements

Dynamic Sleep Adjustment

The dynamic sleep algorithm has been completely rewritten to both dynamically increase the sleep-multiplier factor (as needed) and decrease the sleep multiplier factor (insofar as possible). Data is maintained across program executions in file $HOME/.cache/ddcutil/stats. Option -dsa, or one of its variants such as --enable-dsa turn it on. If both --sleep-multiplier and --dsa are specified, existing statistics are discarded and the sleep algorithm restarts calculation with the specified sleep-multiplier value.

Cached Display Information

Program startup can be slow because of the many sleeps required by the display detection process. This information rarely changes. Information about the detected system configuration is optionally saved in file $HOME/.cache/ddcutil/displays.

Options --enable-displays-cache and --disable-displays-cache control whether this feature is enabled.

System Logs

Writing to the system log has been generalized and in the process simplified.

Option --syslog <level> controls what is written to the system log. Recognized levels, in order of increasing verbosity, are NEVER, ERROR, WARN, NOTICE, INFO, VERBOSE, and DEBUG. This option replaces --enable-syslog, --disable-syslog, and --trace-to-syslog. The default for ddcutil is WARN, and for libddcutil is NOTICE.

environment --verbose Changes

  • Option --quickenv skips some slow tests such as use of program i2cdetect.
  • Extended sysfs scan for ARM SOC devices to explore how those devices use /sys
  • disable caching
  • report contents of cached files

Miscellanous Changes

  • Option --sleep-multiplier 0 is now allowed. Some DisplayPort monitors have been observed to work with this value.
  • The tests durng display detection to check for misuse of the DDC Null Message or an all zero getvcp response to indicate unsupported features have been made more robust.
  • Option --noconfig: Do not process the configuration file.
  • Option --trccall <function name>: Trace the specified function and its called functions. (This option reports only functions for which tracing has been enabled.)
  • Option --hh. The number of command line options has become huge. Many are development related. Options not of interest to general users are now hidden. Option --hh exposes them, and implies option --help.
  • Option --verbose. If specified on the command line, the options obtained from the configuration file are reported.
  • Detailed statistics are now maintained on a per-display instead of per-thread basis. Option --vstats reports detailed statistics, in particular per-display statistics. --vstats takes the same arguments as --stats.
  • Option --help. Document ELAPSED as a recognized statistics class
  • Reading the EDID when using USB to communicate with a monitor's virtual control panel can fail. Try using a fallback mechanisms to read the EDID for any Eizo displays, not just those with a specific product id.
  • Existing cached capabilities are not erased when ddcutil is called with capabilities caching disabled.


  • configure option -enable-syslog/--disable-syslog has been removed. Instead, use command line option --syslog never at runtime to disable all writes to the system log.
  • Shared library libkmod is no longer required.
  • Shared library libjansson is now required. Its development package (libjansson-dev on Debian based systems) must be installed.

Development Facilities

  • Added termporary use options --f7, --f8, --i2, --s1, --s2, --s3, --s4, --fl1, --fl2. The current meaning of these options is reported by option --settings.
  • Added utility command C1 for temporary use during development.
  • Added option --enable-mock-data