The Display Data Channel, or DDC, is a collection of protocols for
digital communication between a computer display and a graphics
adapter that enable the display to communicate its supported display
modes to the adapter and that enable the computer host to adjust
monitor parameters, such as brightness and contrast.
The standard was created by the Video Electronics Standards
2 Physical link
5 Disabling DDC
6 See also
8 External links
The DDC suite of standards aims to provide a "plug and play"
experience for computer displays.
DDC1 and DDC2B/Ab/B+/Bi protocols are a physical link between a
monitor and a video card, which was originally carried on either two
or three pins in a 15-pin analog
Extended display identification data (EDID) is a companion standard;
it defines a compact binary file format describing the monitor's
capabilities and supported graphics modes, stored in a read-only
memory (EEPROM) chip programmed by the manufacturer of the monitor.
The format uses a description block containing 128 bytes of data, with
optional extension blocks to provide additional information. The most
current version is Enhanced
EDID (E-EDID) Release A, v2.0.
The first version of the DDC standard was adopted in August 1994. It
EDID 1.0 format and specified DDC1, DDC2B and DDC2Ab
DDC version 2, introduced in April 1996, split
EDID into a separate
standard and introduced the DDC2B+ protocol.
DDC version 3, December 1997, introduced the DDC2Bi protocol and
VESA Plug and Display and Flat Panel Display Interface on
separate device addresses, requiring them to comply with
The DDC standard has been superseded by E-DDC in 1999.
Prior to the DDC, the
VGA standard had reserved four pins in the
VGA connector, known as ID0, ID1, ID2 and ID3 (pins 11, 12, 4
and 15) for identification of monitor type. These ID pins, attached to
resistors to pull one or more of them to ground (GND), allowed for the
definition of the monitor type, with all open (n/c, not connected)
meaning "no monitor".
In the most commonly documented scheme, the ID3 pin was unused and
only the 3 remaining pins were defined. The ID0 was pulled to GND by
color monitors, while the monochrome monitors pulled ID1 to GND.
Finally, the ID2 pulled to GND signaled a monitor capable of 1024×768
resolution, such as IBM 8514. In this scheme, the input states of the
ID pins would encode the monitor type as follows:
ID2 (pin 4)
ID0 (pin 11)
ID1 (pin 12)
no monitor connected
< 1024×768, monochrome
< 1024×768, color
≥ 1024×768, color
More elaborate schemes also existed that used all of the 4 ID pins
while manipulating the HSync and VSync signals in order to extract 16
bits (4 ID pin values for each of the 4 combinations of HSync and
VSync states) of monitor identification.
DDC changed the purpose of the ID pins to incorporate a serial link
interface. However, this change is not fully backwards-compatible and
video cards using the ID pin scheme may have problems detecting the
monitor type if a DDC-capable monitor is connected, such as
erroneously identifying a color monitor as a monochrome one.
DDC1 is a simple, low-speed, unidirectional serial link protocol. Pin
12, ID1 functions as a data line that continuously transmits the
EDID block, and the data clock is synchronised with vertical
sync, providing typical clock rates of 60 to 100 Hz.
Very few display devices implemented this protocol.
The most common version, called DDC2B, is based on I²C, a serial bus.
Pin 12, ID1 of the
VGA connector is now used as the data pin from the
I²C bus, and the formerly-unused pin 15 became the
I²C clock; pin 9,
previously used as a mechanical key, supplied +5V DC power up to 50mA
to drive the EEPROM, this allows the host to read the
EDID even if the
monitor is powered off. Though
I²C is fully bidirectional and
supports multiple bus-masters, DDC2B is unidirectional and allows only
one bus master - the graphics adapter. The monitor acts as a slave
device at the 7-bit
I²C address 50h, and provides 128-256 bytes of
read-only EDID. Because this access is always a read, the first I²C
octet will always be A1h.
DDC2Ab is an implementation of the I²C-based 100 kbit/s ACCESS.bus
interface, which allowed monitor manufacturers to support external
ACCESS.bus peripherals such as a mouse or keyboard with little to no
additional effort; such devices and monitors were briefly available in
the mid 1990s, but disappeared with the introduction of USB.
DDC2B+ and DDC2Bi are scaled-down versions of DDC2Ab which only
support monitor and graphics card devices but still allow
bidirectional communication between them.
DDC2 is not exclusive to the
VGA connector, as both DVI and HDMI
connectors feature dedicated DDC2B wires.
DDC/CI (Command Interface) standard was introduced in August 1998. It
specifies a means for a computer to send commands to the monitor, as
well as receive sensor data from the monitor, over a bidirectional
link. Specific commands to control monitors are defined in a separate
Monitor Control Command Set (MCCS) standard version 1.0, released in
DDC/CI monitors are sometimes supplied with an external color sensor
to allow automatic calibration of the monitor's color balance. Some
tilting DDC/CI monitors support an auto-pivot function, where a
rotation sensor in the monitor enables the operating system to keep
the display upright as the monitor is moved between its portrait and
Most DDC/CI monitors support only a small subset of MCCS commands and
some have undocumented commands. Many manufacturers did not pay
attention to DDC/CI in the past, but now almost all monitors support
such general MCCS commands as brightness and contrast management.
DDC/CI standard describes a full suite of bidirectional control
protocols - DDC2Ab, DDC2Bi and DDC2B+ - in a single standard and
provides a means for packaging
Monitor Control Command Set commands.
DDC/CI version 1.1 was adopted in October 2004.
Monitor Control Command Set version 2.0 was adopted in October 2003. A
new MCCS V3 was introduced in July 2006, though didn't gain enough
industry attention yet. The latest release of V2 standard is version
2.2, adopted February 2009.
Display Data Channel (E-DDC) is the most recent revision of
the DDC standard. Version 1 was introduced in September 1999 and
featured the addition of a segment pointer which allowed up to 32
Kbytes of display information storage for use by the Enhanced EDID
Earlier DDC implementations used simple 8-bit data offset when
communicating with the
EDID memory in the monitor, limiting the
storage size to 28 bytes = 256 bytes, but allowing the use of cheap
2-Kbit EEPROMs. In E-DDC, a special
I²C addressing scheme was
introduced, in which multiple 256-byte segments could be selected. To
do this, a single 8-bit segment index is passed to the display via the
I²C address 30h. (Because this access is always a write, the first
I²C octet will always be 60h.) Data from the selected segment is then
immediately read via the regular DDC2 address using a repeated I²C
'START' signal. However,
VESA specification defines the segment index
value range as 00h to 7Fh, so this only allows addressing 128 segments
× 256 bytes = 7001320000000000000♠32 KiB. The segment index
register is volatile, defaulting to zero and automatically resetting
to zero after each NACK or STOP. Therefore, it must be set every time
access to data above the first 256-byte segment is performed. The
auto-reset mechanism is to provide for backward compatibility to, for
example, DDC2B hosts, otherwise they may be stuck at a segment other
than 00h in some rare cases.
Other important changes were removal of the DDC1 and DDC2Ab protocols,
deprecation of separate
VESA P&D and FPDI device addresses, and
clarifications to the DDC power requirements.
E-DDC Version 1.1, approved March 2004, featured support for
E-DDC Version 1.2, approved December 2007, introduced support for
DisplayPort (which has no dedicated DDC2B links and uses its
bidirectional auxiliary channel for
EDID and MCCS communication) and
E-DDC Version 1.3 from September 2017 contains corrections for errata
and minor clarifications.
Some KVM switches (keyboard-video-mouse) and video extenders handle
DDC traffic incorrectly, making it necessary to disable monitor plug
and play features in the operating system, and maybe even physically
remove pin 12 from the analog
VGA cables that connects such device
to multiple PCs.
Microsoft Windows features a standard "Plug and Play Monitor" driver
which uses the display's
EDID information to construct a list of
supported monitor modes. The Display Resolution control panel applet
allows the user to disable this driver's Plug and Play features and
manually select any resolution or refresh rate supported by the video
card. Many video card manufacturers and third parties provide
control applications which allow the user to select a custom display
mode that does not conform to the
EDID information or the monitor .INF
Display Control Channel
Extended Display Identification Data
^ Patent US5285197 – Method and apparatus for automatic selection of
scan rates for enhanced VGA-compatible monitors
^ PS/2 Video Subsystem Technical Reference Manual, Preliminary Draft
May 19th 1992
Display Data Channel Standard, Version 1.1[permanent dead
VESA Standards Summaries:
Display Data Channel Command Interface
(DDC/CI) Standard, Version 1.1(
VESA document VESA-2004-10)
^ Lyosha Blinnikov. "Allowing any screen resolution on Vista". I
performed this mod on an old 6" patch cable that was previously used
for connecting a 3D accelerator. I call it my "freedom cable", as it
can be connected to any monitor to temporarily disable its
Extended Display Identification Data (EDID) Standard, Version 3, 1997,
VESA Standards FAQ
Display interfaces: fundamentals. Bob Myers, Robert L. Myers, Society
for Information Display
ddccontrol: Linux software which uses DDC/CI to control monitors
supporting this protocol. (Seems to be not supported and not
maintained at this time).
ddcutil: (formerly ddctool) Linux software for querying and changing
monitor settings over DDC/CI.
softMCCS: Windows software which uses DDC/CI to control monitors
supporting this protocol.
Nicomsoft WinI2C/DDC: Windows Software Development Kit (SDK) which
uses I2C and DDC/CI protocols to control monitors.
ClickMonitorDDC: ClickMonitorDDC is a portable freeware tool to adjust
brightness or contrast of a DDC