View Single Post
Old 12-08-06, 05:29 PM   #24
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

By the way, on the back of the monitor I read:

Model No. MT-9017T
Date of manufacture: july 1996
Serial no. 6003534

I found out that if I replace the first 8 bytes
with the EDID 1.0 header: 00 ff ff ff ff ff ff 00
then the nvidia driver seems to correctly decode
the EDID. That is, I then get:

Code:
(--) NVIDIA(0): --- EDID for Iiyama (CRT-0) ---
(--) NVIDIA(0): EDID Version                 : 1.0
(--) NVIDIA(0): Manufacturer                 : IVM
(--) NVIDIA(0): Monitor Name                 : Iiyama
(--) NVIDIA(0): Product ID                   : 5936
(--) NVIDIA(0): 32-bit Serial Number         : 18023
(--) NVIDIA(0): Serial Number String         :
(--) NVIDIA(0): Manufacture Date             : 2006, week 1
(--) NVIDIA(0): DPMS Capabilities            : Standby Suspend
(--) NVIDIA(0): Prefer first detailed timing : No
(--) NVIDIA(0): Supports GTF                 : No
(--) NVIDIA(0): Maximum Image Size           : 320mm x 240mm
(--) NVIDIA(0): Valid HSync Range            : 15 kHz - 79 kHz
(--) NVIDIA(0): Valid VRefresh Range         : 56 Hz - 75 Hz
(--) NVIDIA(0): EDID maximum pixel clock     : 136.6 MHz
(--) NVIDIA(0):
(--) NVIDIA(0): Established Timings:
(--) NVIDIA(0):   640  x 480  @ 60 Hz
(--) NVIDIA(0):   640  x 480  @ 72 Hz
(--) NVIDIA(0):   640  x 480  @ 75 Hz
(--) NVIDIA(0):   800  x 600  @ 56 Hz
(--) NVIDIA(0):   800  x 600  @ 60 Hz
(--) NVIDIA(0):   800  x 600  @ 72 Hz
(--) NVIDIA(0):   800  x 600  @ 75 Hz
(--) NVIDIA(0):   1024 x 768  @ 60 Hz
(--) NVIDIA(0):   1024 x 768  @ 70 Hz
(--) NVIDIA(0):   1024 x 768  @ 75 Hz
(--) NVIDIA(0):   1280 x 1024 @ 75 Hz
(--) NVIDIA(0):
(--) NVIDIA(0): Standard Timings:
(--) NVIDIA(0):   248  x 248  @ 60 Hz
(--) NVIDIA(0):
(--) NVIDIA(0): Detailed Timings:
(--) NVIDIA(0):   1280 x 1024 @ 60 Hz
(--) NVIDIA(0):     Pixel Clock      : 107.20 MHz
(--) NVIDIA(0):     HRes, HSyncStart : 1280, 1322
(--) NVIDIA(0):     HSyncEnd, HTotal : 1426, 1667
(--) NVIDIA(0):     VRes, VSyncStart : 1024, 1030
(--) NVIDIA(0):     VSyncEnd, VTotal : 1033, 1065
(--) NVIDIA(0):     H/V Polarity     : -/+
(--) NVIDIA(0):   1280 x 1024 @ 74 Hz
(--) NVIDIA(0):     Pixel Clock      : 135.00 MHz
(--) NVIDIA(0):     HRes, HSyncStart : 1280, 1312
(--) NVIDIA(0):     HSyncEnd, HTotal : 1456, 1712
(--) NVIDIA(0):     VRes, VSyncStart : 1024, 1024
(--) NVIDIA(0):     VSyncEnd, VTotal : 1027, 1064
(--) NVIDIA(0):     H/V Polarity     : -/-
(--) NVIDIA(0):
(--) NVIDIA(0):
(--) NVIDIA(0): Raw EDID bytes:
(--) NVIDIA(0):
(--) NVIDIA(0):   00 ff ff ff ff ff ff 00  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 29
(--) 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):
(--) NVIDIA(0): --- End of EDID for Iiyama (CRT-0) ---
Note how it not only still prints 256 bytes, but even has the original 8 bytes header in the second part.

My conclusion is that you read 128 bytes at a time (using the vesa interrupt). After reading the first 128 bytes, you look at the first byte. When this byte is non-zero - you read the 'next' 128 bytes. This call fails, somehow returning the previously read 128 bytes (or you are copying those to a new buffer), and you copy the same 128 bytes to position 128-256.

THEN you realize that the Option CustomEDID was given and the first 128 bytes are overwritten with the 128 bytes from my file.

I'd like to ask if that is correct - but so far you have not answered a single question from me. Is that an Nvidia policy? To not give ANY information here, maybe a legal thingy?

A note of the EDID decodings above:

1) The manufacture year of 2006 week 1 is definitely wrong.
2) Valid HSync Range and Valid VRefresh Range are VERY
concervative (read: unusably so). This monitor can easily do
120 vertical refresh for example (at low res). Nevertheless,
the values look more "sane" than "garbled".

I think I'll leave the decoding of EDID to you from here on; and I am
going to concentrate on just getting it to work again. I'm getting tired
of working with just one monitor. Moreover, I bought a new video card
(an FX6200) that I want to test, too.

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