Convenient display setup with DDCcontrol

Test Pattern


If you like to customize display settings, you might try DDCcontrol - a tool that takes the headaches out of display configuration.

By Jan Rähm

timbec, photocase.com

DDCcontrol lets you manage your monitor settings without touching the hardware controls. DDCcontrol relies on the DDC/CI control channels. DDC, which stands for Display Data Channel, is a serial communication interface between the graphics adapter and the display. The interface was standardized by VESA. Normally, the interface is just used to send data to the graphics driver; the driver uses this information to choose the right resolution and refresh rate settings.

DDCcontrol sends data back in the opposite direction. The documentation [1] [2] tells you which displays and graphics adapters the program supports. If your hardware is not on the list, it could still be worthwhile to try the program.

Debian users can use ready-to-run program packages from the Testing repository to install the configuration helper. Ubuntu 7.04 also has the required packages, which answer to the names of ddccontrol and ddccontrol-db, as well as gddccontrol for the front-end. The package manager will automatically handle the dependencies (Table 1).

If you are not a Debian or Ubuntu user and you can't find a matching package in your Linux system's repository, you will need to build the packages from the source code [3] and acquire a couple of libraries and tools. If you want to use DDCcontrol with Direct Memory Access, you only need the PCI-Utils.

In addition to fulfilling the dependencies, you will also need developer packages to match the packages you are installing; on Debian, developer packages are easily recognizable by their -dev suffix. The GUI also requires a working Gtk environment, including the devel packages. After resolving the dependencies, you can launch the installation for each of the DDCcontrol components in the usual way: ./configure && make && make install. If the installation is successful, then you can launch the tool.

If you installed the GUI, you can type gddccontrol in a terminal window to launch the utility. The tool attempts to identify your display. If the launch is unsuccessful, the most plausible explanations are that your display doesn't support the DDC/CI protocol or that the display model is not covered by the database. The first issue has no solution; you have to resign yourself to setting up your monitor in the traditional way. In the second case, DDCcontrol will use a device-independent basic profile and warn you that some functions may not be supported or that the results might not be what you expect.

If your display is not on the list or is not supported, the export LANG= ;export LC_ALL= ;ddccontrol -p -c -d command exports the device data. Send the export file to the project mailing list [4] to help developers.

The devices in our lab were not in the database, but the displays, and most settings, worked fine, as they are VESA-compliant and support DDC2B [5]. Like all actions you perform with DDCcontrol, you must be root to run this command. The program needs to access /dev/mem to work properly. Also, you need to load the i2c-dev module and the framebuffer module for your graphics adapter [6].

Display Settings

The menu content will vary depending on your display device. Although a warning was issued (Figure 1) for the displays in our lab, the menu actually had a good selection of functions. Of the four main items, the first three are functions for setting the color, size, position, and aspect of your display. The fourth item resets the display to the values prior to launching DDCcontrol. These defaults are not stored between DDCcontrol sessions.

Figure 1: The DDCcontrol GUI menu has a clear structure that makes the program easy to master.

You can set the brightness and contrast in the first submenu using a calibration pattern in full-screen mode (Figure 2). Remaining options are configurable on a scale between 0 and 100 with the mouse. Changes are applied immediately, just as in an on-screen display menu.

Figure 2: The pattern in full-screen mode helps you calibrate the brightness and contrast.

DDCcontrol might offer to configure advanced features for you. I had no trouble toggling between the two inputs on the flat-screen display or enabling standby mode.

If you mainly work with graphics on your Linux machine, you will definitely appreciate the ability to store multiple configuration profiles for the color settings, brightness, and contrast. Click the button to launch the DDCcontrol profile manager. Create Profile opens the familiar menu structure.

The check boxes for the individual (sub)menu options (Figure 3) are new. Check the box to tell DDCcontrol to add the settings for the current item to the profile, which allows users to store settings for different monitors or color profiles. Cancel profile creation quits the profile manager and discards changes.

Figure 3: Simply check the box to save this setting in the current profile.

Typing ddccontrol and the right options at the command line give you access to the GUI program's full feature set. However, you need to concentrate on what you are doing and read the documentation and program output carefully. The advantage of the command-line approach is fast and accurate setting of individual parameters.

Of course, working with DDCcontrol in the shell is far less convenient than using a GUI. What the shell option does offer is the ability to automate display settings. For example, you could use a simple script to apply user-specific custom settings.

Conclusions

DDCcontrol is a big help when you start to set up a CRT or LCD display. Of course, configuring a display is not the kind of task you need to perform every day, but thanks to its ability to store various profiles, DDCcontrol is a useful aid for graphic or video artists. A test pattern for color settings, just like the one for optimizing contrast and brightness, would be a useful extension.

INFO
[1] Supported graphics adapters: http://ddccontrol.sourceforge.net/doc/0.4/apc.html
[2] Supported monitors: http://ddccontrol.sourceforge.net/doc/0.4/apb.html
[3] Project homepage: http://ddccontrol.sourceforge.net
[4] DDCcontrol mailing list: ddccontrol-users@lists.sourceforge.net
[5] Info on VESA, DDC, and DDC/CI: http://www.vesa.org
[6] I2C background: http://www.i2c-bus.org