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. Advanced monitors, such as the HP Dreamcolor LP2480zx, NEC PA241, Eizos, and even a few "prosumer" models such as the recent Dell U2413 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. However, the internal lookup table can also be accessed using the following VCP feature codes:

  • 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.