edid-decode - Man Page

Decode EDID data in human-readable format

Synopsis

edid-decode <options> [in [out]]

Description

edid-decode decodes EDID monitor description data in human-readable format. If [in] is not given, or [in] is '-', then the EDID will be read from standard input. If [out] is given then the EDID that was read from [in] is written to [out] or to standard output if [out] is '-'. By default the output is written as a hex dump when writing to standard output or a raw EDID if written to a file.

If [out] is given then edid-decode only does the conversion, it will skip the decoding step.

Input files may be raw binaries or ASCII text.  ASCII input is scanned for hex dumps; heuristics are included to search for hexdumps in edid-decode(1) output (as long as the initial hex dump was included), xrandr(1) property output and Xorg(1) log file formats, otherwise the data is treated as a raw hexdump.  EDID blocks for connected monitors can be found in /sys/class/drm/*/edid on modern Linux systems with kernel modesetting support.

All timings are shown in a short format, for example:

   VIC  16:  1920x1080   60.000 Hz  16:9    67.500 kHz 148.500 MHz (native)
   VIC   5:  1920x1080i  60.000 Hz  16:9    33.750 kHz  74.250 MHz
   VIC  39:  1920x1080i  50.000 Hz  16:9    31.250 kHz  72.000 MHz

Each format starts with a timings type prefix, the resolution, an optional interlaced indicator ('i'), the frame rate (field rate for interlaced formats), the picture aspect ratio, the horizontal frequency, the pixelclock frequency and optionally additional flags between parenthesis.

Note that for interlaced formats the frame height is given, not the field height. So each field in a 1920x1080i format has 540 lines.

Detailed timings have another 2-3 lines of data:

   VIC  16:  1920x1080   60.000 Hz  16:9    67.500 kHz 148.500 MHz (native)
                  Hfront   88 Hsync  44 Hback 148 Hpol P
                  Vfront    4 Vsync   5 Vback  36 Vpol P
   VIC   5:  1920x1080i  60.000 Hz  16:9    33.750 kHz  74.250 MHz
                  Hfront   88 Hsync  44 Hback 148 Hpol P
                  Vfront    2 Vsync   5 Vback  15 Vpol P Vfront +0.5 Odd Field
                  Vfront    2 Vsync   5 Vback  15 Vpol P Vback  +0.5 Even Field
   VIC  39:  1920x1080i  50.000 Hz  16:9    31.250 kHz  72.000 MHz
                  Hfront   32 Hsync 168 Hback 184 Hpol P
                  Vfront   23 Vsync   5 Vback  57 Vpol N Both Fields

These describe the horizontal and vertical front porch, sync, backporch and sync polarity values. For interlaced formats there are two lines for the vertical information: one for the Odd Field (aka Field 1) and one for the Even Field (aka Field 2). The vertical front porch of the Odd Field is actually 2.5 (hence the 'Vfront +0.5' at the end of the line), and the back porch of the Even Field is actually 15.5 (hence the 'Vback  +0.5' at the end of the line).

There is a special 'VIC 39' interlaced format where both fields have the same vertical timings, in that case this is marked with 'Both Fields'.

The following timing types can be shown:

DMT #: Discrete Monitor Timing (see DMT 1.3 standard). The number is the DMT ID in hexadecimal.
CVT: Coordinated Video Timings (formula-based, see CVT 1.2 standard)
GTF: Generalized Timing Formula (formula-based, see GTF 1.1 standard)
IBM: Old IBM Timings
Apple: Old Apple Timings
VIC #: Video Identification Code (see CTA-861 standard). The number is the actual

VIC code.

HDMI VIC #: HDMI-specific Video Identification Code (see HDMI 2.1 standard). The number

is the actual HDMI VIC code.

DTD #: Detailed Timings Descriptor (see EDID standard). Also used for

DisplayID Video Timing Modes Types I, II, VI and VII. The number denotes that this is the Nth DTD in the EDID.

By default DTDs are shown in the long format while others are just shown in the short format. With the option --short-timings all timings are shown in short format only. With the option --long-timings all timings are shown in long format.

Alternate formats for long timings can be chosen via the --xmodeline or --fbmode options.

Standards

The following EDID standards are supported by edid-decode:

EDID 1.3: VESA Enhanced Extended Display Identication Data Standard, Release A, Revision 1

EDID 1.4: VESA Enhanced Extended Display Identication Data Standard, Release A, Revision 2

DisplayID 1.3: VESA Display Identification Data (DisplayID) Standard, Version 1.3

DisplayID 2.0: VESA DisplayID Standard, Version 2.0

DisplayID 2.0: VESA DisplayID v2.0 Errata E7

DI-EXT: VESA Display Information Extension Block Standard, Release A

LS-EXT: VESA Enhanced EDID Localized String Extension Standard, Release A

VTB-EXT: VESA Video Timing Block Extension Data Standard, Release A

DTCDB: VESA Display Transfer Characteristics Data Block Standard, Version 1.0

DDDB: VESA Display Device Data Block (DDDB) Standard, Version 1

HDMI 1.4b: High-Definition Multimedia Interface, Version 1.4b

HDMI 2.1: High-Definition Multimedia Interface, Version 2.1

HDMI 2.1: Amendment A1 to HDMI Specification Version 2.1

CTA-861-H: A DTV Profile for Uncompressed High Speed Digital Interfaces

SPWG Notebook Panel Specification, Version 3.5

EPI Embedded Panel Interface, Revision 1.0

Microsoft EDID extension for head-mounted and specialized monitors, Version 3

The following related standards are also used by edid-decode:

DMT 1.3: VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT), Version 1.0, Rev. 13

CVT 1.2: VESA Coordinated Video Timings (CVT) Standard, Version 1.2

GTF 1.1: VESA Generalized Timing Formula Standard, Version: 1.1

Options

-h,  --help

Prints the help message.

-o,  --output-format <fmt>

If [out] is specified, then write the EDID in format <fmt>.

The output format can be one of:
hex: hex numbers in ascii text (default for stdout)
raw: binary data (default unless writing to stdout)
carray: c-program struct
xml: XML data

-c,  --check

Check if the EDID conforms to the standards. Warnings and failures are reported at the end.

-C,  --check-inline

Check if the EDID conforms to the standards. Warnings and failures are reported as they happen.

-n,  --native-timings

Report the native timings at the end. There may be multiple native timing reports depending on whether the Source only parses Block 0 (e.g. DVI outputs) or Block 0 and the CTA-861 Extension Blocks (HDMI).

-p,  --preferred-timings

Report the preferred timings at the end. There may be multiple native timing reports depending on whether the Source only parses Block 0 (e.g. DVI outputs), or Block 0 and the CTA-861 Extension Blocks (HDMI), or Block 0 and the DisplayID Extension Blocks (typical for DisplayPort).

-P,  --physical-address

Just report the HDMI Source Physical Address and nothing else. Reports f.f.f.f if the EDID could not be parsed, or if there was no CTA-861 Vendor-Specific Data Block with OUI 00-0C-03. Otherwise it reports the Source Physical Address as provided in that Data Block. This can be used as input to HDMI CEC utilities such as the linux cec-ctl(1) utility.

-S,  --short-timings

Report all video timings in a short format.

-L,  --long-timings

Report all video timings in a long format.

-X,  --xmodeline

Report all long video timings in the ModeLine format as defined in xorg.conf(5). This ModeLine can be used in the xorg.conf file or passed to xrandr(1) with the xrandr --newmode option.

-F,  --fbmode

Report all long video timings in the video mode format as defined in fb.modes(5).

-V,  --v4l2-timings

Report all long video timings in the video mode format as defined in the linux header v4l2-dv-timings.h for use with the V4L2 VIDIOC_S_DV_TIMINGS ioctl.

-s,  --skip-hex-dump

Skip the initial hex dump of the EDID.

-H,  --only-hex-dump

Only show the hex dump of the EDID, then exit.

--skip-sha

Don't show the SHA hash. Normally edid-decode will show the SHA, i.e. the hash of the git commit used to compile edid-decode. This uniquely identifies the version of edid-decode that is used to generate the warnings and failures. But it will also change the output of edid-decode for every new commit in the git repository, even if nothing else changed in the edid-decode output. Use this option to avoid including the SHA in the edid-decode output.

--hide-serial-numbers

Replace any serial numbers in the human readable output by '...'. Note that they are still easily extracted from the EDID hex dump at the start.

--version

Show the SHA hash and the last commit date.

Timing Options

The following options report the timings for DMT, VIC and HDMI VIC codes and calculate the timings for CVT or GTF timings, based on the given parameters. The EDID will not be shown, although it can be used with the --gtf option in order to read the secondary curve parameters.

--std <byte1>,<byte2>

Show the standard timing represented by these two bytes.

--dmt <dmt>

Show the timings for the DMT with the given DMT ID.

--vic <vic>

Show the timings for this VIC.

--hdmi-vic <hdmivic>

Show the timings for this HDMI VIC.

--cvt w=<width>,h=<height>,fps=<fps>[,rb=<rb>][,interlaced][,overscan][,alt]

Calculate the CVT timings for the given format.

<width> is the width in pixels, <height> is the frame (not field!) height in lines.
<fps> is frames per second for progressive timings and fields per second for interlaced timings.
<rb> can be 0 (no reduced blanking, default), or 1-3 for the reduced blanking version.
If interlaced is given, then this is an interlaced format.
If overscan is given, then this is an overscanned format. I.e., margins are required.
If alt is given and <rb>=2, then report the timings optimized for video: 1000 / 1001 * <fps>.
If alt is given and <rb>=3, then the horizontal blanking is 160 instead of 80 pixels.

--gtf w=<width>,h=<height>[,fps=<fps>][,horfreq=<horfreq>][,pixclk=<pixclk>]

[,interlaced][,overscan][,secondary][,C=<c>][,M=<m>][,K=<k>][,J=<j>]
Calculate the GTF timings for the given format.

<width> is the width in pixels, <height> is the frame (not field!) height in lines.
<fps> is frames per second for progressive timings and fields per second for interlaced timings.
<horfreq> is the horizontal frequency in kHz.
<pixclk> is the pixel clock frequency in MHz. Only one of fps, horfreq or pixclk must be given.
If interlaced is given, then this is an interlaced format.
If overscan is given, then this is an overscanned format. I.e., margins are required.
If secondary is given, then the secondary GTF is used for reduced blanking, where <c>, <m>, <k> and <j> are parameters for the secondary curve.  If none of the secondary curve parameters were set, and an EDID file is passed as command line option, then the secondary curve parameters are read from that EDID.
The default secondary curve parameters are 40 for <c>, 600 for <m>, 128 for <k> and 20 for <j>. These values correspond to the normal curve that GTF uses.

--list-established-timings

List all known Established Timings.

--list-dmts

List all known DMTs.

--list-vics

List all known VICs.

--list-hdmi-vics

List all known HDMI VICs.

Notes

Not all fields are decoded, or decoded completely. edid-decode does attempt to validate its input against the relevant standards, but its opinions have not been double-checked with the relevant standards bodies, so they may be wrong.  Do not rely on the output format, as it will likely change in future versions of the tool as additional fields and extensions are added.

See Also

Xorg(1), xrandr(1), cec-ctl(1), xorg.conf(5), fb.modes(5)

Authors

edid-decode was written by Adam Jackson, with contributions from Eric Anholt, Damien Lespiau, Hans Verkuil and others.  For complete history and the latest version, see http://git.linuxtv.org/cgit.cgi/edid-decode.git