Blog / Post

Photo of CRT computer monitor lot by z yu

Learn to Read EDID / DisplayID Metadata Using Linux

  • Adam Douglas
  • hacking

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.