GTX480 can it run headless? Does CustomEDID option work?

I’ve been attempting to setup my GTX480 for dual x screen, one with an attached monitor(DISPLAY=0) the other without(DISPLAY=1). The second screen without monitor will be used for automated rendering jobs and I won’t need to see the hundreds of windows while the jobs run. I used nvidia-settings tool to get 2 screen setup with 2 monitors plugged in, then I attempted to remove one of the monitor by providing the edid.bin file saved from nvidia-settings using the CustomEDID option. It doesn’t work! The error I got from startx is:

155 (EE) Mar 08 08:50:16 NVIDIA(0): Failed to assign any connected display devices to X screen0
156 (EE) Mar 08 08:50:16 NVIDIA(0): Failing initialization of X screen 0

I’ll attach my xorg.conf as well.

Any idea? Can this even work? Did nvidia “apple” us(ie. force us to pay for a Quadro to get this seemingly trivial feature)? I sincerely hope not, that would tarnish nvidia’s other wise spotless reputation in my book.

A big thanks to anyone who could help!

xorg-conf.txt (2.67 KB)

You can try using

Option "UseDisplayDevice" "none"

but please be aware that multiple simultaneous X servers (so-called “multiseat” configurations) are not supported and you are likely to run into problems.

I may have misunderstood. Did you mean DISPLAY=:0 and DISPLAY=:1, or DISPLAY=:0.0 and DISPLAY=:0.1? You should be able to run a second X screen within a single X server by using the ConnectedMonitor option to make the X driver pretend that a monitor is connected to the second screen when there really isn’t one. You can also configure the X server with a gap between the screens to prevent the pointer from moving from one to the other. However, this relies on your applications honoring the screen part of the $DISPLAY variable so they don’t interfere with your work on screen :0.0.

sorry for being so sloppy, I meant DISPLAY=:0.0, and DISPLAY:0.1. And that works OK as long as both the monitors are plugged in when X starts. I want my main monitor plugged while the other unplugged. Adding the ConnectedMonitor option to the second screen prevents X from starting at all. With an error

NVIDIA(1) Failed to assign any connected display devices to screen 1
NVIDIA(1) Failing initialization of X screen 1

Here is my xorg.conf file. I used nvidia-settings to generate it, I saved the edid.bins, and added those CustomEDID lines. Not sure if they should be used with ConnectedMonitor?

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 310.19  (buildmeister@swio-display-x86-rhel47-08.nvidia.com)  Thu Nov  8 02:08:55 PST 2012

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" RightOf "Screen1"
    Screen      1  "Screen1" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "HP LP3065"
    HorizSync       49.3 - 98.5
    VertRefresh     59.9 - 59.9
    Option         "DPMS"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL 2408WFP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 480"
    BusID          "PCI:5:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 480"
    BusID          "PCI:5:0:0"
    Screen          0
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "DFP: 2560x1600_60 +0+0; DFP: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    #Option         "ConnectedMonitor" "CRT"
    Option         "CustomEDID" "CRT:/etc/X11/dell-edid.bin"
    Option         "metamodes" "CRT: 1920x1200_60 +0+0; CRT: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

no luck yet, has anyone been able to do this?

???

ConnectedMonitor is a little weird, because it applies on a per-device basis and not a per-screen basis. Basically, it overrides what the driver thinks is connected. You need to set it on screen 0 so that it knows that there are two display devices “connected” so that it can initialize screen 0 and still assign another display device to screen 1. The xorg.conf makes this hard because it doesn’t have a way of specifying per-device options.

The easiest option is probably to set ConnectedMonitor on both screens the same way, and to specify both devices you want to use. E.g.,

Option "ConnectedMonitor" "CRT-0, CRT-1"

If the driver picks the monitors in the wrong order by default, you can use the UseDisplayDevice option to affect that decision. So for screen 0, you could do something like

Option "ConnectedMonitor" "CRT-0, CRT-1"
Option "UseDisplayDevice" "CRT-1"