MASTER: EDID fail
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
xorg-server (Ubuntu) |
Invalid
|
Wishlist
|
Unassigned |
Bug Description
Current xorg in Hardy usually autodetects your monitor, it's resolution, dpi, etc. and everything just magically works. This happens because modern monitors can be queried for 'EDID' data, that returns all the necessary info to configure things properly.
However, there are cases where the monitor fails to report EDID. These exhibit themselves as a variety of symptoms, often including incorrect resolution selection, strange font dpi settings, inability to select resolutions other than 640x480, 800x600, 1024x768, and sometimes other odd issues. To determine if you have this issue, simply run `sudo ddcprobe` or `sudo get-edid | parse-edid`, and you will see 'EDID fail' in the output.
There are several causes for EDID fail reads. One is if you're using a truly ancient monitor from the days before EDID. A second is if you're using a video extension cable, KVM, or other piece of equipment connected between the monitor and the video card that lacks the EDID wire. In both these cases, you have a hardware issue, and there's nothing that can be done in software to get around it - you'll need to either get different hardware, or familiarize yourself with xorg.conf syntax and do your configuration yourself.
But there are also some unexplained EDID failures beyond these, and that's what this bug report is for. If you're experiencing this issue, feel free to add details of your problem here, but make sure to include the following:
1. The exact manufacturer and model id for your monitor (it is usually written on the back of the monitor)
2. Your Xorg.0.log (or Xorg.0.log.old) from after a failed boot
3. Install the 'read-edid' package, run `sudo get-edid > edid.dat` and then attach that file (it's binary, so don't copy/paste).
4. The correct HorizSync and VertRefresh ranges for your monitor. This is typically written in your monitor's documentation; if you don't have it handy, it's often available online from your monitor manufacturer's website. Laptop users (esp. macbooks) may not have this info available, but get what you can.
If your monitor is misreporting EDID (as opposed to not reporting it at all), then sometimes the issue can be solved by adding quirks for your monitor, if we have the above 4 pieces of data. Sometimes, if it's an established quirk, we can fairly easily backport those to prior versions of Ubuntu.
There are several different versions of EDID, and it sometimes happens that a newer version of EDID will be used by a monitor, that Xorg may not yet comprehend. In these cases, we simply need to examine the new EDID structure and adapt Xorg to accept it.
If your monitor is not reporting EDID at all, or if your video card is somehow invalidating it before it can be read, then this is a bigger problem. Try your monitor with a different computer and/or different video card, to identify if the issue is particular to the video card; if so, please report this and attach your lspci -vvnn. If the monitor fails the same way regardless of what video card it's attached to, then it's probably just a bad monitor. There may be nothing that can be done in this case, but report all the info about the monitor anyway, just in case new ideas come to light later. For example, bug #288807 involves this situation with a particular old laptop model, so we could possibly trigger a quirk from the hostbridge and chip.
[Original Report]
There seems to be a problem retrieving EDID data. (Extended display identification data)
* http://
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_
DISTRIB_
DISTRIB_
$ uname -a
Linux ubuntu 2.6.24-8-generic #1 SMP Thu Feb 14 20:40:45 UTC 2008 i686 GNU/Linux
xorg 1:7.3+10ubuntu5
xserver-xorg 1:7.3+10ubuntu5
xserver-xorg-core 2:1.4.1~
xresprobe 0.4.24ubuntu8
nvidia-glx-new 169.09+
nvidia-
Samsung SyncMaster 900SL Plus (19", CRT)
* http://
Gainward GeForce 8600GT (256MB GDDR3, PCI-Express) - connected to monitor via VGA (DVI->VGA adapter).
* http://
* http://
$ sudo xresprobe nv
id:
res:
freq:
disptype:
$ sudo xresprobe nvidia
id:
res:
freq:
disptype:
$ sudo ddcprobe
vbe: VESA 3.0 detected.
oem: NVIDIA
vendor: NVIDIA Corporation
product: GW-P/N@
memory: 14336kb
mode: 640x400x256
mode: 640x480x256
mode: 800x600x16
mode: 800x600x256
mode: 1024x768x16
mode: 1024x768x256
mode: 1280x1024x16
mode: 1280x1024x256
mode: 320x200x64k
mode: 320x200x16m
mode: 640x480x64k
mode: 640x480x16m
mode: 800x600x64k
mode: 800x600x16m
mode: 1024x768x64k
mode: 1024x768x16m
mode: 1280x1024x64k
mode: 1280x1024x16m
edid:
edidfail
[ 30.234827] nvidia: module license 'NVIDIA' taints kernel.
[ 30.499265] NVRM: loading NVIDIA UNIX x86 Kernel Module 169.09 Fri Jan 11 14:38:28 PST 2008
01:00.0 VGA compatible controller: nVidia Corporation GeForce 8600 GT (rev a1)
01:00.0 VGA compatible controller [0300]: nVidia Corporation GeForce 8600 GT [10de:0402] (rev a1) (prog-if 00 [VGA controller])
Subsystem: CardExpert Technology Unknown device [10b0:0401]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at d0000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at fa000000 (64-bit, non-prefetchable) [size=32M]
Region 5: I/O ports at dc00 [size=128]
[virtual] Expansion ROM at feae0000 [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [68] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [78] Express Endpoint IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag+
Device: Latency L0s <512ns, L1 <4us
Device: AtnBtn- AtnInd- PwrInd-
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
Link: Supported Speed 2.5Gb/s, Width x16, ASPM L0s L1, Port 0
Link: Latency L0s <512ns, L1 <4us
Link: ASPM Disabled RCB 128 bytes CommClk+ ExtSynch-
Link: Speed 2.5Gb/s, Width x16
description: | updated |
Changed in xorg-server: | |
importance: | Undecided → High |
status: | New → Triaged |
description: | updated |
description: | updated |
description: | updated |
Changed in xorg-server: | |
importance: | High → Wishlist |
tags: | added: hardy |
no longer affects: | nvidia-graphics-drivers (Ubuntu) |
$ cat /proc/version_ signature
Ubuntu 2.6.24-8.14-generic
$ cat /proc/driver/ nvidia/ version
NVRM version: NVIDIA UNIX x86 Kernel Module 169.09 Fri Jan 11 14:38:28 PST 2008
GCC version: gcc version 4.2.3 (Ubuntu 4.2.3-1ubuntu2)
$ cat /proc/driver/ nvidia/ registry
EnableVia4x: 0
EnableALiAGP: 0
NvAGP: 3
ReqAGPRate: 15
EnableAGPSBA: 0
EnableAGPFW: 0
Mobile: 4294967295
ResmanDebugLevel: 4294967295
RmLogonRC: 1
ModifyDeviceFiles: 1
DeviceFileUID: 0
DeviceFileGID: 0
DeviceFileMode: 438
RemapLimit: 0
UseCPA: 4294967295
UseVBios: 1
RMEdgeIntrCheck: 1
$ cat /proc/driver/ nvidia/ cards/0
Model: GeForce 8600 GT
IRQ: 16
Video BIOS: 60.84.35.00.00
Card Type: PCI-E
DMA Size: 40 bits
DMA Mask: 0xffffffffff
Bus Location: 01.00.0
$cat /proc/devices | grep nvidia
195 nvidia
$cat /proc/iomem | grep Video
000a0000-000bffff : Video RAM area
000c0000-000ccbff : Video ROM
$ dpkg -l read-edid | cat
read-edid 1.4.1-2.1
$ sudo get-edid | parse-edid
parse-edid: parse-edid version 1.4.1
get-edid: get-edid version 1.4.1
Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful
VBE version 300
VBE string at 0x11110 "NVIDIA"
VBE/DDC service about to be called
Report DDC capabilities
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful
Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination does not support DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer
Reading next EDID block
VBE/DDC service about to be called
Read EDID
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call failed
The EDID data should not be trusted as the VBE call failed
Error: output block unchanged
parse-edid: IO error reading EDID