Color Management

A primary use for ddcutil is as part of color profile management. A monitor calibration is meaningful only if the color settings on the monitor are the same as when the calibration was performed.

Normally, monitor settings are changed by pressing buttons on the monitor bezel. Depending on the monitor, the process ranges from annoying to excruciating. ddcutil allows this process to be automated.

Command ddcutil dumpvcp saves the current color related monitor settings in a file, and ddcutil loadvcp restores them from a file.

If implemented by the monitor, the VCP feature codes in feature group PROFILE are saved by dumpvcp and restored by loadvcp. These are:

  • 10: Brightness
  • 12: Contrast
  • 13: Backlight control
  • 14: Video gain: Red
  • 16: Video gain: Green
  • 18: Video gain: Blue
  • 6B: Backlight level: White
  • 6C: Video black level: Red
  • 6D: Backlight Level: Red
  • 6E: Video black level: Green
  • 6F: Backlight level: Green
  • 70: Video black level: Blue
  • 71: Backlight Level: Blue

To see the list of feature codes saved and restored, you can also issue the command:

ddcutil vcpinfo profile --terse

Color Management Workflow

To discuss:

  • Save profile related VCP values in a custom tag in monitor profile file instead of a separate file

  • Having a GUI for ddcutil would make monitor color adjustment much easier. Such as GUI could be shown along size the dispcal color balance screen shown at the start of calibration.

  • API access to dump/load features for simpler integration with other programs.

Monitor Lookup Tables

Typically, monitor calibration creates a color lookup table that is loaded into the video card. Some advanced monitors have an internal lookup table. Typically, these monitors have a software development kit with an API for accessing the LUT, and typically thse SDKs support Linux either poorly or not at all.

The MCCS specification defines a set of features for accessing the monitor's internal lookup table:

  • 73: LUT size
  • 74: Single point LUT operation
  • 75: Block LUT operation
  • 76: Remote procedure call

These are what MCCS categorizes as "Table" type features. Reading and writing table type features is implemented in ddcutil, but has not yet been tested for lack of a monitor to test with.

If a monitor were to implement these features, ddcutil should be able to load the LUT. Unfortunately, no monitor with an internal hardware LUT that has yet been tested do implement them. None of the following monitors with a hardware LUT implement the VCP codes:

  • HP Dreamcolor LP2480zx
  • NEC PA241
  • Eizo CG19 (has only USB interface)
  • Dell U2413