1 .\" shorthand for double quote that works everywhere.
5 edid-decode - Decode EDID data in human-readable format
7 .B edid-decode <options> [in [out]]
10 decodes EDID monitor description data in human-readable format.
11 If [in] is not given, or [in] is '-', then the EDID will be read from
12 standard input. If [out] is given then the EDID that was read from [in]
13 is written to [out] or to standard output if [out] is '-'. By default
14 the output is written as a hex dump when writing to standard output or
15 a raw EDID if written to a file.
17 If [out] is given then edid-decode only does the conversion, it will
18 skip the decoding step.
20 Input files may be raw binaries or ASCII text. ASCII input is scanned for
21 hex dumps; heuristics are included to search for hexdumps in
23 output (as long as the initial hex dump was included),
27 log file formats, otherwise the data is treated as a raw hexdump. EDID blocks
28 for connected monitors can be found in
29 .B /sys/class/drm/*/edid
30 on modern Linux systems with kernel modesetting support.
32 All timings are shown in a short format, for example:
34 VIC 16: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz (native)
35 VIC 5: 1920x1080i 60.000 Hz 16:9 33.750 kHz 74.250 MHz
36 VIC 39: 1920x1080i 50.000 Hz 16:9 31.250 kHz 72.000 MHz
38 Each format starts with a timings type prefix, the resolution, an optional
39 interlaced indicator ('i'), the frame rate (field rate for interlaced formats),
40 the picture aspect ratio, the horizontal frequency, the pixelclock
41 frequency and optionally additional flags between parenthesis.
43 Note that for interlaced formats the frame height is given, not the field
44 height. So each field in a 1920x1080i format has 540 lines.
46 Detailed timings have another 2-3 lines of data:
48 VIC 16: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz (native)
49 Hfront 88 Hsync 44 Hback 148 Hpol P
50 Vfront 4 Vsync 5 Vback 36 Vpol P
51 VIC 5: 1920x1080i 60.000 Hz 16:9 33.750 kHz 74.250 MHz
52 Hfront 88 Hsync 44 Hback 148 Hpol P
53 Vfront 2 Vsync 5 Vback 15 Vpol P Vfront +0.5 Odd Field
54 Vfront 2 Vsync 5 Vback 15 Vpol P Vback +0.5 Even Field
55 VIC 39: 1920x1080i 50.000 Hz 16:9 31.250 kHz 72.000 MHz
56 Hfront 32 Hsync 168 Hback 184 Hpol P
57 Vfront 23 Vsync 5 Vback 57 Vpol N Both Fields
59 These describe the horizontal and vertical front porch, sync, backporch
60 and sync polarity values. For interlaced formats there are two lines
61 for the vertical information: one for the Odd Field (aka Field 1) and
62 one for the Even Field (aka Field 2). The vertical front porch of the
63 Odd Field is actually 2.5 (hence the 'Vfront +0.5' at the end of the
64 line), and the back porch of the Even Field is actually 15.5 (hence
65 the 'Vback +0.5' at the end of the line).
67 There is a special 'VIC 39' interlaced format where both fields have
68 the same vertical timings, in that case this is marked with 'Both Fields'.
70 The following timing types can be shown:
74 DMT #: Discrete Monitor Timing (see DMT 1.3 standard). The number is the DMT ID in hexadecimal.
76 CVT: Coordinated Video Timings (formula-based, see CVT 1.2 standard)
78 GTF: Generalized Timing Formula (formula-based, see GTF 1.1 standard)
82 Apple: Old Apple Timings
84 VIC #: Video Identification Code (see CTA-861 standard). The number is the actual
87 HDMI VIC #: HDMI-specific Video Identification Code (see HDMI 2.1 standard). The number
88 is the actual HDMI VIC code.
90 DTD #: Detailed Timings Descriptor (see EDID standard). Also used for
91 DisplayID Video Timing Modes Types I, II, VI, VII, VIII and X. The number denotes that
92 this is the Nth DTD in the Base Block and CTA Extension Blocks.
94 VTDB #: 20-byte DTD or 6- or 7-byte CVT descriptor in a CTA Extension Block.
95 The number denotes that this is the Nth such timing in the CTA Extension Blocks.
97 RID #@#: A CTA-861.6 Video Format Descriptor with the given Resolution ID (first
98 number) at the given framerate (second number).
101 By default DTDs are shown in the long format while others are just shown in
102 the short format. With the option \fB\-\-short\-timings\fR all timings are
103 shown in short format only. With the option \fB\-\-long\-timings\fR all timings
104 are shown in long format.
106 Alternate formats for long timings can be chosen via the \fB\-\-xmodeline\fR or
107 \fB\-\-fbmode\fR options.
111 The following EDID standards are supported by edid-decode:
114 EDID 1.3: VESA Enhanced Extended Display Identication Data Standard, Release A, Revision 1
116 EDID 1.4: VESA Enhanced Extended Display Identication Data Standard, Release A, Revision 2
118 DisplayID 1.3: VESA Display Identification Data (DisplayID) Standard, Version 1.3
120 DisplayID 2.1a: VESA DisplayID Standard, Version 2.1a
122 DI-EXT: VESA Display Information Extension Block Standard, Release A
124 LS-EXT: VESA Enhanced EDID Localized String Extension Standard, Release A
126 VTB-EXT: VESA Video Timing Block Extension Data Standard, Release A
128 DTCDB: VESA Display Transfer Characteristics Data Block Standard, Version 1.0
130 DDDB: VESA Display Device Data Block (DDDB) Standard, Version 1
132 HDMI 1.4b: High-Definition Multimedia Interface, Version 1.4b
134 HDMI 2.1b: High-Definition Multimedia Interface, Version 2.1b
136 HDCP 1.4: High-bandwidth Digital Content Protection System, Revision 1.4
138 HDCP 2.3: High-bandwidth Digital Content Protection System, Mapping HDCP to HDMI, Revision 2.3
140 CTA-861-I: A DTV Profile for Uncompressed High Speed Digital Interfaces
142 CTA-861.7: Improvements to CTA-861-I
144 SPWG Notebook Panel Specification, Version 3.5
146 EPI Embedded Panel Interface, Revision 1.0
148 Microsoft EDID extension for head-mounted and specialized monitors, Version 3
152 The following related standards are also used by edid-decode:
155 DMT 1.3: VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT), Version 1.0, Rev. 13
157 CVT 2.1: VESA Coordinated Video Timings (CVT) Standard, Version 2.1
159 CVT 1.2: VESA Coordinated Video Timings (CVT) Standard, Version 1.2
161 CVT 1.2: VESA CVT v1.2 Errata E2
163 GTF 1.1: VESA Generalized Timing Formula Standard, Version: 1.1
168 \fB\-h\fR, \fB\-\-help\fR
169 Prints the help message.
171 \fB\-o\fR, \fB\-\-output\-format\fR \fI<fmt>\fR
172 If [out] is specified, then write the EDID in format \fI<fmt>\fR.
174 The output format can be one of:
176 hex: hex numbers in ascii text (default for stdout)
178 raw: binary data (default unless writing to stdout)
180 carray: c-program struct
184 \fB\-c\fR, \fB\-\-check\fR
185 Check if the EDID conforms to the standards. Warnings and failures are
188 \fB\-C\fR, \fB\-\-check\-inline\fR
189 Check if the EDID conforms to the standards. Warnings and failures are
190 reported as they happen.
192 \fB\-n\fR, \fB\-\-native\-resolution\fR
193 Report the native resolution at the end. There may be multiple native resolution reports
194 depending on whether the Source only parses Block 0 (e.g. DVI outputs) or Block 0
195 and the CTA-861 Extension Blocks (HDMI), or just the DisplayID Extension Blocks
196 (typical for DisplayPort). If all blocks contain the same native resolution, then
197 only that resolution is reported. For older displays there may be two separate native
198 resolutions: progressive and interlaced.
200 \fB\-p\fR, \fB\-\-preferred\-timings\fR
201 Report the preferred timings at the end. There may be multiple preferred timing reports
202 depending on whether the Source only parses Block 0 (e.g. DVI outputs), or Block 0
203 and the CTA-861 Extension Blocks (HDMI), or Block 0 and the DisplayID Extension Blocks
204 (typical for DisplayPort).
206 \fB\-I\fR, \fB\-\-infoframe\fR \fI<file>\fR
207 Parse the given InfoFrame file. This option can be used multiple times to
208 parse multiple InfoFrames. If the EDID of the display to which these InfoFrames
209 are transmitted is also given, then the conformity checks will take that EDID
212 If the first byte in the InfoFrame is 0x80 or higher, then it is assumed to be
213 an InfoFrame that starts with the HDMI header and has a checksum, as per the
214 HDMI Specification. Otherwise it is assumed to be a regular CTA-861 InfoFrame
217 Note: this is still work-in-progress, specifically for the AVI and HDMI InfoFrames.
219 \fB\-\-diagonal\fR \fI<inches>\fR
220 Specify the diagonal of the display in inches. This will enable additional checks
221 for the image size, checking if it corresponds to the diagonal. This assumes
224 \fB\-P\fR, \fB\-\-physical\-address\fR
225 Just report the HDMI Source Physical Address and nothing else. Reports f.f.f.f
226 if the EDID could not be parsed, or if there was no CTA-861 Vendor-Specific Data Block
227 with OUI 00-0C-03. Otherwise it reports the Source Physical Address as provided
228 in that Data Block. This can be used as input to HDMI CEC utilities such as the
229 linux cec-ctl(1) utility.
231 \fB\-S\fR, \fB\-\-short\-timings\fR
232 Report all video timings in a short format.
234 \fB\-L\fR, \fB\-\-long\-timings\fR
235 Report all video timings in a long format.
237 \fB\-N\fR, \fB\-\-ntsc\fR
238 Report the video timings with values suitable for NTSC-based video.
239 E.g., this will show refresh rates of 29.97 Hz instead of 30 Hz.
240 This is only done for timings with refresh rates that are a multiple of 6.
242 \fB\-X\fR, \fB\-\-xmodeline\fR
243 Report all long video timings in the ModeLine format as defined in xorg.conf(5).
244 This ModeLine can be used in the xorg.conf file or passed to xrandr(1) with the
245 xrandr \fB\-\-newmode\fR option.
247 \fB\-F\fR, \fB\-\-fbmode\fR
248 Report all long video timings in the video mode format as defined in fb.modes(5).
250 \fB\-V\fR, \fB\-\-v4l2\-timings\fR
251 Report all long video timings in the video mode format as defined in the linux header v4l2-dv-timings.h
252 for use with the V4L2 VIDIOC_S_DV_TIMINGS ioctl.
254 \fB\-s\fR, \fB\-\-skip\-hex\-dump\fR
255 Skip the initial hex dump of the EDID.
257 \fB\-H\fR, \fB\-\-only\-hex\-dump\fR
258 Only show the hex dump of the EDID, then exit.
261 Don't show the SHA hash. Normally edid-decode will show the SHA, i.e. the
262 hash of the git commit used to compile edid-decode. This uniquely identifies
263 the version of edid-decode that is used to generate the warnings and
264 failures. But it will also change the output of edid-decode for every new commit
265 in the git repository, even if nothing else changed in the edid-decode output.
266 Use this option to avoid including the SHA in the edid-decode output.
268 \fB\-u\fR, \fB\-\-utf8\fR
269 Convert embedded EDID strings to UTF-8, using Code Page 437 for the base block
270 and ISO 8859-1 for the DisplayID block.
272 \fB\-\-hide\-serial\-numbers\fR
273 Hide any serial numbers in the human readable output by '...'.
274 Note that they are still easily extracted from the EDID hex dump at
277 \fB\-\-replace\-unique\-ids\fR
278 Replaces any unique IDs in the EDID by fixed values. Serial numbers will be
279 replaced by '123456', Container IDs by all zeroes and the 'Made in' date by
280 the year 2000. This will also update any checksums in the EDID and update
281 the EDID hex dump at the start of the output. Note that since this will
282 update checksums, any checksum errors present in the original EDID will
283 no longer be detected.
285 Serial numbers can appear in the Base Block, CTA-861 Extension Blocks,
286 DisplayID Extension Blocks and Localized String Extension Blocks.
287 Container IDs can appear in the DisplayID and CTA-861 Extension Blocks.
289 The 'Made in' date appears in the Base Block.
292 Show the SHA hash and the last commit date.
295 The following options read the DDC bus directly, provided the DDC bus is
296 exposed by linux to \fB/dev/i2c-\fR\fIX\fR as an i2c adapter device.
298 This can be used to read the EDID and HDCP information directly from
299 the sink and parse it.
301 \fB\-a\fR, \fB\-\-i2c\-adapter\fR \fI<num>\fR
302 Use this \fB/dev/i2c-\fR\fI<num>\fR device.
305 Read and parse the EDID from the i2c adapter.
308 Read and parse the HDCP data from the i2c adapter.
310 \fB\-\-i2c\-hdcp-ri\fR \fI<t>\fR
311 Every \fI<t>\fR seconds read and report the HDCP Ri value from the i2c adapter.
314 The following options report the timings for DMT, VIC and HDMI VIC codes and
315 calculate the timings for CVT or GTF timings, based on the given parameters.
316 The EDID will not be shown, although it can be used with the \fB\-\-gtf\fR
317 option in order to read the secondary curve parameters.
319 \fB\-\-std\fR \fI<byte1>\fR,\fI<byte2>\fR
320 Show the standard timing represented by these two bytes.
322 \fB\-\-dmt\fR \fI<dmt>\fR
323 Show the timings for the DMT with the given DMT ID.
325 \fB\-\-vic\fR \fI<vic>\fR
326 Show the timings for this VIC.
328 \fB\-\-hdmi\-vic\fR \fI<hdmivic>\fR
329 Show the timings for this HDMI VIC.
331 \fB\-\-cvt\fR \fBw\fR=\fI<width>\fR,\fBh\fR=\fI<height>\fR,\fBfps\fR=\fI<fps>\fR[,\fBrb\fR=\fI<rb>\fR][,\fBinterlaced\fR][,\fBoverscan\fR]
332 [,\fBalt\fR][,\fBhblank\fR=\fI<hblank>\fR][,\fBvblank\fR=\fI<vblank>\fR][,\fBearly\-vsync\fR]
334 Calculate the CVT timings for the given format.
336 \fI<width>\fR is the width in pixels, \fI<height>\fR is the frame (not field!) height in lines.
338 \fI<fps>\fR is frames per second for progressive timings and fields per second for interlaced timings.
340 \fI<rb>\fR can be 0 (no reduced blanking, default), or 1-3 for the reduced blanking version.
342 If \fBinterlaced\fR is given, then this is an interlaced format.
344 If \fBoverscan\fR is given, then this is an overscanned format. I.e., margins are required.
346 If \fBalt\fR is given and \fI<rb>\fR=2, then report the timings
347 optimized for video: 1000 / 1001 * \fI<fps>\fR.
349 If \fBalt\fR is given and \fI<rb>\fR=3, then the horizontal blanking
350 is 160 instead of 80 pixels.
352 If \fBhblank\fR is given and \fI<rb>\fR=3, then the horizontal blanking
353 is \fI<hblank>\fR pixels (range of 80-200 and divisible by 8), overriding \fBalt\fR.
355 If \fBvblank\fR is given and \fI<rb>\fR=3, then the vertical blanking time
356 is \fI<vblank>\fR microseconds (460 minimum, values > 705 might not be supported by
357 all RBv3 timings compliant source devices.
359 If \fBearly\-vsync\fR is given and \fI<rb>\fR=3, then select an early vsync timing.
361 \fB\-\-gtf\fR \fBw\fR=\fI<width>\fR,\fBh\fR=\fI<height>\fR[,\fBfps\fR=\fI<fps>\fR][,\fBhorfreq\fR=\fI<horfreq>\fR][,\fBpixclk\fR=\fI<pixclk>\fR]
362 [,\fBinterlaced\fR][,\fBoverscan\fR][,\fBsecondary\fR][,\fBC\fR=\fI<c>\fR][,\fBM\fR=\fI<m>\fR][,\fBK\fR=\fI<k>\fR][,\fBJ\fR=\fI<j>\fR]
364 Calculate the GTF timings for the given format.
366 \fI<width>\fR is the width in pixels, \fI<height>\fR is the frame (not field!) height in lines.
368 \fI<fps>\fR is frames per second for progressive timings and fields per second for interlaced timings.
370 \fI<horfreq>\fR is the horizontal frequency in kHz.
372 \fI<pixclk>\fR is the pixel clock frequency in MHz.
373 Only one of \fBfps\fR, \fBhorfreq\fR or \fBpixclk\fR must be given.
375 If \fBinterlaced\fR is given, then this is an interlaced format.
377 If \fBoverscan\fR is given, then this is an overscanned format. I.e., margins are required.
379 If \fBsecondary\fR is given, then the secondary GTF is used for
380 reduced blanking, where \fI<c>\fR, \fI<m>\fR, \fI<k>\fR and \fI<j>\fR are parameters
381 for the secondary curve. If none of the secondary curve parameters
382 were set, and an EDID file is passed as command line option, then the
383 secondary curve parameters are read from that EDID.
385 The default secondary curve parameters are 40 for \fI<c>\fR, 600 for \fI<m>\fR,
386 128 for \fI<k>\fR and 20 for \fI<j>\fR.
387 These values correspond to the normal curve that GTF uses.
389 \fB\-\-ovt\fR (\fBrid\fR=\fI<rid>\fR|\fBw\fR=\fI<width>\fR,\fBh\fR=\fI<height>\fR),\fBfps\fR=\fI<fps>\fR
390 Calculate the OVT timings for the given format.
391 Either specify a \fI<rid>\fR or specify \fI<width>\fR and \fI<height>\fR.
392 \fI<fps>\fR is frames per second.
394 \fB\-\-list\-established\-timings\fR
395 List all known Established Timings.
403 \fB\-\-list\-hdmi\-vics\fR
404 List all known HDMI VICs.
407 List all known CTA-861 RIDs.
409 \fB\-\-list\-rid\-timings\fR \fI<rid>\fR
410 List all timings for the specified \fI<rid>\fR or all known RIDs if \fI<rid>\fR is 0.
414 Not all fields are decoded, or decoded completely.
416 does attempt to validate its input against the relevant standards, but its
417 opinions have not been double-checked with the relevant standards bodies,
418 so they may be wrong. Do not rely on the output format, as it will likely
419 change in future versions of the tool as additional fields and extensions are
422 Xorg(1), xrandr(1), cec-ctl(1), xorg.conf(5), fb.modes(5)
424 edid-decode was written by Adam Jackson, with contributions from Eric
425 Anholt, Damien Lespiau, Hans Verkuil and others. For complete history and the
427 .B http://git.linuxtv.org/cgit.cgi/edid-decode.git