Bug ? No resolutions detected after installing NVIDIA Driver

Hi,

I’m getting my system come up in 800x600 only after installing the 319.12 driver. Older versions exhibit the same symtoms(313.30, 310.44)

Looking at the Xorg.log the problem would appear to be related to the following section of the log.

[   198.368] (WW) NVIDIA(GPU-0): The EDID read for display device DFP-0 is invalid:
[   198.368] (WW) NVIDIA(GPU-0):     unrecognized EDID Header.
[   198.368] (--) NVIDIA(GPU-0): 
[   198.368] (--) NVIDIA(GPU-0): Raw EDID bytes:
[   198.368] (--) NVIDIA(GPU-0): 
[   198.368] (--) NVIDIA(GPU-0):   00 00 ff ff ff ff ff 00  4c 2d 3f 04 34 32 59 4d
[   198.368] (--) NVIDIA(GPU-0):   23 12 01 03 80 34 20 78  2a ee 91 a3 54 4c 99 26
[   198.368] (--) NVIDIA(GPU-0):   0f 50 54 23 08 00 a9 40  81 80 81 40 01 01 01 01
[   198.368] (--) NVIDIA(GPU-0):   01 01 01 01 01 01 28 3c  80 a0 70 b0 23 40 30 20
[   198.368] (--) NVIDIA(GPU-0):   36 00 06 44 21 00 00 1a  00 00 00 fd 00 38 3c 1e
[   198.368] (--) NVIDIA(GPU-0):   51 11 00 0a 20 20 20 20  20 20 00 00 00 fc 00 53
[   198.368] (--) NVIDIA(GPU-0):   79 6e 63 4d 61 73 74 65  72 0a 20 20 00 00 00 ff
[   198.368] (--) NVIDIA(GPU-0):   00 48 56 44 51 38 30 32  32 31 36 0a 20 20 00 b0
[   198.368] (--) NVIDIA(GPU-0): 
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0): 
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.368] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
[   198.369] (--) NVIDIA(GPU-0): 
[   198.370] (II) NVIDIA(0): NVIDIA GPU GeForce GTX 650 (GK107) at PCI:1:0:0 (GPU-0)
[   198.370] (--) NVIDIA(0): Memory: 1048576 kBytes
[   198.370] (--) NVIDIA(0): VideoBIOS: 80.07.35.00.60

If I remove the drivers my Mythbuntu install defaults to the Nouveau drivers which doesn’t appear to have this issue.

[118960.506] (II) NOUVEAU(0): Monitor name: SyncMaster
[118960.507] (II) NOUVEAU(0): Serial No: HVDQ802216
[118960.507] (II) NOUVEAU(0): EDID (in hex):
[118960.507] (II) NOUVEAU(0):   00ffffffffffff004c2d3f043432594d
[118960.507] (II) NOUVEAU(0):   23120103803420782aee91a3544c9926
[118960.507] (II) NOUVEAU(0):   0f5054230800a9408180814001010101
[118960.507] (II) NOUVEAU(0):   010101010101283c80a070b023403020
[118960.507] (II) NOUVEAU(0):   360006442100001a000000fd00383c1e
[118960.507] (II) NOUVEAU(0):   5111000a202020202020000000fc0053
[118960.507] (II) NOUVEAU(0):   796e634d61737465720a2020000000ff
[118960.507] (II) NOUVEAU(0):   00485644513830323231360a202000b0
[118960.507] (II) NOUVEAU(0): Printing probed modes for output DVI-D-1
[118960.507] (II) NOUVEAU(0): Modeline "1920x1200"x60.0  154.00  1920 1968 2000 2080  1200 1203 1209 1235 +hsync -vsync (74.0 kHz eP)

etc etc …

Anyone have any clues ??

nvidia-bug-report.log.gz (74.1 KB)

You might be able to work around this issue if you need the NVIDIA driver for some reason. See cilia’s post here:
http://forums.freebsd.org/showthread.php?t=23821

Obviously your EDID is fine… it’s identically the same when NOUVEAU probes it… well… sort of… not sure why it’s trying to read it past 127 bytes, which is the length according to wiki:
http://en.wikipedia.org/wiki/Extended_display_identification_data

That itself might be the issue, NVidia driver is pulling 381 byes vs 127.

Thanks. I’ll take a look at that article and give it a shot.

I’ve assumed that it’s the driver and it would appear that way to me. Unforunately I don’t have another monitor handy to test it with. I’ll see how I get on with the article above and report back.

Success … kinda. Found a work around thanks to Google and the Ubuntu forums.

Grabbed this from /var/log/Xorg.0.log before installing the driver NVIDIA-Linux-x86_64-319.12.run

[118960.507] (II) NOUVEAU(0): EDID (in hex):
[118960.507] (II) NOUVEAU(0):   00ffffffffffff004c2d3f043432594d
[118960.507] (II) NOUVEAU(0):   23120103803420782aee91a3544c9926
[118960.507] (II) NOUVEAU(0):   0f5054230800a9408180814001010101
[118960.507] (II) NOUVEAU(0):   010101010101283c80a070b023403020
[118960.507] (II) NOUVEAU(0):   360006442100001a000000fd00383c1e
[118960.507] (II) NOUVEAU(0):   5111000a202020202020000000fc0053
[118960.507] (II) NOUVEAU(0):   796e634d61737465720a2020000000ff
[118960.507] (II) NOUVEAU(0):   00485644513830323231360a202000b0

Converted it to this in vim

00ffffffffffff004c2d3f043432594d
23120103803420782aee91a3544c9926
0f5054230800a9408180814001010101
010101010101283c80a070b023403020
360006442100001a000000fd00383c1e
5111000a202020202020000000fc0053
796e634d61737465720a2020000000ff
00485644513830323231360a202000b0

Saved it as edid.txt

Grabbed this bit of C code from http://ubuntuforums.org/showthread.php?t=1857772

#include <stdio.h>

int main()
{
  while (!feof(stdin))
  {
    unsigned char i;
    scanf("%02X ", &i);
    printf("%c", i);
  }
  return 0;
}

Saved it as edid-conv.c and compiled it like this

gcc edid-conv.c -o edid-conv

Ran the shiny new program on edid.txt

./edid-conv <edid.txt >edid.bin

The resulting file fed through parse-edid looked very promising

root@mythbuntu:~# parse-edid edid.bin 
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

	# EDID version 1 revision 3
Section "Monitor"
	# Block type: 2:0 3:fd
	# Block type: 2:0 3:fc
	Identifier "SyncMaster"
	VendorName "SAM"
	ModelName "SyncMaster"
	# Block type: 2:0 3:fd
	HorizSync 30-81
	VertRefresh 56-60
	# Max dot clock (video bandwidth) 170 MHz
	# Block type: 2:0 3:fc
	# Block type: 2:0 3:ff
	# DPMS capabilities: Active off:yes  Suspend:no  Standby:no

	Mode 	"1920x1200"	# vfreq 59.950Hz, hfreq 74.038kHz
		DotClock	154.000000
		HTimings	1920 1968 2000 2080
		VTimings	1200 1203 1209 1235
		Flags	"-HSync" "+VSync"
	EndMode
	# Block type: 2:0 3:fd
	# Block type: 2:0 3:fc
	# Block type: 2:0 3:ff
EndSection

Copied the edid.bin file to /etc/X11
Re-installed the driver (sh ./NVIDIA-Linux-x86_64-319.12.run)

Modded the default config file in /etc/X11/xorg.conf and added a line to the Device section of the config. The result looked like …

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option         "CustomEDID" "DFP-0:/etc/X11/edid.bin"
EndSection

Loaded the new kernel module with

modprobe -a nvidia

A quick test

startx

Reveals the desktop in 1920x1200 … Woooot !

Rebooted into a working X with NVIDIA running as expected. Yay …

Would much prefer that the driver just grabbed the 128 bytes of EDID correctly and parsed it without all the extra bits that made it barf !

Hope this helps someone else one day as it’s been a massive saga for me !

Most of the credit should go to papibe over at the Ubuntu forums and various others discovered via google ! I just put it all together in one place to make it work.

Nice research there. Glad you got it to work :)