Extended Display Identification Data (EDID) is a data structure provided by a digital display to describe its capabilities to a video source (e.g. graphics card or set-top box). It is what enables a modern personal computer to know what kinds of monitors are connected to it. EDID is defined by a standard published by the Video Electronics Standards Association (VESA). The EDID includes manufacturer name and serial number, product type, phosphor or filter type, timings supported by the display, display size, luminance data and (for digital displays only) pixel mapping data.
EDID structure versions range from v1.0 to v1.4; all these define upwards-compatible 128-byte structures. EDID structure v2.0 defined a new 256-byte structure, but subsequently has been deprecated and replaced by v1.3. HDMI 1.0 – 1.3c uses EDID structure v1.3.
DisplayID is a standard targeted to replace EDID and E-EDID extensions with a uniform format suited for both PC monitor and consumer electronics devices.
The channel for transmitting the EDID from the display to the graphics card is usually the I²C-bus, defined in DDC2B (DDC1 used a different serial format which never gained popularity).
Before DDC and EDID were defined, there was no standard way for a graphics card to know what kind of display device it was connected to. Some VGA connectors in personal computers provided a basic form of identification by connecting one, two or three pins to ground, but this coding was not standardized.
The EDID is often stored in the monitor in a memory device called a serial PROM (programmable read-only memory) or EEPROM (electrically erasable PROM) and is accessible via the I²C-bus at address 0x50. The EDID PROM can often be read by the host PC even if the display itself is turned off.
Many software packages can read and display the EDID information, such as read-edid for Linux and DOS, PowerStrip for Microsoft Windows and XFree86 for Linux and BSD unix. Mac OS X natively reads EDID information and programs such as SwitchResX or DisplayConfigX can display the information as well as use it to define custom resolutions.
Enhanced EDID was introduced at the same time as E-DDC; it introduced EDID structure version 1.3 which supports multiple extensions blocks and deprecated EDID version 2.0 structure (although it can be supported as an extension). Data fields for preferred timing, range limits, monitor name are required in E-EDID. E-EDID also supports dual GTF timings and aspect ratio change.
With the use of extensions, E-EDID string can be lengthened up to 32 KBytes.
Timing Extension (00h)
Additional Timing Data Block (CEA EDID Timing Extension) (02h)
Video Timing Block Extension (VTB-EXT) (10h)
EDID 2.0 Extension (20h)
Display Information Extension (DI-EXT) (40h)
Localized String Extension (LS-EXT) (50h)
Microdisplay Interface Extension (MI-EXT) (60h)
Display Transfer Characteristics Data Block (DTCDB) (A7h, AFh, BFh)
Block Map (F0h)
Display Device Data Block (DDDB) (FFh)
Extension defined by monitor manufacturer (FFh): According to LS-EXT, actual contents varies from manufacturer. However, the value is later used by DDDB.
August 1994, DDC standard version 1 – EDID v1.0 structure.
April 1996, EDID standard version 2 – EDID v1.1 structure.
1997, EDID standard version 3 – EDID structures v1.2 and v2.0
February 2000, E-EDID Standard Release A, v1.0 – EDID structure v1.3, EDID structure v2.0 deprecated
September 2006 – E-EDID Standard Release A, v2.0 – EDID structure v1.4
Some graphics card drivers have historically coped poorly with the EDID, using only its standard timing descriptors rather than its Detailed Timing Descriptors (DTDs). Even in cases where the DTDs were read, the drivers are/were still often limited by the standard timing descriptor limitation that the horizontal/vertical resolutions must be evenly divisible by 8. This means that many graphics cards cannot express the native resolutions of the most common wide screen flat panel displays and liquid crystal display televisions. The number of vertical pixels is calculated from the horizontal resolution and the selected aspect ratio. To be fully expressible, the size of wide screen display must thus be a multiple of 16×9 pixels. For 1366×768 pixel Wide XGA panels the nearest resolution expressible in the EDID standard timing descriptor syntax is 1360×765 pixels, typically leading to 3 pixel thin black bars. Specifying 1368 pixels as the screen width would yield an unnatural screen height of 769.5 pixels.
Many Wide XGA panels do not advertise their native resolution in the standard timing descriptors, instead offering only a resolution of 1280×768. Some panels advertise a resolution only slightly smaller than the native, such as 1360×765. For these panels to be able to show a pixel perfect image, the EDID data must be ignored by the display driver or the driver must correctly interpret the DTD and be able to resolve resolutions whose size is not divisible by 8. Special programs are available to override the standard timing descriptors from EDID data. Even this is not always possible however, as some vendors' graphics drivers (notably those of Intel) require specific registry hacks to implement custom resolutions, which can make it very difficult to use the screen's native resolution.
When used for another descriptor, the pixel clock and some other bytes are set to 0:
Currently defined descriptor types are:
0xFF: Monitor serial number (text)
0xFE: Unspecified text (text)
0xFD: Monitor range limits. 6- or 13-byte binary descriptor.
0xFC: Monitor name (text), padded with 0A 20 20.
0xFB: Additional white point data. 2× 5-byte descriptors, padded with 0A 20 20.
0xFA: Additional standard timing identifiers. 6× 2-byte descriptors, padded with 0A.
The CEA EDID Timing Extension was first introduced in EIA/CEA-861, and has since been updated several times, most notably with the −861B revision (which was version 3 of the extension, adding Short Video Descriptors and advanced audio capability/configuration information), −861D (published in July 2006 and containing updates to the audio segments), −861E, and −861F which was published on June 4, 2013. According to Brian Markwalter, senior vice president, research and standards, CEA, −861F "includes a number of noteworthy enhancements, including support for several new Ultra HD and widescreen video formats and additional colorimetry schemes.”
Version 1 (as defined in −861) allowed the specification of video timings only through the use of 18-byte Detailed Timing Descriptors (DTD) (as detailed in EDID 1.3 data format above). In all cases, the "preferred" timing should be the first DTD listed in a CEA EDID Timing Extension.
Version 2 (as defined in −861A) added the capability to designate a number of DTDs as "native" and also included some "basic discovery" functionality for whether the display device contains support for "basic audio", YCbCr pixel formats, and underscan.
Version 3 (from the −861B spec) allows two different ways to specify the timings of available digital TV formats: As in Version 1 & 2 by the use of 18-byte DTDs, or by the use of the Short Video Descriptor (SVD) (see below). HDMI 1.0 -1.3c uses this version.
Version 3 also includes four new optional types of data blocks: Video Data Blocks containing the aforementioned Short Video Descripter (SVD), Audio Data Blocks containing Short Audio Descriptors (SAD), Speaker Allocation Data Blocks containing information about the speaker configuration of the display device, and Vendor Specific Data Blocks which can contain information specific to a given vendor's use.
Byte sequence
00: Extension tag (which kind of extension block this is); 02h for CEA EDID
01: Revision number (Version number); 03h for Version 3
02: Byte number (decimal) within this block where the 18-byte DTDs begin. If no non-DTD data is present 
    in this extension block, the value should be set to 04h (the byte after next). If set to 00h,
    there are no DTDs present in this block and no non-DTD data.
03: Number of Native DTDs present, other Version 2+ information
     bit 7: 1 if display supports underscan, 0 if not
     bit 6: 1 if display supports basic audio, 0 if not
     bit 5: 1 if display supports YCbCr 4:4:4, 0 if not
     bit 4: 1 if display supports YCbCr 4:2:2, 0 if not
     bit 3..0: total number of native formats in the DTDs included in this block
04: Start of Data Block Collection.  If byte 02 is set to 04h, this is where the DTD collection
    begins.  If byte 02 is set to another value, byte 04 is where the Data Block Collection begins,
    and the DTD collection follows immediately thereafter.
The Data Block Collection contains one or more data blocks detailing video, audio, and speaker
placement information about the display. The blocks can be placed in any order, and the initial
byte of each block defines both its type and its length:
     bit 7..5: Block Type Tag (1 is audio, 2 is video, 3 is vendor specific, 4 is speaker
               allocation, all other values Reserved) 
     bit 4..0: Total number of bytes in this block following this byte
Once one data block has ended, the next byte is assumed to be the beginning of the next data
block. This is the case until the byte (designated in Byte 02, above) where the DTDs are known 
to begin.
    '''Audio Data Blocks''' contain one or more 3-byte Short Audio Descriptors (SADs).  Each SAD
    details audio format, channel number, and bitrate/resolution capabilities of the display as
    follows:
    SAD Byte 1 (format and number of channels):
       bit 7: Reserved (0)
       bit 6..3: Audio format code
         1 = Linear Pulse Code Modulation (LPCM)
         2 = AC-3
         3 = MPEG1 (Layers 1 and 2)
         4 = MP3
         5 = MPEG2
         6 = AAC
         7 = DTS
         8 = ATRAC
         0, 15: Reserved 
         9 = One-bit audio aka SACD
        10 = DD+
        11 = DTS-HD
        12 = MLP/Dolby TrueHD
        13 = DST Audio
        14 = Microsoft WMA Pro
       bit 2..0: number of channels minus 1  (i.e. 000 = 1 channel; 001 = 2 channels; 111 =
                 8 channels)
    SAD Byte 2 (sampling frequencies supported):
       bit 7: Reserved (0)
       bit 6: 192kHz
       bit 5: 176kHz
       bit 4: 96kHz
       bit 3: 88kHz
       bit 2: 48kHz
       bit 1: 44kHz
       bit 0: 32kHz
    SAD Byte 3 (bitrate):
      For LPCM, bits 7:3 are reserved and the remaining bits define bit depth
       bit 2: 24 bit
       bit 1: 20 bit
       bit 0: 16 bit
    For all other sound formats, bits 7..0 designate the maximum supported bitrate divided by 
    8 kbit/s.
    '''Video Data Blocks''' will contain one or more 1-byte Short Video Descriptors (SVDs).  They are 
    decoded as follows:
       bit 7: 1 to designate that this should be considered a "native" resolution, 0 for non-native
       bit 6..0: index value to a table of standard resolutions/timings from CEA/EIA-861F:
                 
   Code     Picture Pixel
   Short    Aspect  Aspect
   Name     Ratio   Ratio                HxV @ F
  1 DMT0659    4:3                  640x480p @ 59.94/60 Hz
  2 480p       4:3     8:9          720x480p @ 59.94/60 Hz
  3 480pH     16:9    32:37         720x480p @ 59.94/60 Hz
  4 720p      16:9     1:1         1280x720p @ 59.94/60 Hz
  5 1080i     16:9     1:1        1920x1080i @ 59.94/60 Hz
  6 480i       4:3     8:9    720(1440)x480i @ 59.94/60 Hz
  7 480iH     16:9    32:37   720(1440)x480i @ 59.94/60 Hz
  8 240p       4:3     8:9    720(1440)x240p @ 59.94/60 Hz
  9 240pH     16:9    32:37   720(1440)x240p @ 59.94/60 Hz
 10 480i4x     4:3     8:9       (2880)x480i @ 59.94/60 Hz
 11 480i4xH   16:9    32:37      (2880)x480i @ 59.94/60 Hz
 12 240p4x     4:3     8:9       (2880)x240p @ 59.94/60 Hz
 13 240p4xH   16:9    32:37      (2880)x240p @ 59.94/60 Hz
 14 480p2x     4:3     8:9         1440x480p @ 59.94/60 Hz
 15 480p2xH   16:9    32:37        1440x480p @ 59.94/60 Hz
 16 1080p     16:9     1:1        1920x1080p @ 59.94/60 Hz
 17 576p       4:3    16:15         720x576p @ 50 Hz
 18 576pH     16:9    64:45         720x576p @ 50 Hz
 19 720p50    16:9     1:1         1280x720p @ 50 Hz
 20 1080i25   16:9     1:1        1920x1080i @ 50 Hz*
 21 576i       4:3    16:15   720(1440)x576i @ 50 Hz
 22 576iH     16:9    64:45   720(1440)x576i @ 50 Hz
 23 288p       4:3    16:15   720(1440)x288p @ 50 Hz
 24 288pH     16:9    64:45   720(1440)x288p @ 50 Hz
 25 576i4x     4:3    16:15      (2880)x576i @ 50 Hz
 26 576i4xH   16:9    64:45      (2880)x576i @ 50 Hz
 27 288p4x     4:3    16:15      (2880)x288p @ 50 Hz
 28 288p4xH   16:9    64:45      (2880)x288p @ 50 Hz
 29 576p2x     4:3    16:15        1440x576p @ 50 Hz
 30 576p2xH   16:9    64:45        1440x576p @ 50 Hz
 31 1080p50   16:9     1:1        1920x1080p @ 50 Hz
 32 1080p24   16:9     1:1        1920x1080p @ 23.98/24 Hz
 33 1080p25   16:9     1:1        1920x1080p @ 25 Hz
 34 1080p30   16:9     1:1        1920x1080p @ 29.97/30 Hz
 35 480p4x     4:3     8:9       (2880)x480p @ 59.94/60 Hz
 36 480p4xH   16:9    32:37      (2880)x480p @ 59.94/60 Hz
 37 576p4x    4:3     16:15      (2880)x576p @ 50 Hz
 38 576p4xH   16:9    64:45      (2880)x576p @ 50 Hz
 39 1080i25   16:9     1:1        1920x1080i @ 50 Hz* (1250 Total)
 40 1080i50   16:9     1:1        1920x1080i @ 100 Hz
 41 720p100   16:9     1:1         1280x720p @ 100 Hz
 42 576p100    4:3     8:9          720x576p @ 100 Hz
 43 576p100H  16:9    32:37         720x576p @ 100 Hz
 44 576i50     4:3    16:15   720(1440)x576i @ 100 Hz
 45 576i50H   16:9    64:45   720(1440)x576i @ 100 Hz
 46 1080i60   16:9     1:1        1920x1080i @ 119.88/120 Hz
 47 720p120   16:9     1:1         1280x720p @ 119.88/120 Hz
 48 480p119    4:3    16:15         720x480p @ 119.88/120 Hz
 49 480p119H  16:9    64:45         720x480p @ 119.88/120 Hz
 50 480i59     4:3     8:9    720(1440)x480i @ 119.88/120 Hz
 51 480i59H   16:9    32:37   720(1440)x480i @ 119.88/120 Hz
 52 576p200    4:3    16:15         720x576p @ 200 Hz
 53 576p200H  16:9    64:45         720x576p @ 200 Hz
 54 576i100    4:3    16:15   720(1440)x576i @ 200 Hz
 55 576i100H  16:9    64:45   720(1440)x576i @ 200 Hz
 56 480p239    4:3     8:9          720x480p @ 239.76/240 Hz
 57 480p239H  16:9    32:37         720x480p @ 239.76/240 Hz
 58 480i119    4:3     8:9    720(1440)x480i @ 239.76/240 Hz
 59 480i119H  16:9    32:37   720(1440)x480i @ 239.76/240 Hz
 60 720p24    16:9     1:1         1280x720p @ 23.98/24 Hz
 61 720p25    16:9     1:1         1280x720p @ 25Hz
 62 720p30    16:9     1:1         1280x720p @ 29.97/30 Hz
 63 1080p120  16:9     1:1        1920x1080p @ 119.88/120 Hz
 64 1080p100  16:9     1:1        1920x1080p @ 100 Hz
 65 720p24    64:27    4:3         1280x720p @ 23.98/24 Hz
 66 720p25    64:27    4:3         1280x720p @ 25Hz
 67 720p30    64:27    4:3         1280x720p @ 29.97/30 Hz
 68 720p50    64:27    4:3         1280x720p @ 50 Hz
 69 720p      64:27    4:3         1280x720p @ 59.94/60 Hz
 70 720p100   64:27    4:3         1280x720p @ 100 Hz
 71 720p120   64:27    4:3         1280x720p @ 119.88/120 Hz
 72 1080p24   64:27    4:3        1920x1080p @ 23.98/24 Hz
 73 1080p25   64:27    4:3        1920x1080p @ 25Hz
 74 1080p30   64:27    4:3        1920x1080p @ 29.97/30 Hz
 75 1080p50   64:27    4:3        1920x1080p @ 50 Hz
 76 1080p     64:27    4:3        1920x1080p @ 59.94/60 Hz
 77 1080p100  64:27    4:3        1920x1080p @ 100 Hz
 78 1080p120  64:27    4:3        1920x1080p @ 119.88/120 Hz
 79  720p24   64:27   64:63        1680x720p @ 23.98/24 Hz
 80  720p25   64:27   64:63        1680x720p @ 25Hz
 81  720p30   64:27   64:63        1680x720p @ 29.97/30 Hz
 82  720p50   64:27   64:63        1680x720p @ 50 Hz
 83  720p     64:27   64:63        1680x720p @ 59.94/60 Hz
 84  720p100  64:27   64:63        1680x720p @ 100 Hz
 85  720p120  64:27   64:63        1680x720p @ 119.88/120 Hz
 86 1080p24   64:27    1:1        2560x1080p @ 23.98/24 Hz
 87 1080p25   64:27    1:1        2560x1080p @ 25Hz
 88 1080p30   64:27    1:1        2560x1080p @ 29.97/30 Hz
 89 1080p50   64:27    1:1        2560x1080p @ 50 Hz
 90 1080p     64:27    1:1        2560x1080p @ 59.94/60 Hz 
 91 1080p100  64:27    1:1        2560x1080p @ 100 Hz
 92 1080p120  64:27    1:1        2560x1080p @ 119.88/120 Hz
 93 2160p24   16:9     1:1        3840x2160p @ 23.98/24 Hz
 94 2160p25   16:9     1:1        3840x2160p @ 25Hz
 95 2160p30   16:9     1:1        3840x2160p @ 29.97/30 Hz
 96 2160p50   16:9     1:1        3840x2160p @ 50 Hz
 97 2160p     16:9     1:1        3840x2160p @ 59.94/60 Hz
 98 2160p24  256:135   1:1        4096x2160p @ 23.98/24 Hz
 99 2160p25  256:135   1:1        4096x2160p @ 25Hz
100 2160p30  256:135   1:1        4096x2160p @ 29.97/30 Hz
101 2160p50  256:135   1:1        4096x2160p @ 50 Hz
102 2160p    256:135   1:1        4096x2160p @ 59.94/60 Hz
103 2160p24   64:27    4:3        3840x2160p @ 23.98/24 Hz
104 2160p25   64:27    4:3        3840x2160p @ 25Hz
105 2160p30   64:27    4:3        3840x2160p @ 29.97/30 Hz
106 2160p50   64:27    4:3        3840x2160p @ 50 Hz
107 2160p     64:27    4:3        3840x2160p @ 59.94/60 Hz
 0, 108 - 127   Reserved
*Short video descriptors 20 & 39 are both 1920x1080i@50 16:9 but differ in the amount of vertical 
total lines which are 1125 and 1250, respectively.
Notes: Parentheses indicate instances where pixels are repeated to meet the minimum speed
requirements of the interface. For example, in the 720X240p case, the pixels on each line
are double-clocked. In the (2880)X480i case, the number of pixels on each line, and thus
the number of times that they are repeated, is variable, and is sent to the DTV monitor by
the source device.
Increased Hactive expressions include “2x” and “4x” indicate two and four times the reference 
resolution, respectively.
The CEA/EIA-861/A standard included only numbers 1-7 and numbers 17-22 above(but not as short
video descriptors which were introduced in CEA/EIA-861B) and are considered primary video format
timings.
The CEA/EIA-861B standard included the first 34 short video descriptors above.
The CEA/EIA-861D standard included the first 59 short video descriptors above.
The CEA/EIA-861E standard included the first 64 short video descriptors above.
HDMI 1.0 to HDMI 1.2a uses the CEA-861-B video standard, HDMI 1.3 to HDMI 1.3c uses the
CEA-861-D video standard, HDMI 1.4 uses the CEA/EIA-861E video standard.
HDMI 2.0 uses the CEA/EIA-861F standard.
A '''Vendor Specific Data Block''' (if any) contains as its first three bytes the vendor's IEEE 
24-bit registration number, LSB first. For HDMI, it is always 00-0C-03 for HDMI Licensing, LLC.
It is followed by a two byte source physical address, LSB first. The source physical address
provides the CEC physical address for upstream CEC devices. 
The remainder of the Vendor Specific Data Block is the "data payload",which can be anything the
vendor considers worthy of inclusion in this EDID extension block. HDMI 1.3a specifies some
requirements for the data payload.  See that spec for detailed info on these bytes:
    VSD Byte 1-3 IEEE Registration Identifier (LSB First)
    VSD Byte 4-5 Components of Source Physical Address (See section 8.7 of HDMI 1.3a)
    VSD Byte 6 (optional) (bits are set if sink supports...):
         bit 7: Supports_AI (...a function that needs info from ACP or ISRC packets)
         bit 6: DC_48bit (...16-bit-per-channel deep color)
         bit 5: DC_36bit (...12-bit-per-channel deep color)
         bit 4: DC_30bit (...10-bit-per-channel deep color)
         bit 3: DC_Y444  (...4:4:4 in deep color modes)
         bit 2: Reserved (0)
         bit 1: Reserved (0)
         bit 0: DVI_Dual (...DVI Dual Link Operation)
    VSD Byte 7 (optional) If non-zero (Max_TMDS_Frequency / 5mhz)
    VSD Byte 8 (optional) (latency fields indicators):
         bit 7: latency_fields (set if latency fields are present)
         bit 6: i_latency_fields (set if interlaced latency fields are present; if set
                four latency fields will be present, 0 if bit 7 is 0)
         bits 5-0: Reserved (0)
    VSD Byte  9 (optional) Video Latency (if indicated, value=1+ms/2 with a max of 251 meaning 500ms)
    VSD Byte 10 (optional) Audio Latency (video delay for progressive sources, same units as above)
    VSD Byte 11 (optional) Interlaced Video Latency (if indicated, same units as above)
    VSD Byte 12 (optional) Interlaced Audio Latency (video delay for interlaced sources, same units as above)
Additional bytes may be present, but the HDMI spec says they shall be zero.
If a Speaker Allocation Data Block is present, it will consist of three bytes.  The second and 
third are Reserved (all 0), but the first contains information about which speakers are present in 
the display device:
         bit 7: Reserved (0)
         bit 6: Rear Left Center / Rear Right Center present for 1, absent for 0
         bit 5: Front Left Center / Front Right Center present for 1, absent for 0
         bit 4: Rear Center present for 1, absent for 0
         bit 3: Rear Left / Rear Right present for 1, absent for 0
         bit 2: Front Center present for 1, absent for 0
         bit 1: LFE present for 1, absent for 0
         bit 0: Front Left / Front Right present for 1, absent for 0
    Note that for speakers with right and left polarity, it is assumed that both 
    left and right are present.
"d": byte (designated in byte 02) where DTDs begin.  18-byte DTD strings continue for an unspecified 
length (modulo 18) until a "00 00" is as the first bytes of a prospective DTD.  At this point,
the DTDs are known to be complete, and the start address of the "00 00" can be considered to be "XX"
(see below) 
"XX"-126: Post-DTD padding.  Should be populated with 00h
127: Checksum - This byte must be programmed such that the sum of all 128 bytes equals 00h.