I recently purchased two new 27″ displays from a Korean Ebayer. You can read all about them here and here. Basically they’re the same panels that are in the nice Apple displays, but they didn’t quite make the cut for one reason or another, so they got sent to obscure Korean manufacturers who sell them in monitors for 1/4 the price.
I purchased Sunday afternoon for $319 each, shipping included, and 48 hours later they arrived. They both look remarkably good, I really had to hunt to find any discernible defect. One has two tiny stuck pixels and the other I *think* is just a hair dimmer than the other, which seemed to go away via brightness adjustment.
Really, though, this post is about how I got them to play nicely with the Nvidia TwinView on my Ubuntu desktop. You see, with the nouveau driver that is loaded by default, one worked fine, but to get the full acceleration and TwinView, I had to install the nvidia module, and for some reason it didn’t want to properly retrieve the monitor’s EDID. The result was a flickering 640 x 480 display; not pretty.
In troubleshooting, I noticed that ‘xrandr –prop’ would get the EDID nicely, but tools like get-edid from the read-edid package would return 128 bits worth of ’1′s and complain of a corrupt EDID. X seemed to pick up the proper one when running the nouveau driver, and not when running the nvidia driver.
So I fired up a hex editor and pasted the EDID as reported via xrandr, all 128 bytes, and added a custom EDID file to my xorg.conf so the nvidia driver would work with the dual displays.
You can add the following to the screen section of /etc/X11/xorg.conf, just under metamodes or wherever you prefer.
Option “CustomEDID” “DFP:/etc/X11/shimian-edid.bin”
Note you can also do semicolon delimited for multiple displays (or so I’ve read):
Option “CustomEDID” “DFP-0:/etc/X11/shimian-edid.bin; DFP-1:/etc/X11/catleap.bin”
I’m including the QH270 EDID .bin file here, in case anyone is desperately looking for it or having a hard time creating one. It should be similar or even work as a drop-in replacement for the Catleap Q270, aside from the Achieva models.


This fixed my problem witha Shimian and a GT 430. I am so glad I can use the proprietary drivers. I assumed I was SOL for a while, I didn’t realize the EDID was so important. Thanks again!!!
Happy to hear.
Great work here. nvidia did not want to play fair on this issue. Saved me quite some time with the Catleap Q270.
Cheers
Hi,
I have downloaded the file edid-shimian.bin from http:learnitwithme.com/wp-content/uploads/2012/05/edid-shimian.bin but both parse-edid and get-edid tell me the file is corrupt (repeating the download changed nothing). The md5sum I get is: dc6c58c971715e8043baef058b675eec
As this file has full root privileges it would seem a good spot for some extra bytes of malware. Please comment.
Best regards dogphlap.
Don’t blame you at all. The file should be really small, 129 bytes (128 for edid + end of file character). If it’s not then it may have downloaded a whole web page or something.
marcus@marcus-ubuntu:~/Downloads$ wget http://learnitwithme.com/wp-content/uploads/2012/05/edid-shimian.bin
–2012-10-17 22:03:04– http://learnitwithme.com/wp-content/uploads/2012/05/edid-shimian.bin
Resolving learnitwithme.com (learnitwithme.com)… 69.27.171.71
Connecting to learnitwithme.com (learnitwithme.com)|69.27.171.71|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 129 [application/octet-stream]
Saving to: `edid-shimian.bin’
100%[=======================================================================>] 129 –.-K/s in 0s
2012-10-17 22:03:04 (4.24 MB/s) – `edid-shimian.bin’ saved [129/129]
marcus@marcus-ubuntu:~/Downloads$ md5sum edid-shimian.bin
c25b08c9b9310ba6cfef665bdb10f759 edid-shimian.bin
marcus@marcus-ubuntu:~/Downloads$ parse-edid < edid-shimian.bin
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.
# EDID version 1 revision 3
Section “Monitor”
# Block type: 2:0 3:fc
Identifier “QHD270″
VendorName “ACB”
ModelName “QHD270″
# Block type: 2:0 3:fc
# Block type: 2:0 3:fc
# Block type: 2:0 3:fc
# DPMS capabilities: Active off:yes Suspend:no Standby:no
Mode “2560×1440″ # vfreq 59.951Hz, hfreq 88.787kHz
DotClock 241.500000
HTimings 2560 2608 2640 2720
VTimings 1440 1443 1448 1481
Flags “-HSync” “+VSync”
EndMode
# Block type: 2:0 3:fc
# Block type: 2:0 3:fc
# Block type: 2:0 3:fc
EndSection
Hi,
responding to Marcus’s replay to my comment of yesterday.
Thank you. I just followed your link “I’m including the QH270 EDID .bin file here”. This gave me a file that get-edid and parse-edid were both happy with. The md5sum of this good file was: c25b08c9b9310ba6cfef665bdb10f759.
I have removed all copies of the corrupt file. However if that corrupt file contained malware my system may already be compromised. Does anyone know where to send such a suspect file to be checked. That task is well beyond my capabilities. Are these edid files linux specific or do other operating systems use these same files ?
Best regards dogphlap.
One post-script.
Both the corrupt and the non-corrupt edid-shimian.bin files worked correctly with my Shimian QH270-IPSB-HLD monitor.
Best regards dogphlap.
Thank you for this post. There is very little information available and not many people seem to understand how to work around the EDID issue with this monitors. Could you please help me figure out how to use mine using a laptop with a mini display port? I posted my question with full details over at askubuntu: http://askubuntu.com/questions/211262/configure-27-2560×1440-for-a-monitor-with-corrupt-edid
If this edid file doesn’t work for you, and you can’t get it via the means I mention, it may be that you’re not getting a full dual link dvi in the conversion. I have seen some special hardware that is required to go from a thunderbolt port to a dual link dvi, for example. Normal apple mini displayport cables are only single link. I wish I could help more than that… perhaps you have another system or one you can loan to try to see if you can get an edid off of it, or at least verify that it works when using a dual link?
Hi Marcus,
I just wanted to say thank you for sharing. I bought a Catleap Q270 and freshly installed Mint so obviously once the propriety drivers were installed the screen was not longer working.
I just used the edid-shimian.bin for my Monitor and it worked perfectly.
I had spent about a day trying to figure this one out before I saw your post!
Thanks again!
Mok,
Hi Marcus,
Just wanted to add my thanks here. I spent two days alternately beating my head against the wall and editing xorg.conf before I found this page. Your fix worked right away with my new Shimian monitor on an NVidia card.
Phil
Thanks mate! Your EDID block did the trick for me as well.
I’m using a GTX 295 which has less than 1GB on each of the cores, so I thought my graphics card might be incompatible for a while! Its such a shame that Nvidia don’t just develop their Linux driver as a FLOSS project.
Glad everyone is getting good use out of it. It took me long enough to figure it out
Hey! Thanks a bunch for this. It really helped me a lot. Is is possible to change the values in the bin file? I need to get a higher refresh rate.
I don’t think you can, as it defines the capabilities of the hardware, rather than setting what the hardware operates at. I’ve heard of people overclocking their monitors, and it working on certain models (I think the catleap ones), but I don’t think this is how they do it. I haven’t looked at it since I made this post, however, so I could be wrong.
Hey,
I’ve got a similar Korean 27″ (Potalion aka “TOPSYNC”), which seems to have a bogus EDID too. My particular issue was the kernel log spam produced by the drm driver (works fine nevertheless), so I decided to take a closer look at it.
Make sure you have i2c-utils installed, and modprobe `eeprom`. Then, `ls -l /sys/bus/i2c/devices/`and identify all buses having a device on address 0050.
For each bus, run `decode-edid BUSNUMBER` and find your target (I have two monitors connected, the correct bus turned out to be 5 in my case).
Next, rmmod eeprom and modprobe i2c-dev. Then, use i2cdump to dump the EDID. In my case (bus 5):
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 ff ff ff ff ff ff 00 51 f0 9b 04 00 00 00 00 ……..Q???….
10: 28 15 01 03 a5 3c 22 78 22 6f b1 a7 55 4c 9e 25 (???? 01). The extension is indeed present but all 0xff – Not sure what the specs say, but the drm driver surely isn’t happy about it.
So, let’s set the extension byte to 0×00, and fixup the checksum at offset 0x7f (it’s 0×08, and should make the sum of bytes[0x00..0x7e] mod 128 equal to 0). So if we remove 1 at 0x7e, we need to add 1 to the checksum byte 0×08 -> 0×09.
Finally, use i2cset to fix the extension byte and checksum:
$ i2cset 5 0×50 0x7e 0×00
$ i2cset 5 0×50 0x7f 0×09
All done, and drm no longer complains. I suspect this makes it work with the Nvidia driver too – just be sure to make a store a backup of your original EDID in case you need to rollback.
Ouch. Seems like my i2cdump output messed up (and I forgot to list the actual command). Sorry – it should be pretty straightforward nevertheless: # i2cdump 5 0×50