Have a multi-monitor extended display with monitors on two identical GPUs.
Tested each GPU and all of its display ports. (success)
NOTE: each GPU has 1 display, 1 HDMI, and 2 DVI ports.
Tested if Nvidia X Server can see both GPU when plugged in at same time. (success)
NOTE: One GPU is disabled by default.
I have attempted a number of configurations with the xorg.conf file. The closest to success I get most trials is:
#xorg.file for 6-screen, 2-GPU setup
###############################################################
# Mouse Configuration options
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
# Keyboard Configuration options
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
###############################################################
# Monitor Configuration options
Section "Monitor"
Identifier "Monitor0"
VendorName "Dell, Inc."
ModelName "DELL E207WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Dell, Inc."
ModelName "DELL E207WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor2"
VendorName "Dell, Inc."
ModelName "DELL E207WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor3"
VendorName "Dell, Inc."
ModelName "DELL E207WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor4"
VendorName "Dell, Inc."
ModelName "DELL E2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor5"
VendorName "Dell, Inc."
ModelName "DELL E2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
EndSection
################################################################
# GPU Configuration options
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 970"
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 970"
BusID "PCI:2:0:0"
EndSection
################################################################
# device & monitor bindings configuration options
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
Monitor "Monitor1"
Monitor "Monitor2"
Monitor "Monitor3"
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "DVI-I-1: nvidia-auto-select +1680+0, HDMI-0: nvidia-auto-select +3360+0, DP-1: nvidia-auto-select +5040+0, DVI-D-0: nvidia-auto-select +0+0"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor4"
Monitor "Monitor5"
Option "Stereo" "0"
Option "metamodes" "DVI-I-1: nvidia-auto-select +1680+1050, DVI-D-0: nvidia-auto-select +3360+1050"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
#############################################################
# Xinerma & Compsite extensions
Section "Extensions"
Option "Composite" "Disable"
EndSection
##############################################################
# Screen bindings configuration options
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 1050
Screen 1 "Screen1" Above "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "1"
EndSection
###########################################################
# Unused section
Section "Files"
EndSection
This is not an infinite login loop question. The infinite login loop is a symptom of my problem.
There are several infinite loop question/answers, those assume you've made a mistake and want to "fix" the problem by resetting to default. Here are several of those reset to default "fixes' that are not my problem.
I do not want to reset to default, and can return my system to working conditions on one graphics cards after each attempt. I am asking how to further change settings/configurations so as to get my goal (without the login loop)?
Alright, I answered my question through some extensive research and testing. If you have a multi-gpu, multi-monitor system that you wanted a unified desktop across (this means windows snap to monitors, and can drag program windows across monitors regardless of which monitor is on which gpu). Then the short answer is SLI/base Mosaic for Nvidia graphics cards.
However, There are multiple points of information that are lost unless you spend 60+ hours reading documentation and talking with others (which is what I did).
I am going to give multiple links and clarification points that should help with other peoples frustration and endeavors. Understand all of the commands and advice is from a Ubuntu 16.04, Unity DE, Nvidia Geforce driver v380+ standpoint, and may not work for other systems and hardware.
There are several points of [mis]communication between:
When using nvidia-settings
, Nvidia will configure and send misinformation to both x server and RandR and then internally handle the logic itself.
Nvidia has its own xinerama separate from the X server xinerama. If you enable xinerama in the xorg.conf file, that is the X server's own Xinerma not Nvidia's (So don't do that if you are trying to do things through nvidia-settings
.
Nvidia will place all monitors under 1 screen and present this screen as a unified desktop to X server, while using its own internal xinerama logic to allow RandR to see the separate monitors properly.
nvidia-settings
natural way of of managing the desktop (I.E. disabling Nvidia's internal xinerama). This will then require X server's xinerama to be enabled in the xorg.conf file as a result (however this tends to break one of the unified desktop expectations that I mentioned at the beginning).End of Nvidia --> RandR & X server explanations
How Nvidia uses the xorg.conf file is not reflective of what you read about in X server, X org, and xorg.conf documentation. Instead you need to focus on reading Nvidia documentation. However pay attention to the URL when you go to the docs. The number before '/README/' needs to be your Nvidia driver version number, which is the '390.42' in this example URL below. A lot of google hits to nvidia-settings documentation are really old docs to old drivers. This will throw you through a loop if you get old documentation. Example:
http://us.download.nvidia.com/XFree86/Linux-x86_64/390.42/README/index.html
Section "Screen"
of a xorg.conf file to clarify.Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "GPU-0.DFP-0: nvidia-auto-select +0+0,
GPU-0.DFP-4: nvidia-auto-select +1680+0,
GPU-1.DFP-0: nvidia-auto-select +3360+0,
GPU-1.DFP-4: nvidia-auto-select +5040+0,
Option "MultiGPU" "Off"
Option "SLI" "on"
Option "BaseMosaic" "on"
SubSection "Display"
Depth 24
EndSubSection
EndSection
metamode
can be specific
to which gpu and port to use.MultiGPU
is not referring to the number of graphics cards on your motherboard.A less ambiguous Section Screen
is:
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-I-1: nvidia-auto-select +0+0,
GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-D-0: nvidia-auto-select +1680+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-I-1: nvidia-auto-select +3360+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-D-0: nvidia-auto-select +5040+0"
Option "MultiGPU" "Off"
Option "SLI" "on"
Option "BaseMosaic" "on"
SubSection "Display"
Depth 24
EndSubSection
EndSection
End of Nvidia --> xorg.conf
So The eventual answer is SLI Mosiac is needed when using nvidia-settings
for the unified desktop I want. However, It will only allow three screens to be enabled across 2 or more GPUs if they are not Quadro or NVS selected GPU families. This is not because the technology of my precious Geforce GTX 970's cant handle it, it's because Nvidia artificially limited this in the nvidia-settings
code to promote their newer GPU. I can note this from both this Nvidia forum, and from looking at the source code in testing repository.
In fact, originally you could have more than 3 screens across 2 non-selected GPU up until 296 driver where they forced the change.
If you do attempt anyways without the proper GPU it will result in all screens being shown in both RandR GUI as well as Nvidia-settings GUI. However, you will notice all but three monitors will be disabled, and they can only be enabled if you disable 1 of the 3 already enabled.
xrandr --version
xrandr --listproviders
sudo Xorg -version
sudo lspci -vvv |grep -i -A 20 nvidia
nvidia-smi
nvidia-xconfig --query-gpu-info
nvidia-settings
cat /var/log/Xorg.0.log
nvidia-xconfig -t
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Dell, Inc."
ModelName "DELL E207WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Geforce GTX 970"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-I-1: nvidia-auto-select +0+0,
GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-D-0: nvidia-auto-select +1680+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-I-1: nvidia-auto-select +3360+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-D-0: nvidia-auto-select +5040+0"
#GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DP-1: nvidia-auto-select +1680+1050,
#GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.HDMI-0: nvidia-auto-select +0+1050,
#GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.HDMI-0: nvidia-auto-select +3360+1050,
#GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DP-1: nvidia-auto-select +5040+1050"
Option "MultiGPU" "Off"
Option "SLI" "on"
Option "BaseMosaic" "on"
SubSection "Display"
Depth 24
EndSubSection
EndSection