Display Data Channel
The Display Data Channel (DDC) is a set of communication protocols developed by the Video Electronics Standards Association (VESA) to enable the exchange of configuration and control data between a host system, such as a computer graphics adapter, and an attached display device, like a monitor or television.[1] Primarily, it facilitates the unidirectional or bidirectional transfer of Extended Display Identification Data (EDID), a standardized data structure that describes the display's capabilities, including supported video resolutions, refresh rates, aspect ratios, and color spaces, thereby supporting plug-and-play functionality for automatic setup and optimal performance.[2] The protocol relies on an I²C (Inter-Integrated Circuit) bus embedded within video connector pinouts, allowing data transmission at rates up to 100 kbit/s in standard mode or higher in extended modes, without requiring additional cabling.[3] DDC originated in the early 1990s as part of VESA's initiatives to enhance Super VGA (SVGA) systems with better display-host interoperability, with the initial DDC 1.0 standard and EDID 1.0 released in 1994 to address manual configuration challenges in analog video setups.[2] Evolution continued with DDC version 2 in 1996, introducing bidirectional capabilities via DDC2B, and DDC version 3 in December 1997, which added support for protocols like DDC2Bi and integration with emerging interfaces such as Plug and Display (P&D).[4] The Enhanced DDC (E-DDC) standard, first published in September 1999 and updated to version 1.2 in December 2007, expanded data capacity to 32 kilobytes using segment pointers and incorporated support for modern structures like DisplayID, while maintaining backward compatibility.[3] Concurrently, the DDC/CI (Command Interface) extension, initially released in August 1998 and revised to version 1.1 in October 2004, enabled host control of display parameters through the Monitor Control Command Set (MCCS), such as brightness, contrast, and volume.[1] In contemporary applications, DDC remains integral to digital video standards including VGA, DVI, HDMI, and DisplayPort, where it not only handles EDID readback but also supports advanced features like hot-plug detection and auxiliary data channels for audio or USB integration.[3] Its implementation requires specific wiring in cables (e.g., pins 12 and 15 on VGA), and while early versions were unidirectional, modern E-DDC and DDC/CI ensure robust, low-latency communication for multi-monitor setups and high-resolution displays up to 8K.[5] By standardizing display identification and control, DDC has significantly reduced user configuration errors and improved compatibility across consumer and professional AV systems.[2]Introduction
Overview
The Display Data Channel (DDC) is a protocol suite developed by the Video Electronics Standards Association (VESA) that enables bidirectional communication between host systems, such as computers, and attached displays, like monitors or projectors, over a dedicated channel for exchanging display identification and control data.[3] This standard defines the means for hosts to retrieve configuration details from displays and, in its more advanced implementations, transmit control signals to adjust display parameters.[3] At its core, DDC facilitates the reading of Extended Display Identification Data (EDID) from displays, which includes essential attributes such as supported resolutions, timing modes, and color characteristics, allowing the host to automatically configure optimal video output without manual intervention.[6] In enhanced versions, it extends to sending commands for real-time adjustments, such as brightness, contrast, and volume, promoting greater interoperability across diverse hardware.[3] Physically, DDC operates over an I²C bus integrated into common display interfaces like VGA, DVI, HDMI, and DisplayPort.[3] The primary benefits of DDC include enabling plug-and-play functionality, which simplifies setup by automating display detection and configuration, thereby reducing user involvement and minimizing compatibility issues in multi-display environments.[6] It also standardizes communication protocols across various display interfaces, ensuring consistent performance and supporting advanced features like remote control in professional and consumer applications.[3] Originating in the early 1990s as part of VESA's initiatives to streamline PC-monitor connections, the first DDC standard was released in 1994 to address the growing need for automated display identification amid evolving graphics technologies.[7]History
The Display Data Channel (DDC) originated in 1994 when the Video Electronics Standards Association (VESA) released version 1.0 alongside Extended Display Identification Data (EDID) 1.0 to automate monitor configuration and resolve manual setup issues prevalent in early personal computers.[8][9] In 1996, VESA updated EDID to version 1.1 and introduced DDC2, which enabled bidirectional communication for more efficient data exchange between displays and host systems.[10] By December 15, 1997, DDC version 3 was issued, incorporating the DDC2Bi protocol along with support for VESA's Plug and Display (P&D) and Flat Panel Display Interface (FPDI) standards to accommodate emerging display technologies.[4] The year 1999 marked the release of E-DDC 1.0 on September 2, which significantly increased data capacity to handle more comprehensive display descriptors.[4] This was followed by further enhancements, including E-DDC 1.2 on December 26, 2007, which broadened compatibility with advanced interfaces and larger datasets. An errata update to E-DDC 1.2 was adopted on April 19, 2013, to resolve I²C addressing conflicts in multi-interface environments like HDMI and DisplayPort.[3] On October 29, 2004, VESA published DDC/CI version 1.1, establishing standardized commands for remote monitor control and management.[1] Following 2010, DDC saw deeper integration with consumer standards, including HDMI 1.4 (released in 2009) and DisplayPort 1.2 (January 2010), facilitating seamless EDID reading and control in multimedia ecosystems. Its relevance persists in modern setups, such as USB4 and DisplayPort 2.1 (October 2022), where it supports high-bandwidth connections.[11]Physical Layer
Signal Transmission
The Display Data Channel (DDC) employs the I²C (Inter-Integrated Circuit) serial bus standard for bidirectional data exchange between the host (such as a graphics adapter) and the display device.[3] This protocol enables reliable communication over short distances using two open-drain lines: the serial data line (SDA) and the serial clock line (SCL).[12] DDC operates at data rates defined by the I²C standard, with the standard mode at 100 kHz and fast mode up to 400 kHz, allowing for efficient transfer of display identification and control information without significantly impacting overall system performance.[3][12] The signaling uses 5V TTL-compatible voltage levels, ensuring compatibility with legacy display interfaces.[3] Pull-up resistors are required on both SCL and SDA lines to maintain logic high states; the host typically provides resistors between 1.5 kΩ and 2.2 kΩ, while the display includes a 47 kΩ resistor on SCL, though 4.7 kΩ is a common value across implementations for balanced rise times.[3][1] Pin assignments for DDC vary by connector but follow consistent mappings for SDA, SCL, and power. In the VGA (HD-15) connector, SDA is on pin 12, SCL on pin 15, and +5V power on pin 9.[13] For DVI and HDMI, the assignments align closely: DVI uses SCL on pin 6, SDA on pin 7, and +5V on pin 14; HDMI assigns SCL to pin 15, SDA to pin 16, and +5V to pin 18, often utilizing the TMDS clock shield and a reserved pin for grounding.[13][8] In DisplayPort, DDC is supported via the AUX channel—a dedicated bidirectional differential pair (pins vary by connector type, typically AUX CH+ and AUX CH-) that emulates I²C signaling for compatibility.[14][15] Starting with DDC2 and subsequent versions, communication is bidirectional, with the host acting as the I²C master initiating transactions and the display serving as the slave, addressed at 0x50 (7-bit) for primary EDID reads.[3][16] This master-slave architecture ensures orderly data flow, where the host polls the display for responses. Error handling in DDC relies on I²C acknowledgment bits, where the slave responds to each byte with an ACK (low) or NACK (high) to confirm successful reception; failure to acknowledge triggers retransmission or error detection by the host.[12][3] The host supplies +5V (up to 50 mA) on the designated power pin to energize the DDC lines, ensuring the display can respond even if minimally powered.[3][8]Integration with Display Interfaces
The Display Data Channel (DDC) was first integrated into the Video Graphics Array (VGA) interface with the release of DDC 1.0 in 1994, utilizing dedicated pins on the 15-pin high-density D-sub connector to enable basic unidirectional communication for monitor identification in legacy analog displays. Specifically, DDC 1.0 employed pin 12 as the serial data line (SDA) and synchronized data transmission using the vertical sync signal on pin 14 as the clock, allowing graphics adapters to read essential monitor capabilities without additional hardware. This integration laid the foundation for plug-and-play functionality in analog systems, using specific pins (such as 9 for +5V, 12 for data, and 14/15 for clock) on the VGA connector to ensure compatibility across early PC ecosystems.[3][17][18] Transitioning to digital interfaces, the Digital Visual Interface (DVI), standardized by VESA in April 1999, mandated support for DDC2B to facilitate Extended Display Identification Data (EDID) exchange, using dedicated pins 6 (SCL for clock) and 7 (SDA for data) on both single-link and dual-link DVI connectors. Similarly, the High-Definition Multimedia Interface (HDMI), introduced in 2002 by the HDMI Forum, incorporated DDC via its dedicated DDC lines (pins 15 and 16 on the 19-pin connector) to handle EDID reads and monitor control, while the Consumer Electronics Control (CEC) feature operates on a separate line (pin 13) for device interoperability in home entertainment systems. These implementations ensured seamless hot-plug detection and configuration in digital video chains.[3] DisplayPort, released by VESA in 2006 with version 1.0, embeds DDC functionality within its auxiliary (AUX) channel—a bidirectional, half-duplex link operating at up to 1 Mbps—to transmit EDID and control commands alongside main video data on the same connector. This AUX channel, using low-speed differential signaling on dedicated pins, supports DDC/CI extensions for monitor adjustments and remains consistent across revisions, including DisplayPort 2.1 in 2022, which enhances overall bandwidth to 80 Gbps but retains the 1 Mbps AUX for compatibility. In other standards, USB-C with DisplayPort Alternate Mode (introduced in USB Type-C specification 2014) and Thunderbolt interfaces (from version 3 onward) carry DDC via the emulated AUX channel during video output, enabling single-cable display connectivity in modern laptops and docks. Additionally, Low-Voltage Differential Signaling (LVDS), commonly used for embedded panels in laptops and industrial displays, optionally includes DDC over I²C-compatible lines for EDID access, though implementation varies by panel manufacturer.[19] For backward compatibility, modern displays supporting advanced DDC versions like DDC2B or E-DDC automatically fall back to DDC1 protocols if higher-speed bidirectional communication fails, using the simpler unidirectional mode on VGA or compatible pins to ensure basic EDID retrieval in mixed legacy environments. Regarding certification, VESA's DisplayID standard, introduced in 2007 as a successor to EDID and refined in version 2.0 (2017), is integrated via DDC in post-2010 hardware to support advanced features like 4K resolutions, HDR, and tiled displays, with modular data blocks transmitted over the same DDC channels for broader device interoperability.[1][3][20]Core Protocols
DDC1
DDC1, the inaugural version of the Display Data Channel protocol, was introduced by the Video Electronics Standards Association (VESA) in August 1994 as part of the DDC Standard Version 1.0 Revision 0. This protocol was developed exclusively to enable unidirectional transmission of Extended Display Identification Data (EDID) from the display device to the host computer, facilitating basic plug-and-play functionality without any provision for host-initiated commands or bidirectional communication.[10] The core mechanics of DDC1 rely on a simple serial communication scheme integrated into the VGA connector. The display continuously streams data from its onboard EEPROM via the serial data line (pin 12, designated as ID1 or SDA), with transmission clocked by the vertical synchronization signal (pin 14, VSYNC) at rates typically ranging from 60 to 100 Hz. This setup allows the host to read the fixed 128-byte EDID block repeatedly, capturing display capabilities during active video periods without requiring complex addressing or handshaking.[21][17] The EDID 1.0 data structure transmitted under DDC1 comprises a compact 128-byte format that encodes essential display attributes, including a three-character manufacturer ID (derived from EISA codes), a 16-bit product ID for model identification, supported video timings via detailed timing descriptors and standard timing blocks (covering common resolutions such as 800x600 and 1024x768 at 60 Hz), and feature flags like color depth support, GTF capability, and preferred timing indicators. These elements provide the host with sufficient information to configure optimal output modes, though the structure prioritizes legacy analog displays and lacks extensibility for higher resolutions or digital interfaces.[22][10] Despite its pioneering role, DDC1's limitations—primarily its strictly read-only operation, absence of bidirectional control, and inherently slow transfer speed dictated by VSYNC—rendered it rapidly obsolete, with adoption confined to early implementations and few monitors ever supporting it fully. It found primary use in rudimentary plug-and-play scenarios for legacy VGA environments, where hosts could automatically detect and select basic display parameters upon connection, paving the way for more advanced protocols.[21][17]DDC2
DDC2, released in 1996 as part of the VESA Display Data Channel Standard version 2.0, introduced a bidirectional upgrade to the earlier DDC protocol by adopting the full I²C serial bus for master-slave communication.[23] In this setup, the host system serves as the I²C master, initiating transactions, while the display functions as the slave device, enabling both read and write operations over the shared data channel.[3] This shift from unidirectional data flow allowed for more interactive host-display interactions beyond mere capability querying.[24] The DDC2B variant specifically emphasizes bi-directional capabilities, utilizing standardized I²C slave addressing such as 0x50 (equivalent to 0xA0 for writes and 0xA1 for reads) for EDID retrieval.[25] Supported operations encompass EDID reads to obtain display identification, timing modes, and feature data. Unlike its unidirectional predecessor detailed in the DDC1 section, DDC2 facilitates these capabilities on the same physical layer.[18] By the late 1990s, DDC2 adoption was mandated within VESA standards for compliant displays and graphics adapters, forming a foundational protocol integrated into emerging digital interfaces like DVI to ensure seamless plug-and-play functionality.[26]Advanced Features
DDC/CI
The Display Data Channel/Command Interface (DDC/CI) is a bidirectional extension to the DDC protocol that allows host systems to query and control monitor settings over the DDC channel, building on the DDC2 hardware standard for enhanced interactivity. The DDC/CI standard was first released in August 1998 (version 1.0), with version 1.1 defined in the VESA DDC/CI Standard Version 1.1, released on October 29, 2004, providing major updates including expanded commands and compliance requirements.[1] It integrates the Monitor Control Command Set (MCCS) to provide standardized operations via Virtual Control Panel (VCP) codes, enabling remote adjustment of display parameters without physical interaction with the monitor.[1] This extension supports Plug and Play functionality by allowing dynamic configuration of displays and associated peripherals, such as speakers or touch panels, while maintaining compatibility with the underlying I²C-based DDC2 bus.[1] Key features of DDC/CI include VCP commands for essential monitor controls, such as brightness (VCP code 10h), which adjusts luminance levels; contrast (VCP code 12h), which modifies image contrast; audio volume (VCP code 62h), which sets speaker output; and color temperature (VCP code 0Ch), which requests or sets the display's color temperature in Kelvin. Responses to these commands return the current value, maximum range, and quantization steps for the feature, allowing hosts to query supported capabilities and apply precise settings. For instance, a Get VCP Feature command might retrieve the current brightness value (0-100 scale) and its allowable range, facilitating automated calibration or user adjustments. The protocol also supports timing reports for synchronization data, such as horizontal and vertical frequencies, and capabilities strings that enumerate supported VCP codes in a formatted response like "vcp(10 12 62)", indicating availability of those features.[1] The protocol structure uses structured packets over the I²C channel, typically up to 32 bytes, with specific formats for commands comprising a 1-byte opcode (e.g., 01h for Get VCP Feature, 02h for Set VCP Feature), up to 6 parameter bytes (including the VCP code and value), and a 1-byte block checksum for error detection, with the remaining bytes as delay or padding.[1] Hosts initiate communication by addressing the monitor's I²C slave address (0x37h for DDC/CI), and the monitor responds within specified timeouts to ensure reliable operation. This packet-based design allows for extensible commands beyond basic VCP operations, including identification queries and save-to-non-volatile-memory instructions, while capabilities strings provide a human-readable summary of the monitor's control features for diagnostic purposes.[1] Although the core DDC/CI standard does not mandate security mechanisms, some monitor implementations incorporate basic authentication, such as PIN-based locks or password prompts, to restrict unauthorized modifications to settings like brightness or input source. In practice, DDC/CI finds applications in remote management for multi-monitor setups, where software can uniformly adjust settings across displays, and in bypassing the on-screen display (OSD) for seamless integration with operating system controls or automation scripts. OS-level access to DDC/CI is supported through graphics drivers that expose these functions via APIs.[27]E-DDC
The Enhanced Display Data Channel (E-DDC) standard, introduced by VESA in September 1999 with version 1.0, extends the capabilities of the original DDC by allowing displays to provide more comprehensive identification data to host systems.[10] This expansion primarily enhances the Extended Display Identification Data (EDID) structure, increasing it from a single 128-byte block to 256 bytes across two blocks, which accommodates additional details such as the display's native aspect ratio, luminance characteristics, and gang (horizontal/vertical) pixel data.[3] By utilizing a segment pointer at I²C address 60h, E-DDC enables access to these extended blocks via primary addresses A0h/A1h and secondary addresses A4h/A5h, facilitating plug-and-play configuration for a wider range of display types beyond traditional PC monitors.[3] Subsequent revisions refined and broadened E-DDC's scope. Version 1, Revision 1 in 2004 extended support to consumer electronics interfaces like HDMI and DVI, while version 1.2 in December 2007 incorporated CTA-861 extensions for audio and video capabilities, including detailed timing data for digital television products.[3] These CTA-861 integrations, defined by the Consumer Technology Association, allow EDID blocks to describe supported audio formats, video colorimetry, and later revisions enable metadata for high dynamic range (HDR) content and resolutions up to 4K (3840x2160). In terms of block organization, block 0 retains core timing and identification parameters from the original EDID, block 1 provides manufacturer-specific details and extensions like aspect ratio and luminance, and post-2007 updates introduce DisplayID blocks with flexible, XML-like descriptors for modular data representation, supporting diverse display features without fixed 128-byte limits.[3] E-DDC's primary usage lies in enabling host systems to automatically adapt display settings, such as scaling resolutions to the native panel capabilities or adjusting output based on content type (e.g., video vs. graphics), thereby improving user experience in multi-interface environments like VGA, DVI, HDMI, and DisplayPort.[3] It maintains backward compatibility with DDC2 protocols, allowing legacy hosts to read the first 128-byte block, though full utilization requires software capable of parsing the extended segments and additional data structures.[3] This compatibility ensures seamless integration in mixed hardware setups while promoting scalability for emerging display technologies.[3]Implementation and Support
Operating System Compatibility
Windows provides native support for the Display Data Channel (DDC) through its display driver architecture, enabling the reading of Extended Display Identification Data (EDID) as part of Plug and Play functionality since Windows 95. The Display Control Panel in Windows 95 and subsequent versions utilizes EDID data retrieved via DDC to configure display resolutions and capabilities automatically.[28] DirectX and the Windows Display Driver Model (WDDM), introduced in Windows Vista, further enhance DDC/EDID and DDC/Command Interface (DDC/CI) handling for multi-monitor setups, allowing graphics drivers to query and control monitor features like brightness and contrast through standardized I2C communication over display interfaces.[29] In Linux, DDC support is facilitated by kernel modules such as i2c-dev, which has been available since kernel version 2.6, providing access to the I2C bus used for DDC transactions. The X11 windowing system employs the RandR extension to perform DDC queries for EDID information during display configuration, while Wayland compositors integrate similar capabilities through the DRM subsystem for dynamic monitor management. Modern distributions like Ubuntu 24.04 offer full DDC/CI functionality via user-space tools integrated with kernel drivers, enabling control of monitor settings such as luminance and color temperature.[30][31] macOS incorporates DDC support within its Core Graphics framework, introduced in OS X 10.0 (Cheetah), where the system reads EDID data to identify and configure displays, including extended EDID (E-DDC) blocks for high-resolution scaling on Retina-class screens. For external displays connected via Thunderbolt, macOS leverages DDC/CI to retrieve timing and capability information, though native control of features like brightness often requires supplemental software due to implementation variations in the IOKit registry.[32][33] Support in other operating systems is more specialized. Android, particularly in TV and media player implementations, utilizes DDC over HDMI to read EDID for automatic resolution negotiation, with extensions through HDMI-CEC for basic control interoperability in connected ecosystems. Embedded systems like Raspberry Pi OS employ the vc4-drm kernel driver to handle DDC/EDID reads on HDMI outputs, supporting plug-and-play detection in resource-constrained environments.[34] Cross-platform challenges arise from inconsistent DDC/CI implementations, where varying levels of protocol adherence result in partial support for controls such as brightness adjustment; for instance, some monitors respond reliably on Windows but exhibit timeouts or incomplete feature sets on Linux or macOS due to differences in I2C timing and command handling.[35]Software Tools and APIs
Several open-source tools facilitate interaction with Display Data Channel (DDC) for monitor control and diagnostics across operating systems. ddcutil, an open-source command-line interface (CLI) tool primarily for Linux but with Windows compatibility through related utilities, enables querying and adjusting Video Control Panel (VCP) features such as brightness, contrast, and input source via DDC/CI since its initial development around 2015.[36][37] For macOS, ddcctl provides scripting capabilities to control monitor settings like brightness over DDC, allowing integration with automation tools for custom scripts.[38] APIs and libraries support programmatic access to DDC functionalities. On Windows, the Windows Management Instrumentation (WMI) provides classes like WmiMonitorID for retrieving Extended Display Identification Data (EDID) from connected monitors, enabling applications to access monitor capabilities without direct hardware interaction.[39] In Linux environments, libddcutil offers I²C wrappers for sending DDC/CI commands, abstracting low-level bus operations for developers building monitor management applications.[36] Cross-platform development benefits from HIDAPI, a library for USB Human Interface Device communication, which supports DDC over USB-integrated connections on monitors that expose DDC via HID endpoints. Developers commonly use these APIs for advanced tasks, such as parsing EDID blocks with libraries like libedid to extract display specifications including resolution and timing data for custom display configurations. Sending Monitor Control Command Set (MCCS) commands through DDC/CI can be implemented via socket-like interfaces in libraries such as libddcutil, allowing remote adjustment of VCP features in applications.[40] Commercial and specialized software leverages DDC for practical applications like calibration and management. DisplayCAL, a widely used tool for color calibration, employs DDC/CI to automate adjustments to monitor settings during profiling workflows, ensuring accurate color reproduction. In remote management scenarios, KVM (keyboard, video, mouse) software such as software-based switches integrates DDC commands to control monitor inputs across multiple systems, facilitating seamless transitions in multi-computer setups.[41] As of 2025, emerging integrations extend DDC into IoT ecosystems, with plugins for frameworks like Home Assistant using tools such as ddc-mqtt to enable smart home automation of display controls via MQTT protocols for brightness and input switching.[42]Configuration and Limitations
Enabling and Disabling DDC
Enabling DDC begins with ensuring proper hardware connections that support the I²C serial bus used for communication. In VGA interfaces, DDC signals are carried over pins 12 (serial data line, SDA) and 15 (serial clock line, SCL), so adapter cables or converters must preserve these connections to allow bidirectional data exchange between the graphics adapter and display. Modern digital interfaces like HDMI and DisplayPort incorporate dedicated DDC lines by default, eliminating the need for special adapters in most cases.[3] In certain systems, particularly those with custom firmware or embedded configurations, the I²C bus underlying DDC may require enablement through BIOS or UEFI settings to expose the necessary hardware resources for monitor communication. The UEFI Platform Initialization specification outlines the I²C protocol stack, which decouples controller details from bus configuration, allowing vendors to implement support; users should consult motherboard documentation to verify or activate I²C host controllers if DDC fails to initialize during boot.[43] On the software side, Linux systems rely on the i2c-dev kernel module to access DDC functionality via /dev/i2c-N device files; this module is typically loaded automatically but can be manually unloaded to disable DDC communication using the commandmodprobe -r i2c-dev, effectively preventing applications from interacting with connected displays. In Windows, there is no native toggle for DDC/CI within Device Manager's monitor properties, as support is managed by the graphics driver stack; however, disabling the monitor device in Device Manager can interrupt DDC sessions as a workaround for testing.[44]
From the display perspective, DDC/CI is often enabled by default on compatible monitors but can be activated or deactivated through the on-screen display (OSD) menu. This setting is commonly located under "Advanced," "Factory," or "Other" subsections; for instance, Dell monitors place it in the "Others" menu, where selecting "DDC/CI" and toggling to "On" or "Off" applies the change immediately. Similarly, HP models like the Z32 series access this via the OSD input/source or system setup options.[45][46]
Disabling DDC may be necessary to mitigate compatibility issues, such as interference with specific graphics cards where driver versions fail to handle DDC/CI properly, leading to communication errors on older monitors connected via DVI or HDMI. It can also resolve power-saving conflicts, where DDC signals prevent the display from properly entering or exiting low-power states, causing it to remain off after being turned back on.[47][48]
Verification of DDC status involves checking for active communication channels and supported features. On Linux, the ddcutil detect command scans I²C buses for displays implementing the Monitor Control Command Set (MCCS) via DDC/CI, reporting detected monitors, bus details, and any failures. In Windows, third-party tools like ClickMonitorDDC can query and confirm DDC/CI availability by attempting to read monitor capabilities; alternatively, the DirectX Diagnostic Tool (dxdiag) provides general display adapter information under the Display tab, which may indicate basic EDID/DDC read support through driver notes, though it does not perform direct DDC/CI tests.[49][50][51]