Yet another problem with xorg.conf

I have a new system up with openSuSE 11.2, which I switch to via a KVM switch from another computer. I had a problem and thought a new install would be a good idea . . . and it was for the particular problem, but now I have another one.

When 11.2 first came out I quickly discovered that the system couldn’t tell what kind of monitor I was using if it was behind the KVM switch and defaulted to a very low resolution in response. So, I plugged everything directly into the computer, installed the nvidia driver via YAST and everything was discovered and working nicely, I then used nvidia-xconfig to generate a xorg.conf file in /etc/X11 and the system then survived KVM switching as expected. Now, I can’t seem to get this to work, so I must be doing something differently.

Here’s what I tried, with the system working perfectly:

I CTL-ALT-F1 ed to a terminal mode, logged in as root and entered “init 3” This got me to runlevel 3, as expected.

Then I tried a simple “nvidia-xconfig” and reset back to runlevel 5 and rebooted. This did make a xorg.conf file in /etc/X11/, but it did not have the advanced features like a higher resolution in it. If I then booted with the monitor directly connected, however, it would come up with a high resolution, if the monitor was on the outside of the KVM switch, it would come up with a low resolution. The xorg.conf file seemed to be ignored.

Then I again got into a terminal as before at runlevel 3 and tried: “sax2 -r -m 0=nvidia” This gave me error messages and no xorg.conf.

I also tried using the sax instruction, ignoring the error messages, and following up with “nvidia-xconfig” but of course this was futile because no xorg.conf file was in /etc/X11/.

I know I’m doing something stupid here, but what is it? I am pretty new to this kind of “under the hood” stuff . . . I usually just happily use openSuSE, and have been for several years now. So I am a newbie.

Thanks for your help!

Bill

This reads to be a bit “fuzzy”. … :slight_smile:

nvidia-xconfig needs no /etc/X11/xorg.conf. In fact, when ever I run nivida-xconfig, I prefer running with with no xorg.conf.

sax2 has been depreciated. It is no longer supported by SuSE-GmbH and to the best of my understanding, bug fixes in it are no longer fixed. Best not to use it if you have something like nivida-xconfig that works. Note nvidia-xconfig is ONLY for use with the proprietary nVidia driver.

There are some basic opensuse graphic driver theory here: openSUSE Graphic Card Practical Theory Guide for Users - openSUSE Forums

Thanks for the reply, oldcpu, sorry I was not more clear.

Basically, I’m trying to create an xorg.conf file with the proper settings for my video system that will take precedence over it’s inability to determine my monitor type when the KVM switch is in the system. I had this working until yesterday! And I stupidly forgot to back up the xorg.conf file I had when I re-installed. It’s been a few months, but I think I made that original xorg.conf using the nvidia-xconfig approach which doesn’t work now.

I went to the link you recommended, and as it turns out I had seen it before but missed the “third” way to make an xorg.conf file, namely the Xorg -configure instruction. I just tried that and it did make the xorg.conf file . . . but when I looked into the file it was very weird, starting out with thinking I had a dual-head system . . . which I don’t. It also didn’t work through the KVM switch, or if it was working it still cut my resolution way down. Strangely, when I plug the monitor directly into the computer and change nothing else, a reboot comes up with max resolution . . . like the xorg.conf file is being ignored, the monitor is being recognized and the system is acting accordingly.

Why can’t I make that xorg.conf file with actual data from my system? When I use the “hardware” facility in YAST everything is found easily enough.

Bill

Did you look inside your /var/log/Xorg.0.log files and /home/BillyDoc/.xsession-errors files in both cases (where it works and where it does not work) to see if you can see what the differences are in terms of drivers loaded and errors generated in each case?

Hi oldcpu,

I don’t think it has ever worked. I think the xorg.conf file is just being ignored in all cases.

And I just looked at the Xorg log file (the latest one), and there are some things in there that I don’t like, like “fatal server error”, but I don’t know enough to really pin it down. Anyway, here it is:


(II) config/hal: initialized
X.Org X Server 1.6.5
Release Date: 2009-10-11
X Protocol Version 11, Revision 0
Build Operating System: openSUSE SUSE LINUX
Current Operating System: Linux linux-d8z0 2.6.31.5-0.1-desktop #1 SMP PREEMPT 2009-10-26 15:49:03 +0100 x86_64
Build Date: 02 November 2009  12:04:43PM
 
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.99.log", Time: Thu May 27 11:24:17 2010
(++) Using config file: "/tmp/sysdata-4875"
(==) ServerLayout "Layout[all]"
(**) |-->Screen "Screen[0]" (0)
(**) |   |-->Monitor "Monitor[0]"
(**) |   |-->Device "Device[0]"
(**) |-->Input Device "Keyboard[0]"
(**) |-->Input Device "Mouse[1]"
(==) Automatically adding devices
(==) Automatically enabling devices
(WW) The directory "/usr/share/fonts/TTF/" does not exist.
	Entry deleted from font path.
(WW) The directory "/usr/share/fonts/OTF" does not exist.
	Entry deleted from font path.
(**) FontPath set to:
	/usr/share/fonts/misc,
	/usr/share/fonts/misc:unscaled,
	/usr/share/fonts/truetype/,
	/usr/share/fonts/Type1/,
	/usr/share/fonts/100dpi:unscaled,
	/usr/share/fonts/75dpi:unscaled
(==) ModulePath set to "/usr/lib64/xorg/modules/updates,/usr/lib64/xorg/modules"
(WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
(WW) Disabling Keyboard[0]
(WW) Disabling Mouse[1]
(II) Loader magic: 0xcc0
(II) Module ABI versions:
	X.Org ANSI C Emulation: 0.4
	X.Org Video Driver: 5.0
	X.Org XInput driver : 4.0
	X.Org Server Extension : 2.0
(II) Loader running on linux
(--) using VT number 7

(--) PCI: (0:1:0:0) 1a03:2000:1a03:2000 rev 16, Mem @ 0xfb000000/8388608, 0xfafe0000/131072, I/O @ 0x00008000/128
(--) PCI:*(0:10:0:0) 10de:05e6:19f1:0e06 rev 161, Mem @ 0xf7000000/16777216, 0xd0000000/268435456, 0xf8000000/33554432, I/O @ 0x0000cc00/128, BIOS @ 0x????????/524288
(II) Open ACPI successful (/var/run/acpid.socket)
(II) System resource ranges:
	[0] -1	0	0xffffffff - 0xffffffff (0x1) MX**
	[1] -1	0	0x000f0000 - 0x000fffff (0x10000) MX**
	[2] -1	0	0x000c0000 - 0x000effff (0x30000) MX**
	[3] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX**
	[4] -1	0	0x0000ffff - 0x0000ffff (0x1) IX**
	[5] -1	0	0x00000000 - 0x00000000 (0x1) IX**
(II) "extmod" will be loaded. This was enabled by default and also specified in the config file.
(II) "dbe" will be loaded by default.
(II) "glx" will be loaded by default.
(II) "record" will be loaded by default.
(II) "dri" will be loaded by default.
(II) "dri2" will be loaded by default.
(II) LoadModule: "extmod"
(II) Loading /usr/lib64/xorg/modules//extensions/libextmod.so
(II) Module extmod: vendor="X.Org Foundation"
	compiled for 1.6.5, module version = 1.0.0
	Module class: X.Org Server Extension
	ABI class: X.Org Server Extension, version 2.0
(II) Loading extension MIT-SCREEN-SAVER
(II) Loading extension XFree86-VidModeExtension
(II) Loading extension XFree86-DGA
(II) Loading extension DPMS
(II) Loading extension XVideo
(II) Loading extension XVideo-MotionCompensation
(II) Loading extension X-Resource
(II) LoadModule: "dbe"
(II) Loading /usr/lib64/xorg/modules//extensions/libdbe.so
(II) Module dbe: vendor="X.Org Foundation"
	compiled for 1.6.5, module version = 1.0.0
	Module class: X.Org Server Extension
	ABI class: X.Org Server Extension, version 2.0
(II) Loading extension DOUBLE-BUFFER
(II) LoadModule: "glx"
(II) Loading /usr/lib64/xorg/modules/updates//extensions/libglx.so
(II) Module glx: vendor="NVIDIA Corporation"
	compiled for 4.0.2, module version = 1.0.0
	Module class: X.Org Server Extension
(II) NVIDIA GLX Module  195.36.15  Fri Mar 12 01:17:05 PST 2010
(II) Loading extension GLX
(II) LoadModule: "record"
(II) Loading /usr/lib64/xorg/modules//extensions/librecord.so
(II) Module record: vendor="X.Org Foundation"
	compiled for 1.6.5, module version = 1.13.0
	Module class: X.Org Server Extension
	ABI class: X.Org Server Extension, version 2.0
(II) Loading extension RECORD
(II) LoadModule: "dri"
(II) Loading /usr/lib64/xorg/modules//extensions/libdri.so
(II) Module dri: vendor="X.Org Foundation"
	compiled for 1.6.5, module version = 1.0.0
	ABI class: X.Org Server Extension, version 2.0
(II) Loading extension XFree86-DRI
(II) LoadModule: "dri2"
(II) Loading /usr/lib64/xorg/modules//extensions/libdri2.so
(II) Module dri2: vendor="X.Org Foundation"
	compiled for 1.6.5, module version = 1.1.0
	ABI class: X.Org Server Extension, version 2.0
(II) Loading extension DRI2
(II) LoadModule: "nvidia"
(II) Loading /usr/lib64/xorg/modules/updates//drivers/nvidia_drv.so
(II) Module nvidia: vendor="NVIDIA Corporation"
	compiled for 4.0.2, module version = 1.0.0
	Module class: X.Org Video Driver
(II) NVIDIA dlloader X Driver  195.36.15  Fri Mar 12 00:38:50 PST 2010
(II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
(II) NVIDIA X compatibility module for ABI 5.0 built from xorg-server-1.5.99.901
(II) X log verbosity: 255
(II) Primary Device is: PCI 0a@00:00:0
(EE) No devices detected.

Fatal server error:
no screens found

Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
Please also check the log file at "/var/log/Xorg.99.log" for additional information.

Should I erase all these logs and set up a more controlled experiment?

Bill************

Then I do not understand at all, because your previous post stated:

That reads to me like this works in some cases, at least 2 different cases the way I read that. It may not have worked as intended, but you did have something working. Now you say it never worked ???

I can not understand the above. Sorry.

Hi BiilyDoc.

AFAIU, it is possible (but possibly a bit tedious) to add a custom EDID into your xorg.conf, so that the X-server loads from a file, rather than attempting to get EDID via the display device. Then you should be able to get correct operation with your KVM in the mix. You need to add something like this:

"Option "CustomEDID" "DFP-0:/path/to/edid.bin"

Use nvidia-xconfig to generate the basic xorg.conf, then use nvidia-settings to generate a valid EDID.bin. You’ll need to have your monitor plugged in directly for this bit. See the posts by Anlace here:

NVIDIA Forums > Nvidia Driver/Resolution Issue in Ubuntu 8.04.1

Then you’ll need to make the necessary edits to /etc/X11/xorg.conf with an editor (as root).

You may need to google for more info on this, but I have seen similar threads and blogs on this topic elsewhere.

Good luck. :slight_smile:

I am very sorry I am being so hard to understand. What I meant was that, the basic approach of using the xorg.conf file DID work until I did a complete re-install of 11.2 and lost that particular xorg.conf file. Now I am trying to replace it, and my replacements do not seem to make any difference to the behavior, but let me elaborate that point.

With no xorg.conf file at all, with the monitor plugged directly into the computer, the monitor is detected and the screen resolution is set to maximum resolution. In other words, that condition works well.

If, on the other hand, again with no xorg.conf file, the monitor is connected to the computer via a KVM switch, then the system cuts the resolution way back and I can’t even use the computer menu (I’m using Gnome) because it is off the screen. The system is not working well at all.

Now if I try to produce a xorg.conf file, I have successfully done this with nvidia-xconfig, but nothing changes: the monitor has high resolution if connected to the computer directly, and low resolution if through the KVM switch. This is why I say that the xorg.conf file has never worked, it seems to make no difference if it is there or not.

But that “never” is ambiguous, and by that I mean since yesterday when I did the re-install. Prior to yesterday a different xorg.conf file did work flawlessly and the KVM switch made no difference whether it was between the monitor and the computer or not. This is why I am trying to produce another xorg.conf file, and don’t seem to be able to do so. I am assuming that a proper xorg.conf file would force the system to the high resolution state even if it couldn’t directly detect the monitor because of the KVM switch.

The only real problem in that Xorg.0.log is the EE fatal error. I would expect a black screen on the monitor from the error with that driver and graphics card combination.

I have had that error before with a buggy graphics driver (not NVIDIA though) when the hardware was ok. But that error means the driver can’t detect the graphics card/chip, so it could also be hardware.

Hi consused,

I have not had any black screens at all. The only problem has been the screen resolution. This just gets weirder and weirder.

Bill

Could it be a rubbishy KVM switch? You have not said which type you have. The old mechanical ones have low bandwidth and an internal wire could have fallen off. The electronic ones are much better but they can ‘blow’ eventually.

Can you try another switch?

What deano_ferrari said works perfectly plug it in get a edid dump then amend the xorg.conf.

As to the whys I would suspect an update in xorg as I have also encountered this. In theory there should be no need for an xorg.conf due to hal probing but it seems some thing has changed but where in the stack I’m afraid I would be guessing so resorted to a custom edid(Which isn’t really custom but a copy of a working one when hal cant autoprobe).

Though I do find the error log a bit strange it should contain a edid probe that fails if in front of the kvm.

You need something like…

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

Edit…
Mmm I think I choose crt-1 due to nvidia-config iirc.

Hi deano_ferrari, I missed your post a few minutes ago, sorry about that!

But I think you have a great idea there, and I will try it first thing in the morning. It’s seven PM here, and my wife is waiting diner for me so I have to get home soonest (I’m at work).

Thanks everyone for the most useful suggestions!

Bill

Yes, give it a go. You may need to adjust the device reference in the ‘CustomEDID’ line to suit your video connection:

DFP-0: (dvi)
CRT-1: (vga)

as alluded to by FeatherMonkey

Edit…
Mmm I think I choose crt-1 due to nvidia-config iirc.

Hi All,

deano_ferrari definitely got me pointed in the right direction, but the “Acquire EDID” thing doesn’t seem to be available in nvidia-settings any more. The solution is actually much simpler now!

Here’s what I did (skipping all the stuff that didn’t work):

I connected the monitor directly to the computer and booted in the usual way. This gave me max resolution.

I then logged out of user mode and into “root.”

I navigated to /etc/X11/ and removed the existing xorg.conf.

I then opened up a terminal (remaining in X) and used the instruction: “nvidia-settings.” This brought up a graphical program with several options, but nothing about EDID. My monitor was detected accurately, as was the graphics card.

I went through the options, and where there was an AUTO option, as in resolution, I changed it to a specific resolution, in this case 1600 x 1200. I also specified a refresh rate.

Finally, I used the “Save to X configuration file” button and exited terminal.

When I checked in /etc/X11 my new xorg.conf file was there, and when I read it in gedit I could see much more info than was there when using “nvidia-xconfig” to create the same file. This got me excited!

I then backed out of everything and rebooted, first with the monitor still directly connected, and then via the KVM switch.

IT WORKED! I’m a happy man this morning, and it’s thanks to you guys with your generous help. I can’t thank you all enough!

Bill

Well done and thank you for sharing your solution.

I then opened up a terminal (remaining in X) and used the instruction: “nvidia-settings.” This brought up a graphical program with several options, but nothing about EDID. My monitor was detected accurately, as was the graphics card.

I went through the options, and where there was an AUTO option, as in resolution, I changed it to a specific resolution, in this case 1600 x 1200. I also specified a refresh rate.

Finally, I used the “Save to X configuration file” button and exited terminal.

Yes, that does sound a bit simpler than my suggestion. Good work. :slight_smile:

FWIW, my suggestion arose from reading about other users with problematic dispay hardware that don’t provide EDID correctly. This is a common cause of incorrect dispay resolution, especially when using DVI connections. Apparently there are Windows utilities that can aquire the EDID (128 bytes of data) and save as a file which can then be edited with a hex editor.

A linux utility that might work:

read-edid

Another reference about aquiring EDID info (amongst other topics):

Jon Lin’s Homepage on Buzzy

A get-edid utility I’ve just become aware of:

Absolutely!: Get EDID information

and a webpin search (for openSUSE 11.2):

Webpin

Should others stumble across this and need this fix … The info is correct all the way but the wording is a little ambigious also it is nvidia-settings i.e the gui.

http://img176.imageshack.us/img176/5354/edid.png

One thing I see is that you logged into a GUI as root. This can cause damage to user files. Better to do

kdesu nvidia-settings

or

gnomesu nvidia-settings

You should never log into a GUI as root. All can be done form a user account login.