Comment 21 for bug 91292

Revision history for this message
Jonathan Lozinski (j-lozinski) wrote : I Have A Fix (It's Just a Pain ;)

Hi guys,
I have been plagued with the poor EDID stuff on my toshiba from day one. Anyway. I was looking through the docs and trying to get a better idea of why 1024x768 was not valid. The docs point you to running x as follows:

startx -- -verbose 6 -logverbose 6

this resulted in the EDID information in my Xorg log. Here is the stuff which was important:

-----snip-----
(--) NVIDIA(0): --- EDID for Nvidia Default Flat Panel (DFP-0) ---
(--) NVIDIA(0): EDID Version : 1.3
(--) NVIDIA(0): Manufacturer : NVD
(--) NVIDIA(0): Monitor Name : Nvidia Default Flat Panel
(--) NVIDIA(0): Product ID : 0
(--) NVIDIA(0): 32-bit Serial Number : 0
(--) NVIDIA(0): Serial Number String :
(--) NVIDIA(0): Manufacture Date : 2002, week 45
(--) NVIDIA(0): DPMS Capabilities : Standby Suspend Active Off
(--) NVIDIA(0): Prefer first detailed timing : Yes
(--) NVIDIA(0): Supports GTF : No
(--) NVIDIA(0): Maximum Image Size : 320mm x 260mm
(--) NVIDIA(0): Valid HSync Range : 29 kHz - 49 kHz
(--) NVIDIA(0): Valid VRefresh Range : 0 Hz - 60 Hz
(--) NVIDIA(0): EDID maximum pixel clock : 70.0 MHz
(--) NVIDIA(0):
(--) NVIDIA(0): Detailed Timings:
(--) NVIDIA(0): 969 x 768 @ 60 Hz
(--) NVIDIA(0): Pixel Clock : 65.00 MHz
(--) NVIDIA(0): HRes, HSyncStart : 969, 1048
(--) NVIDIA(0): HSyncEnd, HTotal : 1184, 1344
(--) NVIDIA(0): VRes, VSyncStart : 768, 771
(--) NVIDIA(0): VSyncEnd, VTotal : 777, 806
(--) NVIDIA(0): H/V Polarity : -/-
-----snip----

Now the thing I notices was that it was under the impression that the DFP was 969 pixels. This was a pain. It's 1024. The 1024 was being reject as it was too big for the DFP. It also explained why there was a black line on the right at lower modes (the scale was to 969, missing the last 55px off. Here clearly was my EDID problem in evidence.

Now the solving - it's nasty but works for me. The drive allows for EDIDs to come from another file:

        Option "CustomEDID" "DFP-0:/etc/X11/edid.bin"

the place to get that EDID file is a dump from nvidia-settings. Now to hunt down 969 and set to 1024. Hexedit for the binary file was used. 969 in Hex = 3C9, 1024 = 400. So I had to change 3C9 to 400 and I was a winner. The edid data from the file is:

(--) NVIDIA(0): Raw EDID bytes:
(--) NVIDIA(0):
(--) NVIDIA(0): 00 ff ff ff ff ff ff 00 3a c4 00 00 00 00 00 00
(--) NVIDIA(0): 2d 0c 01 03 80 20 1a 00 ea a8 e0 99 57 4b 92 25
(--) NVIDIA(0): 1c 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
(--) NVIDIA(0): 01 01 01 01 01 01 64 19 c9 77 31 00 26 30 4f 88
(--) NVIDIA(0): 36 00 42 ff 10 00 00 18 00 00 00 fc 00 4e 76 69
(--) NVIDIA(0): 64 69 61 20 44 65 66 61 75 6c 00 00 00 fc 00 74
(--) NVIDIA(0): 20 46 6c 61 74 20 50 61 6e 65 6c 00 00 00 00 fd
(--) NVIDIA(0): 00 00 3c 1d 31 07 00 00 20 20 20 20 20 00 00 06
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(--) NVIDIA(0):
(--) NVIDIA(0): --- End of EDID for Nvidia Default Flat Panel (DFP-0) ---

However the closest match to 3C9 was the C9 in the 4th line. I upped that a little to CC, and low and behold it increased the screen size in the log to a few pixels more. I upped it to FF and I was at 1023px. 00 back to 640.. booo. so close.

I had to find that 3. i messed around with all sorts and diffed the logs to see what data changed. Then I finally found which 3 it was. Just a couple of digits along, not sure why the 77 was skiped, but chaging that to a 4 and it worked! I now have a working X and am about to sort beryl.

So that line now was changed:

(--) NVIDIA(0): 01 01 01 01 01 01 64 19 __c9__ 77 __3__1 00 26 30 4f 88
(--) NVIDIA(0): 01 01 01 01 01 01 64 19 __00__ 77 __4__1 00 26 30 4f 88

Sorry that this is a real long post. It's just that it's not really a fix that people can sort unless they know where to look. Perhaps this will fix all peoples issues, but I suspect that it may only work for people with the same specs as me. My machine is a toshiba satelite 704, with 1024x768 screen. I really hope this helps people resolve this issue, and again sorry for the long post, but Its amazing I managed to fix it!

I have attached my working edid.bin file for people to try if they're feeling brave, perhaps it works in all cases...

Thanks