ddcci

Controlling DDC/CI monitors using command line interface

Download as .zip Download as .tar.gz View on GitHub

Linux DDC/CI Tool page

DDC/CI device is a client at I2C bus address 0x37. Data being sent/received is formatted in frame, each frame has a fixed prefix byte, followed by length of the payload, payload itself and checksum made of XORing submitted/received I2C message. The initial XOR value depends on operation attempted, it's equal to I2C address submitted on the wire and seems to be fixed value for read transaction. For details see ddcci-tool sources.

Usage

ddcci-tool /dev/i2c-X -e -c -d

This should produce output like this:

ddcci-tool version 0.03

Reading EDID : 0x50@/dev/i2c-2 Plug and Play ID: SAM00BA Input type: Analog

Using ddc/ci : 0x37@/dev/i2c-2

Capabilities: (type(LCD)vcp(04 05 10 12 60(1 3) B0(1 2) B6 C6 C8 C9 D6(1 4) DC(1 2 3 4) DF))

If you got this - congratulations, if not, try digging inside it. If it hangs - press Ctrl+C. At the moment I do not accept anything other than patches. ;-) The output is not decoded at the moment, but the meaning as follows - vcp section contains list of controls which can be adjusted. Some controls are descrete, i.e. they can be one of the value specified in the list which follows them. See Controls section below for decoding numbers. The caps string are depends on the mode in which monitor is being used at the time of running. I.e. the the output was produced, when I've switched my SM173T to digital (DVI) input, while analog (VGA) mode produces the following:

(type(LCD)vcp(04 05 06 08 0E 10 12 16 18 1A 1E 20 30 3E 60(1 3) B0(1 2) B6 C6 C8 C9 D6(1 4) DC(1 2 3 4) DF E0(0 1 2)))

(line brake inserted for readability).

Another program options are -d for querying all available controls (which includes also "hidden" controls), -r for reading specific control, -w for writing it. For example to query current brightness execute this command:

ddcci-tool /dev/i2c-X -r 0x10

This should produce output like this:

Reading 0x10(Brightness) Control 0x10: +/0/100 [Brightness]

The meaning is following - control number, validity (+ sign), current value, maximum value and symbolic name. To set brightness to 50 type this:

ddcci-tool /dev/i2c-2 -r 0x10 -w 50

Launch ddcci-tool with no args to see available options. At the moment of writing they're as follows

SM173T Controls

At the moment program show symbolic control names according to Samsung SyncMaster 173T functionality and info gathered from USB & ACCESS.bus specs, so they could be incorrect for your monitor.

References

http://jaffar.cs.msu.su/oleg/ddcci/