Old version of read-edid

read-edid elucidates various very useful informations from a conforming PnP monitor; I wrote it to find out the scan line and frequencies of the 85Hz 1024*768 mode of my monitor.

XFree86 4 (but not version 3) integrates this functionality on some video cards, so read-edid isn't needed then.

If you can't find the data to set your monitor up under XFree86, then read-edid is for you; it should auto detect all necessary info and should even provide a few modes with better refresh rates/resolutions than the standard VESA ones. As of now it won't do everything for you; you'll have to edit XF86Config yourself.

This read-edid version seems to work for me on my computer, but YMMV. If it screws up your monitor, causes your rich uncle to disinherit you and/or breaks your leg, don't come running to me. Use it at your own risk. It'll only work on relatively new monitors (if your monitor says it supports DDC then there's a good chance); monitors made before 1996 probably won't work with it. Your video card needs to support VBE 2.0 with DDC extension.

If read-edid doesn't work and you're sure it's the latest version, please contact me. Questions, comments, suggestions are all welcome!

The specifications for the systems used by this program are kept by the VESA people, more or less locked up: access is only to members, and membership is prohibitively expensive for most open-source work. The way that I got them was by begging. A public text seems to have sneaked out since then.

Instructions

There are two stages: 1) getting the EDID from the hardware, 2) parsing it.

Simple recipe

  1. Download read-edid.tar.gz the source tarball for x86 linux/DOS.
  2. Untar.
    % tar zxf read-edid-$VERSION.tar.gz
        
  3. Compile.
    % cd read-edid-$VERSION/
    % make
        
  4. Try to read the EDID from the hardware under linux. You must be the superuser (root) because this stage interfaces directly with the hardware, a somewhat risky business.
    root# make read-edid
    	
  5. If everything ran smoothly, a XF86Config style monitor description should have been printed to stdout. You could put it in your XF86Config or use the information to generate more modelines (see XF86Config(5) and the XFree86-Video-Timings-HOWTO).

Trouble shooting

Technical details

get-edid (linux or MS-DOS version) uses a VESA VBE 2 interrupt service routine request (the VBE/DDC extension, which is only optionally supported by a VBE implementor) to read a 128 byte EDID version 1 structure from your graphics card. The graphics card has (previously?) asked for this data structure from your monitor, via the Data Display Channel. parse-edid parses this data structure and outputs data about the monitor suitable for inclusion into a XF86Config.

parse-edid I think supports EDID version 1 revisions 0, 1 and 2. Version 1.3 is not supported yet. If you get such an EDID, mail me! My monitor doesn't give me an EDID longer than 128 bytes so it doesn't support long EDIDs. If you have one, mail me!

Deciphering broken EDIDs

EDID format data is supposed to start with 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, if that's any help. Send your EDID to me if it seems broken, and I'll see what I can do.

Requirements

Your VBE implementor (graphics card manufacturer) must implement the VBE/DDC extension. Your monitor must support DDC (to communicate with the graphics card) and EDID (to have something to say). The get-edid program first checks for this but does not abort if it seems your hardware is inadequate.

Consequent problems

Error messages

Message Meaning
get-edid: output block unchanged This means that the get EDID call to the BIOS didn't work: you didn't get the EDID data. Try getting the EDID some other way. See fixes, below.
parse-edid: first bytes don't match EDID version 1 header The EDID did not start with the EDID version 1 header. Try getting the EDID some other way. See Fixes below.
parse-edid: checksum failed The EDID is probably corrupt. Do not blindly trust any modelines generated. Try getting the EDID some other way. See Fixes below.

Fixes

Known hardware problems

Platforms other than x86

get-edid will not compile or work as it interfaces with the x86 BIOS. OTOH on powerpc Linux you can run parse-edid on

/proc/device-tree/pci/{video-card}/EDID

Multiple video cards

People with more than one video card in their system (one card is not connected to a monitor) have reported problems getting the EDID (no-one has been successful, try the support builtin to XFree86 4). There is untested support for cards with more than one monitor, but not for more than one card in the same machine. In fact, the VBE 3 standard says that it is impossible to access a second device.

Specific problematic video card/monitor combinations

Monitor Card Report
ViewSonic P225F - Has a special driver to read the EDID data under MS-Windows. The EDID from this program can be used with parse-edid.
Envision 910e AGP GeForce 2 Unable to fetch EDID
KDS 17" Visual SensationsDiamond Stealth II S220 (Rendition Verite 2200) Monitor is knocked out of sync when using get-edid and VBE/DDC READ EDID call fails. No known fix.
LG FLATRON LCD 575MS Matrox MGA G 400 AGPEDID data corrupt - keeps claiming 78 more blocks.
MAG DX700T-2 ATI Xpert 98 [RagePro] (8MB) Partially corrupt EDID data. Contains at incorrect offsets:
	ModelName "MAG DX700T-2"

	HorizSync 30-70
	VertRefresh 50-120
[S3 ViRGE (rev 6)] (2 MB EDO Trio64 135 MHz) MAG XJ796 EDID from get-edid under linux is corrupt. Use get-edid under DOS.
        Identifier "MAG XJ796"
        VendorName "Unknown"
        ModelName "MAG XJ796"
        HorizSync 30-96
        VertRefresh 50-160
# Max dot clock (video bandwidth) 200 MHz
        Mode    "800x600"
                DotClock        56.250000
                HTimings        800 832 896 1048
                VTimings        600 601 604 631
        EndMode
        Mode    "640x480"
                DotClock        72.850000
                HTimings        640 680 752 864
                VTimings        480 481 484 527
        EndMode
LG Studioworks 995E Asus V7100 Pure (Nvidia GeForce 2 MX) get-edid loops forever
Viewsonic PF775 TNT2 Xentor get-edid loops forever

Issues

Download

New versions of read-edid are at polypux.org. Thanks to the Poly-poly man!

All files are small (<100kB)