I know, I know, long time without a post! I’ve been busy. Normal service will be resumed here shortly!
So the other day I wanted to hook up an old projector I’d gotten my hands on a while back to my MythTV box in a dual-screen (TwinView) configuration. So I duly plugged it in. Nothing happened. Updated the drivers (Ubuntu 10.10) through the hardware drivers panel, and while my normal monitor was fine, the projector wouldn’t allow a resolution greater than 640×480. Annoying.
Fortunately, I could trace this down to the EDID data from the projector being dodgy (or something along the way causing problems- the cable is a dodgy thing from China, so that’s a potential culprit). Basically, nVidia’s drivers don’t let you ignore EDID data, even with the NoEDID option in xorg.conf.
So what you end up having to do is actually pretty simple- basically, take the EDID from a working monitor and apply it to the broken display in xorg.conf. Dump the edid.bin through nvidia-settings, the GUI utility, and copy it up to /etc/X11/edid.bin.
Then you just edit your xorg.conf like so:
# This monitor is our dodgy one. Section "Monitor" Identifier "Monitor0" VendorName "Unknown" ModelName "CRT-0" HorizSync 28.0 - 33.0 VertRefresh 43.0 - 72.0 Option "DPMS" # Note the option below. Option "CustomEDID" "CRT-0:/etc/X11/edid.bin" Option "PreferredMode" "1024x768" # Option "NoEDID" "True" # This doesn't work! Ignore it. EndSection # This monitor works with default EDID from the monitor. Section "Monitor" Identifier "Monitor1" VendorName "Unknown" ModelName "Samsung SyncMaster" HorizSync 63.6 - 63.6 VertRefresh 60.0 EndSection
And bam, you’ve got a working display! As I understand it, this will limit you to the resolutions in the EDID file, but if the monitors are a match or similar, this should work.
Finding out about this trick saved me many, many hours of fiddling about with xorg.conf, so I hope you too find this useful.