Linux – Faking monitor EDID information

displayedidfglrxlinuxxorg

My monitor is sort of finicky. Sometimes I run a program that cycles through resolutions and the monitor will refuse to give its EDID information for a few days:

(/var/log/Xorg.0.log)
[   239.653] (II) fglrx(0): Restoring Recent Mode via PCS is not supported in RANDR 1.2 capable environments
[   260.113] (II) fglrx(0): Cannot get EDID information for CRT1
[   271.166] (II) fglrx(0): Cannot get EDID information for CRT1
(^ ran xrandr, this happens)

This causes the video card to think the maximum resolution it will support is 1600×1200, whereas I was running it at the optimal 1680×1050 that the monitor's manual says it supports. xrandr doesn't even list that mode as supported.

Now, I am having this same problem again because I was experimenting with Wine which caused Xorg to crash and forced me to reboot.

Sometimes I figure out how to get it back (I have forgotten just how), and sometimes it corrects itself.

The first time this happened, I figured I had better make a backup of the binary EDID information using read-edid, which I have saved in a 128-byte file on my hard drive. This leads me to my question:

How do you tell fglrx to read the EDID information from the file and not try to get it from the monitor?


Additional info:

I used to think this was the fault of the video card, but it's happening with a new video card (still fglrx drivers) as well, as well as new VGA cables.

The monitor is a Westinghouse LCM-22w3 plugged into the VGA port of the graphics card, an ATI Radeon HD 3200.

I've done some research into it, and apparently this is a somewhat common complaint of the LCM-22w3, but nobody seems to have any idea on how to solve the issue.

fglrx 8.92, xorg-server 1.9.5, kernel 2.6.38.7 x86_64 arch.

Best Answer

When I used a EDID-blocking VGA KVM switch, I used a small script to fix the resolution after logging in:

xrandr --newmode "1600x1200_60.00"  162.00  1600 1664 1856 2160  1200 1201 1204 1250 +hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00
xrandr --output VGA-1 --mode 1600x1200_60.00

I think I got the mode line from xrandr somehow (with the monitor plugged in directly). I tried putting it in the X configuration file, but the stupid X server kept ignoring it for various spurious reasons.