Display Data Channel: Difference between revisions

Content deleted Content added
Remove reference to "reverse DDM" which is not related to DDC
Link suggestions feature: 3 links added.
 
(12 intermediate revisions by 8 users not shown)
Line 1:
{{short description|Communication protocols}}
The '''Display Data Channel''', or ('''DDC''',) is a collection of [[Protocol (computing)|protocols]] for digital communication between a [[computer display]] and a [[Video card|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.
{{Cleanup bare URLs|date=August 2022}}
The '''Display Data Channel''', or '''DDC''', is a collection of [[Protocol (computing)|protocols]] for digital communication between a [[computer display]] and a [[Video card|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.
 
Like modern analog VGA connectors, the [[DVI]] and [[DisplayPort]] connectors include pins for DDC, but DisplayPort only supports DDC within its optional Dual-Mode DP ([[DisplayPort#DisplayPort Dual-Mode (DP++)|DP++]]) feature in DVI/HDMI mode.
Line 12 ⟶ 11:
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 [[VGA connector]].
 
[[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''. [[DisplayID]] is aimed to replace EDID, which supports many features such as [[High dynamic range|HDR]] and [[color management]].
 
The first version of the DDC standard was adopted in August 1994. It included the EDID 1.0 format and specified DDC1, DDC2B and DDC2Ab physical links.
Line 27 ⟶ 26:
Prior to the DDC, the [[VGA]] standard had reserved four pins in the analog [[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:<ref>{{Cite web|url=https://patents.google.com/patent/US5285197/en|title=Method and apparatus for automatic selection of scan rates for enhanced VGA-compatible monitors}}</ref><ref>[http://www.cs.nyu.edu/~mwalfish/classes/15sp/ref/hardware/vgadoc/PINOUT.TXT {{BareMonitor URL plain text|date=March 2022}}Pinouts]</ref><ref>{{Cite web|url=https://pinoutguide.com/Video/VGA15_pinout.shtml|title=VGA pinout diagram @ pinoutguide.com|website=pinoutguide.com}}</ref>
 
{| class="wikitable"
Line 43 ⟶ 42:
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.<ref>{{Cite web|url=http://archive.org/details/bitsavers_ibmpccardseferenceManualMay92_1756350|title=ibm :: pc :: cards :: IBM VGA XGA Technical Reference Manual May92|date=May 25, 1992|via=Internet Archive}}</ref>
 
DDC changed the purpose of the ID pins to incorporate a [[Serial communication|serial link interface]]. However, during the transition, the change was not backwards-compatible and video cards using the old scheme could have problems if a DDC-capable monitor was connected.<ref>[ftp://ftp.cis.nctu.edu.tw/pub/csie/Software/X11/private/VeSaSpEcS/VESA_Document_Center_Monitor_Interface/EDDCv1r1.pdf Enhanced Display Data Channel Standard, Version 1.1]{{dead link|date=September 2017May 2025|bot=InternetArchiveBot medic}}{{cbignore|fix-attemptedbot= medic}}</ref><ref>{{Cite web|url=https://www.eevblog.com/forum/projects/i2c-over-cat5e-problem/?action=dlattach;attach=185318|format=PDF|title=Enhanced Display Data Channel Standard, Version 1.1|date=March 24, 2004|access-date=2023-05-04|archive-url=https://web.archive.org/web/20230504201124/https://www.eevblog.com/forum/projects/i2c-over-cat5e-problem/?action=dlattach;attach=185318|archive-date=2023-05-04|url-status=live}}</ref> The DDC signal can be sent to or from a video graphics array (VGA) monitor with the I<sup>2</sup>C protocol using the master's serial clock and serial data pins.
 
===DDC1===
Line 51 ⟶ 50:
 
=== DDC2 {{anchor|DDC2B}} ===
The most common version, called '''DDC2B''', is based on [[I²C]], a [[Serial communications|serial bus]]. Pin 12, ID1, of the VGA connector is used as the data pin of the I²C bus, and the formerly-unused pin 15 is the I²C clock. Pin 9, previously used as a mechanical key, supplies +5V DC power (up to 50mA) to power the EEPROM. With this, the host can read the EDID even if the monitor is powered off. Though I²C is fully [[Two-way communication|bidirectional]] and supports multiple [[Bus mastering|bus-masters]], DDC2B is unidirectional and allows only one [[Bus mastering|bus master]] -- the—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.
 
{{anchor|DDC2Ab}}
'''DDC2Ab''' is an implementation of the I²C-based 100-kbit/s [[ACCESS.bus]] interface, which made it possible for 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 they disappeared with the introduction of [[Universal Serial Bus|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.
Line 63 ⟶ 62:
'''DDC/CI''' ([[Interface (computer science)|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 September 1998.
 
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 [[Page orientation|portrait and landscape]] positions.
 
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.{{efn|Note that MCCS glosses over the difference in how CRT and LCD or newer displays interpret brightness and contrast settings: adjusting LCD brightness affects overall luminance, which is the same as "contrast" on CRTs. LCD "contrast" instead adjusts the white level.<ref>{{cite web |last1=Poynton |first1=Charles |title="Brightness" and "Contrast" controls |url=https://www.poynton.ca/notes/brightness_and_contrast/index.html |website=poynton.ca |accessdate=17 November 2020}}</ref><ref>{{cite web |last1=Patek |first1=Marcel |title=LCD Displays - liquid crystals - gamut - phosphors - polarization |url=http://www.marcelpatek.com/lcd.html |website=Digital Photography}}</ref>}}
Line 83 ⟶ 82:
'''Enhanced 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 (E-EDID) standard.
 
Earlier DDC implementations used simple 8-bit data offset when communicating with the EDID memory in the monitor, limiting the storage size to 2<sup>8</sup> 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 = {{val|32|ul=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.
Line 103 ⟶ 102:
</ref> that connect 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 can be used to disable this driver's Plug and Play features and manually select any resolution or refresh rate supported by the video card.<ref>{{Cite web |url=http://support.microsoft.com/kb/309569 |title=You Cannot Select the Highest Monitor Graphics Modes |access-date=2009-10-12 |archive-date=2011-04-15 |archive-url=https://web.archive.org/web/20110415020409/http://support.microsoft.com/kb/309569 |url-status=dead }}</ref> Many video card manufacturers and third parties provide control applications which can be used to select a custom display mode that does not conform to the EDID information or the monitor .INF file.
 
==See also==
* [[Display Control Channel]]
* [[Extended Display Identification Data]]
 
== Notes ==
Line 113 ⟶ 112:
 
==References==
<references />
* ''Extended Display Identification Data (EDID) Standard'', Version 3, 1997, VESA
* [http://www.vesa.org/vesa-standards/standards-faq/ VESA Standards FAQ] {{Webarchive|url=https://web.archive.org/web/20111108001805/http://www.vesa.org/vesa-standards/standards-faq/ |date=2011-11-08 }}
Line 121 ⟶ 120:
* Linux
** [https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux ddcci-driver-linux]: Linux kernel driver supporting backlight control for monitors supporting DDC/CI
** [httphttps://ddccontrolgithub.sourceforge.netcom/ddccontrol/ddccontrol ddccontrol]: Linux software which uses DDC/CI to control monitors supporting this protocol (seems to be [https://github.com/ddccontrol/ddccontrol/issues/72 maintained on github])
** [http://www.ddcutil.com/ ddcutil]: (formerly ddctool) Linux software for querying and changing monitor settings over DDC/CI
** [https://github.com/redballoonshenanigans/monitordarkly MonitorDarkly]: proofProof of concept for exploiting monitors over vendor-specific DDC/CI extensions
* Windows
** [https://github.com/emoacht/Monitorian Monitorian]: Open -source application that uses DDC/CI to change brightness from aan icon in the Task Bar
** [https://github.com/xanderfrangos/twinkle-tray Twinkle Tray]: similarSimilar to Monitorian
** [https://github.com/blackholeearth/Win10_BrightnessSlider Win10_BrightnessSlider]: similarSimilar to Monitorian
** [https://github.com/scottaxcell/winddcutil winddcutil]: anAn open -source Windows implementation of the ddcutil Linux program for querying and changing monitor settings, such as brightness and colour levels.
** [http://www.ddc-ci.com/ softMCCS]: Windows software which uses DDC/CI to control monitors supporting this protocol
** ''[http://www.nicomsoft.com/wini2cddc/ Nicomsoft WinI2C/DDC]: Windows Software Development Kit (SDK) which uses I2C and DDC/CI protocols to control monitors'' (removed from support, downloadable ZIP files don't contain application)
** [https://github.com/emoacht/Monitorian Monitorian]: Open source application that uses DDC/CI to change brightness from a icon in the Task Bar
** [https://github.com/xanderfrangos/twinkle-tray Twinkle Tray]: similar to Monitorian
** [https://github.com/blackholeearth/Win10_BrightnessSlider Win10_BrightnessSlider]: similar to Monitorian
** [https://github.com/scottaxcell/winddcutil winddcutil]: an open source Windows implementation of the ddcutil Linux program for querying and changing monitor settings, such as brightness and colour levels.
* Mac
** [https://displaybuddygithub.appcom/waydabber/BetterDisplay DisplayBuddyBetterDisplay]: aA MacmacOS menubar app forwith control ofvarious display functionsrelated features, including DDC/CI control
** [https://github.com/kfix/ddcctl ddcctl]: anAn open -source command-line tool for querying and changing monitor settings over DDC/CI for Intel Macs
** [https://github.com/jlj/NativeDisplayBrightness NativeDisplayBrightness]: a minimal DDC luminosity app for Mac OS X
** [https://displaybuddy.app DisplayBuddy]: A Mac app for control of display functions
** [https://github.com/kfix/ddcctl ddcctl]: an open source tool for querying and changing monitor settings over DDC/CI
** [https://lunar.fyi Lunar]: An open-source app to manage and sync display brightness and contrast among internal and external displays, using DDC/CI and various other control methods
** [https://github.com/the0neyouseek/MonitorControl MonitorControl]: an open source tool for mac which uses DDC/CI to control monitors supporting this protocol
** [https://github.com/waydabber/BetterDisplaym1ddc BetterDisplaym1ddc]: aAn macOSopen-source menubarcommand-line apptool withfor customquerying resolutions,and XDR/HDRchanging extramonitor brightness,settings DCCover brightnessDDC/contrast/colours/volume adjustments, dummy displays, pictureCI infor picture,Apple displaySilicon overrides.Macs
** [https://lunarmonitorcontrol.fyiapp LunarMonitorControl]: anAn open -source apptool thatfor Mac which uses DDC/CI to synccontrol amonitors Mac'ssupporting primarythis display brightness and contrast with external monitorsprotocol
** [https://github.com/jlj/NativeDisplayBrightness NativeDisplayBrightness]: aA minimal DDC luminosity app for Mac OS XmacOS
 
[[Category:VESA]]