
Learn to Read EDID / DisplayID Metadata Using Linux
- Adam Douglas
Today I’m continuing my adventure in retrieving EDID / DisplayID metadata from display devices using my computer system on Arch Linux. To get the full context on the subject matter please read my previous post Learn To Read EDID / DisplayID Metadata On A Raspberry Pi.
Retrieving EDID / DisplayID Metadata
Let’s begin my attempt at reading EDID / DisplayID metadata.
Note
As far as I understand, these methods work with EDID, E-EDID or DisplayID VESA standards.
Environment
- Asus 28” TUF Gaming Monitor (VG289Q) x2 (display devices)
- ZOTAC GeForce GTX 970 4GB (video source)
Assumptions
- Steps prefixed with a “$” (dollar sign) represents the CLI (command-line interface) prompt
- The text after the “$” is to be entered at the CLI
Arch Linux
I first tried using the package “community/read-edid”, unfortunately this did not return EDID / DisplayID metadata.
$ get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
Looks like no busses have an EDID. Sorry!
Attempting to use the classical VBE interface
Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
C all successful
VBE version 300
VBE string at 0x11100 "NVIDIA"
VBE/DDC service about to be called
Report DDC capabilities
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful
Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination does not support DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer
Reading next EDID block
VBE/DDC service about to be called
Read EDID
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call failed
The EDID data should not be trusted as the VBE call failed
Error: output block unchanged
I'm sorry nothing was successful. Maybe try some other arguments
if you played with them, or send an email to Matthew Kern <pyrophobicman@gmail.com>.
Partial Read... Try again
I then attempted to try using “aur/edid-decode” package and I was successfully able to retrieve EDID / DisplayID metadata. The only problem I noticed is that only one display device metadata is being returned.
$ xrandr --prop | edid-decode
edid-decode (hex): <INTENTIONALLY ALTERED>
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
----------------
Block 0, Base EDID:
EDID Structure Version & Revision: 1.3
Vendor & Product Identification:
Manufacturer: AUS
Model: 10426
Serial Number: <INTENTIONALLY REMOVED>
Made in: week 48 of 2019
Basic Display Parameters & Features:
Digital display
Maximum image size: 62 cm x 34 cm
Gamma: 2.20
DPMS levels: Off
RGB color display
First detailed timing is the preferred timing
Color Characteristics:
Red : 0.6777, 0.3115
Green: 0.2666, 0.6171
Blue : 0.1464, 0.0605
White: 0.3134, 0.3291
Established Timings I & II:
DMT 0x04: 640x480 59.940 Hz 4:3 31.469 kHz 25.175 MHz
DMT 0x08: 800x600 56.250 Hz 4:3 35.156 kHz 36.000 MHz
DMT 0x09: 800x600 60.317 Hz 4:3 37.879 kHz 40.000 MHz
DMT 0x10: 1024x768 60.004 Hz 4:3 48.363 kHz 65.000 MHz
Standard Timings:
DMT 0x20: 1280x960 60.000 Hz 4:3 60.000 kHz 108.000 MHz
DMT 0x23: 1280x1024 60.020 Hz 5:4 63.981 kHz 108.000 MHz
DMT 0x55: 1280x720 60.000 Hz 16:9 45.000 kHz 74.250 MHz
DMT 0x1c: 1280x800 59.810 Hz 16:10 49.702 kHz 83.500 MHz
DMT 0x2f: 1440x900 59.887 Hz 16:10 55.935 kHz 106.500 MHz
DMT 0x3a: 1680x1050 59.954 Hz 16:10 65.290 kHz 146.250 MHz
DMT 0x52: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz
Detailed Timing Descriptors:
DTD 1: 3840x2160 59.997 Hz 16:9 133.312 kHz 533.250 MHz (621 mm x 341 mm)
Hfront 48 Hsync 48 Hback 64 Hpol P
Vfront 3 Vsync 5 Vback 54 Vpol N
DTD 2: 2560x1440 59.951 Hz 16:9 88.787 kHz 241.500 MHz (621 mm x 341 mm)
Hfront 48 Hsync 32 Hback 80 Hpol P
Vfront 3 Vsync 5 Vback 33 Vpol P
Display Range Limits:
Monitor ranges (GTF): 40-60 Hz V, 30-160 kHz H, max dotclock 600 MHz
Display Product Name: 'ASUS VG289'
Extension blocks: 1
Checksum: 0x33
----------------
Block 1, CTA-861 Extension Block:
Revision: 3
Underscans IT Video Formats by default
Basic audio support
Supports YCbCr 4:4:4
Supports YCbCr 4:2:2
Native detailed modes: 1
Video Data Block:
VIC 1: 640x480 59.940 Hz 4:3 31.469 kHz 25.175 MHz
VIC 3: 720x480 59.940 Hz 16:9 31.469 kHz 27.000 MHz
VIC 4: 1280x720 60.000 Hz 16:9 45.000 kHz 74.250 MHz
VIC 18: 720x576 50.000 Hz 16:9 31.250 kHz 27.000 MHz
VIC 19: 1280x720 50.000 Hz 16:9 37.500 kHz 74.250 MHz
VIC 5: 1920x1080i 60.000 Hz 16:9 33.750 kHz 74.250 MHz
VIC 20: 1920x1080i 50.000 Hz 16:9 28.125 kHz 74.250 MHz
VIC 31: 1920x1080 50.000 Hz 16:9 56.250 kHz 148.500 MHz
VIC 16: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz
VIC 7: 1440x480i 59.940 Hz 16:9 15.734 kHz 27.000 MHz
VIC 6: 1440x480i 59.940 Hz 4:3 15.734 kHz 27.000 MHz
VIC 2: 720x480 59.940 Hz 4:3 31.469 kHz 27.000 MHz
VIC 93: 3840x2160 24.000 Hz 16:9 54.000 kHz 297.000 MHz
VIC 94: 3840x2160 25.000 Hz 16:9 56.250 kHz 297.000 MHz
VIC 95: 3840x2160 30.000 Hz 16:9 67.500 kHz 297.000 MHz
VIC 96: 3840x2160 50.000 Hz 16:9 112.500 kHz 594.000 MHz
VIC 97: 3840x2160 60.000 Hz 16:9 135.000 kHz 594.000 MHz
VIC 14: 1440x480 59.940 Hz 4:3 31.469 kHz 54.000 MHz
VIC 15: 1440x480 59.940 Hz 16:9 31.469 kHz 54.000 MHz
VIC 21: 1440x576i 50.000 Hz 4:3 15.625 kHz 27.000 MHz
VIC 22: 1440x576i 50.000 Hz 16:9 15.625 kHz 27.000 MHz
VIC 29: 1440x576 50.000 Hz 4:3 31.250 kHz 54.000 MHz
VIC 30: 1440x576 50.000 Hz 16:9 31.250 kHz 54.000 MHz
VIC 32: 1920x1080 24.000 Hz 16:9 27.000 kHz 74.250 MHz
VIC 72: 1920x1080 24.000 Hz 64:27 27.000 kHz 74.250 MHz
Audio Data Block:
Linear PCM:
Max channels: 2
Supported sample rates (kHz): 48 44.1 32
Supported sample sizes (bits): 24 20 16
Speaker Allocation Data Block:
FL/FR - Front Left/Right
Video Capability Data Block:
YCbCr quantization: Selectable (via AVI YQ)
RGB quantization: Selectable (via AVI Q)
PT scan behavior: Always Overscanned
IT scan behavior: Always Overscanned
CE scan behavior: Always Overscanned
Vendor-Specific Data Block (HDMI), OUI 00-0C-03:
Source physical address: 1.0.0.0
DC_36bit
DC_30bit
DC_Y444
Maximum TMDS clock: 300 MHz
Extended HDMI video details:
HDMI VICs:
HDMI VIC 1: 3840x2160 30.000 Hz 16:9 67.500 kHz 297.000 MHz
HDMI VIC 2: 3840x2160 25.000 Hz 16:9 56.250 kHz 297.000 MHz
HDMI VIC 3: 3840x2160 24.000 Hz 16:9 54.000 kHz 297.000 MHz
Vendor-Specific Data Block (HDMI Forum), OUI C4-5D-D8:
Version: 1
Maximum TMDS Character Rate: 600 MHz
SCDC Present
Supports 12-bits/component Deep Color 4:2:0 Pixel Encoding
Supports 10-bits/component Deep Color 4:2:0 Pixel Encoding
Vendor-Specific Data Block (AMD), OUI 00-00-1A:
Version: 1.1
Minimum Refresh Rate: 40 Hz
Maximum Refresh Rate: 62 Hz
Flags 1.x: 0xe6 (MCCS)
Colorimetry Data Block:
xvYCC601
xvYCC709
BT2020YCC
BT2020RGB
YCbCr 4:2:0 Capability Map Data Block:
VIC 96: 3840x2160 50.000 Hz 16:9 56.250 kHz 297.000 MHz
VIC 97: 3840x2160 60.000 Hz 16:9 67.500 kHz 297.000 MHz
HDR Static Metadata Data Block:
Electro optical transfer functions:
Traditional gamma - SDR luminance range
Traditional gamma - HDR luminance range
SMPTE ST2084
Supported static metadata descriptors:
Static metadata type 1
Desired content max luminance: 86 (322.098 cd/m^2)
Desired content max frame-average luminance: 85 (315.196 cd/m^2)
Desired content min luminance: 0 (0.000 cd/m^2)
Detailed Timing Descriptors:
DTD 3: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz (621 mm x 341 mm)
Hfront 88 Hsync 44 Hback 148 Hpol P
Vfront 4 Vsync 5 Vback 36 Vpol P
Checksum: 0x73
After some further searching I came across a nice little Python script get-edid.py by Matt Vollrath. The script takes a parameter input to specify which display device is desired.
$ xrandr --listmonitors
Monitors: 2
0: +*DP-0 3840/621x2160/341+3840+0 DP-0
1: +HDMI-0 3840/621x2160/341+0+0 HDMI-0
$ python get-edid.py HDMI-0 | edid-decode
edid-decode (hex): <INTENTIONALLY ALTERED>
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
----------------
Block 0, Base EDID:
EDID Structure Version & Revision: 1.3
Vendor & Product Identification:
Manufacturer: AUS
Model: 10426
Serial Number: <INTENTIONALLY REMOVED>
Made in: week 48 of 2019
Basic Display Parameters & Features:
Digital display
Maximum image size: 62 cm x 34 cm
Gamma: 2.20
DPMS levels: Off
RGB color display
First detailed timing is the preferred timing
Color Characteristics:
Red : 0.6777, 0.3115
Green: 0.2666, 0.6171
Blue : 0.1464, 0.0605
White: 0.3134, 0.3291
Established Timings I & II:
DMT 0x04: 640x480 59.940 Hz 4:3 31.469 kHz 25.175 MHz
DMT 0x08: 800x600 56.250 Hz 4:3 35.156 kHz 36.000 MHz
DMT 0x09: 800x600 60.317 Hz 4:3 37.879 kHz 40.000 MHz
DMT 0x10: 1024x768 60.004 Hz 4:3 48.363 kHz 65.000 MHz
Standard Timings:
DMT 0x20: 1280x960 60.000 Hz 4:3 60.000 kHz 108.000 MHz
DMT 0x23: 1280x1024 60.020 Hz 5:4 63.981 kHz 108.000 MHz
DMT 0x55: 1280x720 60.000 Hz 16:9 45.000 kHz 74.250 MHz
DMT 0x1c: 1280x800 59.810 Hz 16:10 49.702 kHz 83.500 MHz
DMT 0x2f: 1440x900 59.887 Hz 16:10 55.935 kHz 106.500 MHz
DMT 0x3a: 1680x1050 59.954 Hz 16:10 65.290 kHz 146.250 MHz
DMT 0x52: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz
Detailed Timing Descriptors:
DTD 1: 3840x2160 59.997 Hz 16:9 133.312 kHz 533.250 MHz (621 mm x 341 mm)
Hfront 48 Hsync 48 Hback 64 Hpol P
Vfront 3 Vsync 5 Vback 54 Vpol N
DTD 2: 2560x1440 59.951 Hz 16:9 88.787 kHz 241.500 MHz (621 mm x 341 mm)
Hfront 48 Hsync 32 Hback 80 Hpol P
Vfront 3 Vsync 5 Vback 33 Vpol P
Display Range Limits:
Monitor ranges (GTF): 40-60 Hz V, 30-160 kHz H, max dotclock 600 MHz
Display Product Name: 'ASUS VG289'
Extension blocks: 1
Checksum: 0x33
----------------
Block 1, CTA-861 Extension Block:
Revision: 3
Underscans IT Video Formats by default
Basic audio support
Supports YCbCr 4:4:4
Supports YCbCr 4:2:2
Native detailed modes: 1
Video Data Block:
VIC 1: 640x480 59.940 Hz 4:3 31.469 kHz 25.175 MHz
VIC 3: 720x480 59.940 Hz 16:9 31.469 kHz 27.000 MHz
VIC 4: 1280x720 60.000 Hz 16:9 45.000 kHz 74.250 MHz
VIC 18: 720x576 50.000 Hz 16:9 31.250 kHz 27.000 MHz
VIC 19: 1280x720 50.000 Hz 16:9 37.500 kHz 74.250 MHz
VIC 5: 1920x1080i 60.000 Hz 16:9 33.750 kHz 74.250 MHz
VIC 20: 1920x1080i 50.000 Hz 16:9 28.125 kHz 74.250 MHz
VIC 31: 1920x1080 50.000 Hz 16:9 56.250 kHz 148.500 MHz
VIC 16: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz
VIC 7: 1440x480i 59.940 Hz 16:9 15.734 kHz 27.000 MHz
VIC 6: 1440x480i 59.940 Hz 4:3 15.734 kHz 27.000 MHz
VIC 2: 720x480 59.940 Hz 4:3 31.469 kHz 27.000 MHz
VIC 93: 3840x2160 24.000 Hz 16:9 54.000 kHz 297.000 MHz
VIC 94: 3840x2160 25.000 Hz 16:9 56.250 kHz 297.000 MHz
VIC 95: 3840x2160 30.000 Hz 16:9 67.500 kHz 297.000 MHz
VIC 96: 3840x2160 50.000 Hz 16:9 112.500 kHz 594.000 MHz
VIC 97: 3840x2160 60.000 Hz 16:9 135.000 kHz 594.000 MHz
VIC 14: 1440x480 59.940 Hz 4:3 31.469 kHz 54.000 MHz
VIC 15: 1440x480 59.940 Hz 16:9 31.469 kHz 54.000 MHz
VIC 21: 1440x576i 50.000 Hz 4:3 15.625 kHz 27.000 MHz
VIC 22: 1440x576i 50.000 Hz 16:9 15.625 kHz 27.000 MHz
VIC 29: 1440x576 50.000 Hz 4:3 31.250 kHz 54.000 MHz
VIC 30: 1440x576 50.000 Hz 16:9 31.250 kHz 54.000 MHz
VIC 32: 1920x1080 24.000 Hz 16:9 27.000 kHz 74.250 MHz
VIC 72: 1920x1080 24.000 Hz 64:27 27.000 kHz 74.250 MHz
Audio Data Block:
Linear PCM:
Max channels: 2
Supported sample rates (kHz): 48 44.1 32
Supported sample sizes (bits): 24 20 16
Speaker Allocation Data Block:
FL/FR - Front Left/Right
Video Capability Data Block:
YCbCr quantization: Selectable (via AVI YQ)
RGB quantization: Selectable (via AVI Q)
PT scan behavior: Always Overscanned
IT scan behavior: Always Overscanned
CE scan behavior: Always Overscanned
Vendor-Specific Data Block (HDMI), OUI 00-0C-03:
Source physical address: 1.0.0.0
DC_36bit
DC_30bit
DC_Y444
Maximum TMDS clock: 300 MHz
Extended HDMI video details:
HDMI VICs:
HDMI VIC 1: 3840x2160 30.000 Hz 16:9 67.500 kHz 297.000 MHz
HDMI VIC 2: 3840x2160 25.000 Hz 16:9 56.250 kHz 297.000 MHz
HDMI VIC 3: 3840x2160 24.000 Hz 16:9 54.000 kHz 297.000 MHz
Vendor-Specific Data Block (HDMI Forum), OUI C4-5D-D8:
Version: 1
Maximum TMDS Character Rate: 600 MHz
SCDC Present
Supports 12-bits/component Deep Color 4:2:0 Pixel Encoding
Supports 10-bits/component Deep Color 4:2:0 Pixel Encoding
Vendor-Specific Data Block (AMD), OUI 00-00-1A:
Version: 1.1
Minimum Refresh Rate: 40 Hz
Maximum Refresh Rate: 62 Hz
Flags 1.x: 0xe6 (MCCS)
Colorimetry Data Block:
xvYCC601
xvYCC709
BT2020YCC
BT2020RGB
YCbCr 4:2:0 Capability Map Data Block:
VIC 96: 3840x2160 50.000 Hz 16:9 56.250 kHz 297.000 MHz
VIC 97: 3840x2160 60.000 Hz 16:9 67.500 kHz 297.000 MHz
HDR Static Metadata Data Block:
Electro optical transfer functions:
Traditional gamma - SDR luminance range
Traditional gamma - HDR luminance range
SMPTE ST2084
Supported static metadata descriptors:
Static metadata type 1
Desired content max luminance: 86 (322.098 cd/m^2)
Desired content max frame-average luminance: 85 (315.196 cd/m^2)
Desired content min luminance: 0 (0.000 cd/m^2)
Detailed Timing Descriptors:
DTD 3: 1920x1080 60.000 Hz 16:9 67.500 kHz 148.500 MHz (621 mm x 341 mm)
Hfront 88 Hsync 44 Hback 148 Hpol P
Vfront 4 Vsync 5 Vback 36 Vpol P
Checksum: 0x73
Debian / Ubuntu
The Debian and Ubuntu package system offers both programs as “edid-decode” and “read-edid”. The steps to use either package are the same as shown in Arch Linux.
I’m publishing this as part of 100 Days To Offload. You can join in yourself by visiting 100DaysToOffload.com.
References
- Display Data Channel, Wikipedia
- Display Industry Standards Archive
- Display Info Utility
- DisplayID, Wikipedia
- EDID repository, GitHub
- edid-decode.git project
- EDID.tv
- EDID, The Linux Kernel documentation
- Extended Display Identification Data, Wikipedia
- get-edid.py, GitHub
- How to get EDID for a single monitor?, Unix & Linux Stack Exchange
- MonitorInfoView, NirSoft (Windows)
- Photograph CRT computer monitor lot, photo by z yu, published Jul 2, 2019, Unsplash
- PNP ID Registry, Unified Extensible Firmware Interface Forum
- read-edid project
- RPiconfig, eLinux.org
- VESA BIOS Extensions, Wikipedia
- Video Electronic Standards Association, Wikipedia
Changelog
-
- Fix 301 redirect, add trailing slash
-
- remove tags archlinux, debian, display, monitor, ubuntu
-
- change topic