Archiv für die Kategorie ‘fun’

Fun with monitors

2. Mai 2016 Keine Kommentare

Recently I got 2 Dell U2415 monitors. They are 16:10 what is rare today, are very thin and quite nice overall. They come with DDC support what allows to control their settings by software and this is when the fun part starts. To use DDC on Linux you need a program called ddccontrol, it’s quite old but still does its job. One caveat for Slackware users – to build it on Slackware 14.1 you need to recompile pciutils with SHARED=yes, otherwise configure script will complain it cannot find libpci (on Slackware current pciutils package is already built with SHARED=yes by default). Now when ddccontrol is installed we can start using it. First, let’s check if ddccontrol can detect our monitors:

$ sudo ddccontrol -p
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin (
Copyright 2004-2006 Nicolas Boichat (
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Probing for available monitors.I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/DELA0B9.xml"
Document not parsed successfully.
..I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/DELA0BA.xml"
Document not parsed successfully.
Detected monitors :
 - Device: dev:/dev/i2c-7
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Digital
  (Automatically selected)
 - Device: dev:/dev/i2c-5
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Digital

Here ddccontrol detected 2 monitors as we expected. Using their device identifiers we can list all controls they support that can be controlled by ddccontrol:

$ sudo ddccontrol -d dev:/dev/i2c-5

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/2/2 C [???]
Control 0x04: +/0/1 C [Restore Factory Defaults]
Control 0x05: +/0/1 C [Restore Brightness and Contrast]
Control 0x06: +/0/1   [???]
Control 0x08: +/0/1 C [Restore Factory Default Color]
Control 0x0b: +/100/0   [???]
Control 0x0e: +/100/0   [???]
Control 0x10: +/75/100 C [Brightness]
Control 0x12: +/75/100 C [Contrast]
Control 0x14: +/5/12 C [???]
Control 0x16: +/100/100 C [Red maximum level]
Control 0x18: +/100/100 C [Green maximum level]
Control 0x1a: +/100/100 C [Blue maximum level]
Control 0x1e: +/0/1   [???]
Control 0x1f: +/0/1   [???]
Control 0x20: +/0/1   [???]
Control 0x30: +/0/1   [???]
Control 0x3e: +/0/1   [???]
Control 0x52: +/242/255 C [???]
Control 0x60: +/17/18 C [Input Source Select]
Control 0x6c: +/17/18   [???]
Control 0x6e: +/17/18   [???]
Control 0x70: +/17/18   [???]
Control 0xaa: +/1/255 C [OSD Orientation - Landscape]
Control 0xac: +/8564/1 C [???]
Control 0xae: +/6000/65535 C [???]
Control 0xb2: +/1/1 C [???]
Control 0xb6: +/3/5 C [???]
Control 0xc0: +/8/65535   [???]
Control 0xc6: +/17868/65535 C [???]
Control 0xc8: +/4361/17 C [???]
Control 0xc9: +/258/65535 C [???]
Control 0xca: +/1/2   [???]
Control 0xcc: +/2/11   [???]
Control 0xd6: +/1/5 C [DPMS Control - On]
Control 0xdc: +/0/5 C [???]
Control 0xdf: +/513/65535 C [???]
Control 0xe0: +/0/1 C [???]
Control 0xe1: +/0/1 C [Power control - Off]
Control 0xe2: +/0/25 C [???]
Control 0xf0: +/0/255 C [???]
Control 0xf1: +/3/255 C [???]
Control 0xf2: +/0/255 C [???]
Control 0xfc: +/1/1   [???]
Control 0xfd: +/98/255 C [???]

As you see some controls are not described, fortunately some are. Let’s try 0xe1 for example:

$ sudo ddccontrol -r 0xe1 -w 0 dev:/dev/i2c-5

After doing it a monitor went off. We can bring it back again by writing 1 instead of 0:

$ sudo ddccontrol -r 0xe1 -w 1 dev:/dev/i2c-5

Set brightness level to 100:

$ sudo ddccontrol -r 0x10 -w 100 dev:/dev/i2c-5

By the way, you can also change a screen brightness using a well known utility called xrandr in the following way:

$ xrandr --output HDMI3 --brightness 0.5

However, doing this will not modify your monitor internal settings in contrary to DDC.

Kategorienfun, monitors Tags: