Configure 27" 2560x1440 for a monitor with corrupt EDID

7,145

I had a similar problem recently. I could've made a custom Xorg.conf file but that would've undermined all the nice new automatic configuration when I connected to other monitors.
I re-wrote the corrupted EDID instead:

Here are some reading materials: ref: https://en.wikipedia.org/wiki/Extended_display_identification_data#External_links
edid-rw: https://github.com/bulletmark/edid-rw ( this might work for you... I tried it and could read the edid but couldn't write?! Try it first?)

You need to find the monitor's i2c address:

i2cdetect -l
// look for vga, in this case I got "1"

i2cdetect 1
// look for address.. in this case only one.. I got 0x50

sudo i2cdump 1 0x50 b
// get the current edid

I found a listing on the internet for my monitor's edid as part of an xorg listing in a bug post. Put it in file new.bin:

Checksum!.. This next line should spit out 0

x=$( sum -s new.bin | cut -d " " -f 1 ); echo "$x % 256 " |bc

Since edid-rw above didn't work for me I looked into:

I used this to write the edid:
WARNING - DANGEROUS - Make sure your i2c addresses are correct and insert them below!

cat new.bin | hexdump -v -e '"sudo i2cset -y 1 0x50 0x%_ax 0x" /1 "%02X b\n"'

check final result:
(make sure to use the address info you found above using i2cdetect instead of " 1 0x50 ")

sudo i2cdump 1 0x50 b >test.bin
cat test.bin
x=$( sum -s test.bin | cut -d " " -f 1 ); echo "$x % 256 " |bc should return 0 if good

Share:
7,145
Aras
Author by

Aras

I am into building web application these days. I tend to work on the frontend where I can combine my love for great user experience with programming.

Updated on September 18, 2022

Comments

  • Aras
    Aras over 1 year

    I am trying to get a monitor work with my Ubuntu laptop. The monitor is this cheap 27" Korean monitors which has a 2560x1440 resolution -- and nothing else. Here are some specifications of this monitor:

    • 2560x1440 @60Hz
    • Only one dual link DVI-D input -- no other input port (no HDMI or display port)
    • no OSD
    • no scalar
    • reports corrupt EDID
    • does 2560x1440 @60Hz, did I say that already?

    Anyways, the monitor works beautifully with my Ubuntu desktop which has an nVidia card with DVI output. However, I am having problem using this monitor with my laptop. After some searching around I found a few posts suggesting to use an active adaptor for mini display port, so I went and bought a mini display to dual link DVI-D adaptor.. When using this adaptor the monitor is recognized by nvidia-settings tool but with incorrect resolution information.

    enter image description here

    As you can see the monitor is incorrectly recognized and there are no other resolution available to set. This post on ubuntu forums and this other post on overclock both suggest that the monitor is reporting corrupt EDID file. I have tried following their instructions, but so far I have not been able to display any image on the monitor from my laptop.

    The laptop I am using is an ASUS G75VW with a 1920x1080 screen. It has a VGA, an HDMI 1.4a, and a mini display port. The graphic card is an nvidia gforce gtx 660M with 2GB dedicated memory. I am running Ubuntu 12.10 on here which I upgrade from 12.04 a few weeks ago.

    As I said I have tried several suggestions, including specifying Modeline in xorg.conf and also linking to EDID files I found from those forum posts above. However, I am not sure if the EDID files I found are suitable for my monitor. I think the solution to my problem consist of obtaining the EDID file of my monitor and then fixing it and modifying xorg.conf to force nvidia driver to load the correct resolution. However, I am not sure what steps I need to take to do this.

    Here is the part of sudo xrandr --prop output that is related to this monitor:

    DP-1 connected 800x600+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
        SignalFormat:   DisplayPort
        supported: DisplayPort 
        ConnectorType:  DisplayPort
        ConnectorNumber: 3 (0x00000003)
        _ConnectorLocation: 3 (0x00000003)
        800x600        60.3*+
    

    I was expecting to see the EDID file in this output as was mentioned in this post, but it is not there. I also tried adding the a new mode using xandr following this document.. Here is what I did and the error I got:

    $ cvt 2560 1440 60
    # 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
    Modeline "2560x1440_60.00"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync
    $ xrandr --newmode "2560x1440_60.00"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync
    $ xrandr --addmode DP-1 "2560x1440_60.00"
    

    X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 39 Current serial number in output stream: 40

    I have no idea what this error is about. I tried adding another mode, this time using the gtf utility instead. That did not make any difference. Here is the output of xrandr -q:

    xrandr -q
    
    Screen 0: minimum 8 x 8, current 2720 x 1080, maximum 16384 x 16384
    VGA-0 disconnected (normal left inverted right x axis y axis)
    LVDS-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
       1920x1080      60.0*+   40.0  
    DP-0 disconnected (normal left inverted right x axis y axis)
    HDMI-0 disconnected (normal left inverted right x axis y axis)
    DP-1 connected 800x600+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
       800x600        60.3*+
      2560x1440_60.00 (0x3f9)  312.2MHz
        h: width  2560 start 2752 end 3024 total 3488 skew    0 clock   89.5KHz
        v: height 1440 start 1443 end 1448 total 1493           clock   60.0Hz
      2560x1440 (0x3fa)  311.8MHz
        h: width  2560 start 2744 end 3024 total 3488 skew    0 clock   89.4KHz
        v: height 1440 start 1441 end 1444 total 1490           clock   60.0Hz
    

    And here is the closest thing I have to a working xorg.conf

    Section "ServerLayout"
    # Removed Option "Xinerama" "0"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        Screen      1  "Screen1" RightOf "Screen0"
    
    
     InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
        Option         "Xinerama" "0"
    EndSection
    
    Section "Files"
    EndSection
    
    Section "Monitor"
        Identifier     "Monitor1"
        VendorName     "Unknown"
        ModelName      "DFP-3"
        HorizSync       89.40
        VertRefresh     60.00
        #HorizSync       43.95
        #VertRefresh     30.00
        ModeLine       "2560x1440_60" 311.83 2560 2744 3024 3488 1440 1441 1444 1490 -hsync +vsync
        #ModeLine       "2560x1440_30" 146.27 2560 2680 2944 3328 1440 1441 1444 1465 -hsync +vsync
        Option         "DPMS"
    EndSection
    
    Section "Monitor"
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Monitor0"
        VendorName     "Unknown"
        ModelName      "Chi Mei Optoelectronics corp."
        HorizSync       44.4 - 67.1
        VertRefresh     40.0 - 60.0
        Option         "DPMS"
    EndSection
    
    Section "Device"
        Identifier     "Device1"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce GTX 660M"
        BusID          "PCI:1:0:0"
        Screen          1
    EndSection
    
    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "GeForce GTX 660M"
        BusID          "PCI:1:0:0"
        Screen          0
    EndSection
    
    Section "Screen"
        Option         "Stereo" "0"
        #Option    "NoLogo" "False"
        #Option        "UseEDID" "False"
        #Option        "UseEDIDDPI" "False"
        #Option    "UseEDIDFreqs" "False"
        Option         "metamodes"      "2560x1440_60"
        Identifier     "Screen1"
        Device         "Device1"
        Monitor        "Monitor1"
        DefaultDepth    24
        Option         "ExactModeTimingsDVI" "True"
        #Option         "metamodes" "DFP-3: 2560x1440_60 +0+0"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    
    Section "Screen"
    # Removed Option "metamodes" "DFP-0: nvidia-auto-select +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: 1920x1080 +0+0; DFP-0: 1920x1080_60 +0+0; DFP-0: 1920x1080_40 +0+0; DFP-0: nvidia-auto-select @1920x1024 +0+0; DFP-0: nvidia-auto-select @1920x720 +0+0; DFP-0: nvidia-auto-select @1920x768 +0+0; DFP-0: nvidia-auto-select @1920x600 +0+0; DFP-0: nvidia-auto-select @1920x480 +0+0"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        Option         "Stereo" "0"
        #Option         "nvidiaXineramaInfoOrder" "DFP-0"
        Option         "metamodes" "DFP-0: nvidia-auto-select +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: 1920x1080 +0+0; DFP-0: 1920x1080_60 +0+0; DFP-0: 1920x1080_40 +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: nvidia-auto-select +0+0"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    
    #Section "Extensions"
    #    Option         "Composite" "Disable"
    #EndSection
    

    After several hours of tweaking X configurations, I decided it was time to ask for help here. I would really appreciate if someone with experience regarding EDID and X configuration could give me a hand to solve this issue.

    • Scott Severance
      Scott Severance over 11 years
      I noticed on the eBay page you mentioned that it explicitly says that it doesnt' work with laptops or internal video cards.
    • Aras
      Aras over 11 years
      yes I know that. As I said, I was hoping there would be a way around it, but I have not found any solution.
    • Bill
      Bill about 11 years
      Aras did you ever find a solution to this issue? I'm suffering with it to.
    • Aras
      Aras about 11 years
      @bill no I did not. After trying so many different methods and a hand full of active and passive adaptors, I gave up. Now I have the monitor attached to my desktop computer. It's a really nice screen.
    • rubo77
      rubo77 about 10 years
      I also tried to connect my Crossover High Res. Monitor to Intel HD Graphics 4400. Did you try PowerStrip on Windows to get the correct Linux Modeline Parameter for your monitor?
    • rubo77
      rubo77 about 10 years
  • Aras
    Aras about 10 years
    cool, thanks for sharing this! I will give it a shot when I have a change. Can you explain a bit more what exactly is happening in the last two steps? Are you modifying the edid and copying it back to the monitor itself?
  • JJones
    JJones almost 10 years
    Yes, it's writing the new EDID back to the monitor. I found the correct edid for my monitor in a boot log someone else posted and google indexed.