View Single Post
Old 12-08-06, 01:02 PM   #20
alaric
Cyber Jedi
 
alaric's Avatar
 
Join Date: Aug 2003
Location: Amsterdam
Posts: 75
Default Re: Monitor is not detected at all, and ConnectedMonitor / UseDisplayDevice do not he

Quote:
Originally Posted by netllama
Thanks. Specifically which model of the IIyama Vision Master Pro are you using?
This is a IIYAMA Vision Master Pro17 from 1996. The EDID it gives confirms this (see below).

Quote:
Originally Posted by netllama
Also, are you using any intermediary devices between the CRT and graphics card such as a KVM, or switchbox?
Normally I am using a KVM, but during all of these tests I have connected the monitor directly to the VGA plug of the FX5200 (using the original VGA cable of the monitor).

I started to investigate the EDID itself now. Here are my findings so far:

1) I copied the raw EDID dump from the Xorg.0.log to a C++ source file, such that I have the bytes available in an array of unsigned char's.

2) I wrote those bytes (which are 256) to a file and used Option CustomEDID to read the file back.

3) I verified that a 'hexdump -C' gives the same data as is dumped in the Xorg.0.log (they have the same format).

So far so good, and no change (I verified that the CustomEDID option worked).

4) I downloaded and compiled read-edid-1.4.1 from http://john.fremlin.de/programs/linux/read-edid/

5) I used read-edid to read the EDID info directly from the card.

Here is the hexdump from read-edid-1.4.1:

Code:
00000000  20 00 c0 00 c3 71 b1 c6  26 cd 30 17 67 46 00 00  | ....q..&.0.gF..|
00000010  01 10 01 00 3f 20 18 99  c8 04 88 a0 57 4a 9b 26  |....? ......WJ.&|
00000020  3f c8 4c ff ff 80 81 80  81 8e 00 00 00 00 00 00  |?.L.............|
00000030  00 00 00 00 00 00 e0 29  00 83 51 00 29 40 2a 68  |.......)..Q.)@*h|
00000040  63 00 2c e1 10 00 00 04  bc 34 00 b0 51 00 28 40  |c.,......4..Q.(@|
00000050  20 90 03 00 2c e1 10 00  00 18 00 00 00 00 00 00  | ...,...........|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 d6  |................|
To compare, here is the data from Xorg.0.log (driver version 1.0.8174 and higher (latest tested: 1.0.9742)):

Code:
(--) NVIDIA(0): Raw EDID bytes:
(--) NVIDIA(0):
(--) NVIDIA(0):   20 00 c0 00 c3 71 b1 c6  26 cd 30 17 67 46 00 00
(--) NVIDIA(0):   01 10 01 00 3f 20 18 99  c8 04 88 a0 57 4a 9b 26
(--) NVIDIA(0):   3f c8 4c ff ff 80 81 80  81 8e 00 00 00 00 00 00
(--) NVIDIA(0):   00 00 00 00 00 00 e0 29  00 83 51 00 29 40 2a 68
(--) NVIDIA(0):   63 00 2c e1 10 00 00 04  bc 34 00 b0 51 00 28 40
(--) NVIDIA(0):   20 90 03 00 2c e1 10 00  00 18 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 d6
(--) NVIDIA(0):   20 00 c0 00 c3 71 b1 c6  26 cd 30 17 67 46 00 00
(--) NVIDIA(0):   01 10 01 00 3f 20 18 99  c8 04 88 a0 57 4a 9b 26
(--) NVIDIA(0):   3f c8 4c ff ff 80 81 80  81 8e 00 00 00 00 00 00
(--) NVIDIA(0):   00 00 00 00 00 00 e0 29  00 83 51 00 29 40 2a 68
(--) NVIDIA(0):   63 00 2c e1 10 00 00 04  bc 34 00 b0 51 00 28 40
(--) NVIDIA(0):   20 90 03 00 2c e1 10 00  00 18 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 d6
OBSERVATION: This is TWICE the same 128 bytes.

Note, EDID version 1 should be 128 bytes. EDID version 2 would be 256 bytes, but my monitor is way too old to ever know about that version.

From http://en.wikipedia.org/wiki/EDID :
Quote:
EDID structure 1.0 was defined in 1994; version 1.1 followed in 1996, then 1.2, and 1.3 in 2000. All these define upwards compatible 128 byte structures. EDID structure 2.0 defines a new 256-byte structure.
6) I used parse-edid on this data (the 128 bytes) and it resulted in sane output:

Code:
./parse-edid: parse-edid version 1.4.1
./parse-edid: EDID checksum failed - data is corrupt. Continuing anyway.
./parse-edid: first bytes don't match EDID version 1 header
./parse-edid: do not trust output (if any).

        # EDID version 1 (byte 12) revision 0 (byte 13) Section "Monitor"
        # Block type: 2:0 3:0
        # Block type: 2:0 3:0
        Identifier "IVM:3017"
        VendorName "IVM"
        ModelName "IVM:3017"
        # Block type: 2:0 3:0
        # Block type: 2:0 3:0
        # DPMS capabilities: Active off:no  Suspend:yes  Standby:yes

        Mode    "1280x1024"     # vfreq 60.382Hz, hfreq 64.307kHz
                DotClock        107.200000
                HTimings        1280 1322 1426 1667
                VTimings        1024 1030 1033 1065
        EndMode
        Mode    "1280x1024"     # vfreq 74.112Hz, hfreq 78.855kHz
                DotClock        135.000000
                HTimings        1280 1312 1456 1712
                VTimings        1024 1024 1027 1064
                Flags   "-HSync" "-VSync"
        EndMode
        # Block type: 2:0 3:0
        # Block type: 2:0 3:0
EndSection
I call this sane, because even though the checksum fails (byte 127) and the first eight bytes don't match EDID version 1 header, the results seem to be correct. Most notably, the IVM:3017 is a very sane and correct value (IVM = Iiyama Vision Master; the 3017 is indeed the model id). Als the dotclock and the Timings are very sane. We have to conclude from this that:

1) The EDID actually contains information.
2) This _file_ structure is correct (it does not have swapped nibbles, or endian problems).

The problem therefore seems to be this:

(--) NVIDIA(0): --- EDID for P@@ &?0?gF (CRT-0) ---
(--) NVIDIA(0): EDID Version : 2.0

The drivers thinks that this an EDID version 2.0, resulting in the garbled nonsense.

I'll continue my investigations - any results from your side will be appreciated

Alaric
__________________
Get my email address from my homepage.
alaric is offline   Reply With Quote