Grafikkarte mehrere Monitore
Problem
Meine ASUStek STRIX-GTX1050TI-O4G-GAMING Grafikkarte hat 4(!) Anschluesse 2 x DVI-D, 1 x HDMI 2.0b und 1 x DisplayPort 1.4.
Einmal ist es mir tatsaechlich gelungen vier Monitore gleichzeitig mit einem Bild zu versorgen. Sobald aber ein Monitor ausgeschaltet wurde, war eine Reaktivierung nicht mehr moeglich.
Da zwei Monitore TV-Geraete/Beamer sind, wollte ich nicht ein riesiges Display, bei dem alle Screens nebeneinander liegen, sondern einzelne Screens (3) um Programme leichter direkt auf einem Screen platzieren zu koennen.
Das schlimme ist, durch die vielen Versuche ging alles irgendwie immer weniger, bis ich zum Schluss, egal welche Kombination ich waehlte, nur noch einen Monitor und einen TV ans laufen bekam.
Loesungshinweise
Leider steht im Datenblatt kein Hinweis auf die maximale Anzahl gleichzeitiger Nutzung von angeschlossenen Monitoren. Also gehe ich mal davon aus, dass solange die maximale Displaygroesze von 7680x4320 nicht ueberschritten wird, bis zu vier unterschiedliche Bilder ausgegeben werden koennen. Bei vier FullHD Screens sollte also, die maximale Displaygroesze weder horizontal noch vertikal ueberschritten sein.
xrandr, inxi, nvidia-setting, ...
Starten wir mal mit xrandr.
chris@server:> xrandr -d :0.0 -q Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767 DP-0 disconnected (normal left inverted right x axis y axis) DP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 521mm x 293mm
1920x1080 60.00*+ 1680x1050 59.95 1600x1200 60.00 1440x900 59.89 1400x1050 59.98 1280x1024 75.02 60.02 1280x960 60.00 1152x864 75.00 1024x768 75.03 70.07 60.00 800x600 75.00 72.19 60.32 56.25 640x480 75.00 72.81 59.94
DVI-D-1 connected (normal left inverted right x axis y axis)
1920x1080 60.00 + 59.94 50.00 23.98 60.05 60.00 50.04 1360x768 60.02 1280x720 60.00 59.94 50.00 1024x768 60.00 800x600 60.32 720x576 50.00 720x480 59.94 640x480 59.94 59.93
chris@server:> xrandr -d :0.1 -q Screen 1: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767 HDMI-0 disconnected primary (normal left inverted right x axis y axis) chris@server:> xrandr -d :0.2 -q Screen 2: minimum 8 x 8, current 640 x 480, maximum 32767 x 32767 DVI-D-0 disconnected primary (normal left inverted right x axis y axis)
i2cdetect -l i2c-3 i2c NVIDIA i2c adapter 8 at f:00.0 I2C adapter i2c-1 i2c NVIDIA i2c adapter 6 at f:00.0 I2C adapter i2c-2 i2c NVIDIA i2c adapter 7 at f:00.0 I2C adapter i2c-0 i2c NVIDIA i2c adapter 1 at f:00.0 I2C adapter
Also ddc sollte in der Lage sein alle vier angschlossenen Monitore zu kontaktieren.
ddcutil detect
Display 1
I2C bus: /dev/i2c-1
EDID synopsis:
Mfg id: HPN - UNK
Model: HP E24t G5
Product code: 14602 (0x390a)
Serial number: CNC4191B0T
Binary serial number: 1684XXXX (0xXXXXXXXX)
Manufacture year: 2024, Week: 19
VCP version: 2.2
Display 2
I2C bus: /dev/i2c-2
DRM connector: card0-DP-1
EDID synopsis:
Mfg id: HSD - HannStar Display Corp
Model: HE247DPB
Product code: 18871 (0x49b7)
Serial number: 123456789XXXX
Binary serial number: 0 (0x00000000)
Manufacture year: 2012, Week: 26
VCP version: 2.1
Invalid display
I2C bus: /dev/i2c-3
DRM connector: card0-HDMI-A-1
EDID synopsis:
Mfg id: SNY - Sony
Model: SONY TV
Product code: 10241 (0x2801)
Serial number:
Binary serial number: XXXXXXXX (0xXXXXXXX)
Manufacture year: 2007, Week: 1
DDC communication failed
I2C/-0 wird nicht erkannt, der HP hat kein DRM und der Sony hat ein Kommunikationproblem. Na toll.
Hier ist der Grund: Der Sony am i2c-3 hat keinen DDC-Chip (Adresse 37), sondern nur einen EDID-Chip (0x50). Der Samsung am i2c-0 hat weder noch und wird somit erst gar nicht erkannt.
server:~ # i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- 29 -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
server:~ # i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
server:~ # i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- 4a 4b -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
server:~ # i2cdetect -y 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- 3a 3b -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Slave addresses x50 (EDID) and x37 (DDC). xrandr has ways other than I2C to access the EDID, e.g. by BIOS calls Daraus koennte man jetzt schlieszen ,dass i2c-0 DVI-D-0, i2c-1 DVI-D-1, i2c-2 DP1 und i2c-3 HDMI ist.
Anzahl Anschluesse/Displays/Screens
Hinweise aus dem Netz
Also ich glaub die ganze gtx 1000 Serie unterstützt 4 Displays. Sonst kannst du einfach an die onboard was anschließen oder ne 2. Grafikkarte nehmen
Das ist schon korrekt, viele Grafikkarten können nicht mit 3 Bildschirmen umgehen, auch wenn mehr Anschlüsse vorhanden sind. Dies ist auch vom Hersteller abhängig. An meiner GTX 1050 TI Asus ROG Strix kann ich z.B. problemlos 3 Bildschirme betreiben.
Wenig hilfreiche Hinweise gibt es auch. Gut find ich das mit dem VGA-Tipp;-))

Viele Foreneintraege koennte man sich sparen, wenn man einfach mal die Dokumentation liest.
Most NVIDIA GPUs based on the Kepler¹ architecture, or newer, support driving up to four display devices simultaneously. Most NVIDIA GPUs older than Kepler¹ support driving up to two display devices simultaneously.
¹Kepler-Architektur (GeForce 600/700 Serien, 2012)
Ueberpruefung
Dabei kann es doch so einfach sein Klarkeit herzustellen.
Beispiel #1 NVIDIA Quadro M2000
nvidia-settings -q dpys
8 Display Devices on worker:0
[0] worker:0[dpy:0] (DP-0) (connected, enabled)
Has the following names:
DFP
DFP-0
DPY-EDID-87977d39-dc91-e2a7-5b42-4bf2d8422cd8
DPY-0
DP-0
Connector-2
[1] worker:0[dpy:1] (DP-1)
Has the following names:
DFP
DFP-1
DPY-1
DP-1
Connector-2
[2] worker:0[dpy:2] (DP-2)
Has the following names:
DFP
DFP-2
DPY-2
DP-2
Connector-3
[3] worker:0[dpy:3] (DP-3)
Has the following names:
DFP
DFP-3
DPY-3
DP-3
Connector-3
[4] worker:0[dpy:4] (DP-4) (connected, enabled)
Has the following names:
DFP
DFP-4
DPY-EDID-ed2ec75d-f371-e005-c6ea-73642b39d8a8
DPY-4
DP-4
Connector-1
[5] worker:0[dpy:5] (DP-5)
Has the following names:
DFP
DFP-5
DPY-5
DP-5
Connector-1
[6] worker:0[dpy:6] (DP-6)
Has the following names:
DFP
DFP-6
DPY-6
DP-6
Connector-0
[7] worker:0[dpy:7] (DP-7)
Has the following names:
DFP
DFP-7
DPY-7
DP-7
Connector-0
Diese Karte hat tatsaechlich 4 DP Anschluesse und koennte an jedem der 4 Connectoren je 2 Monitor betreiben (MST?).
chris@worker:~> ddcutil detect
Display 1
I2C bus: /dev/i2c-2
DRM connector: card0-DP-1
EDID synopsis:
Mfg id: SAM - Samsung Electric Company
Model: U28E590
Product code: 3149 (0x0c4d)
Serial number: H4LN609169
Binary serial number: 1113216074 (0x425a544a)
Manufacture year: 2020, Week: 26
VCP version: 2.0
Display 2
I2C bus: /dev/i2c-4
DRM connector: card0-DP-3
EDID synopsis:
Mfg id: SAM - Samsung Electric Company
Model: U28E590
Product code: 3149 (0x0c4d)
Serial number: HTPKC14310
Binary serial number: 810375238 (0x304d5846)
Manufacture year: 2018, Week: 51
VCP version: 2.0
Und hier hat wieder 5-jaehrige Schimpanse zugeschlagen. Laut nvidia-setting sind die 4 Connectoren
- 0: DP-6 und DP-7
- 1: DP-4 und DP-5 Monitor (links an card0-DP-3) 0MX......4310J
- 2: DP-0 und DP-1 Monitor (rechts an card0-DP-1) BZT......9169J
- 3: DP-2 und DP-3
Die Karte besitzt 5 (!) I2C-Bus Adapter.
i2cdetect -l i2c-3 i2c NVIDIA i2c adapter 7 at 4:00.0 I2C adapter i2c-1 i2c NVIDIA i2c adapter 2 at 4:00.0 I2C adapter i2c-4 i2c NVIDIA i2c adapter 8 at 4:00.0 I2C adapter i2c-2 i2c NVIDIA i2c adapter 6 at 4:00.0 I2C adapter i2c-0 smbus SMBus I801 adapter at 0780 SMBus adapter i2c-5 i2c NVIDIA i2c adapter 9 at 4:00.0 I2C adapter
Die Zuordnung zu den Connectoren wirft Fragen auf. Connector 1 -> i2c-2 und Connector 2 -> i2c-4.
Beispiel #2 NVIDIA GeForce GTX 1050 Ti
(per ssh) server:~ # DISPLAY=:0 nvidia-settings -q dpys
5 Display Devices on server:0
[0] server:0[dpy:0] (DVI-D-0) (connected)
Has the following names:
DFP
DFP-0
DPY-EDID-aab368ea-d801-739e-62ca-6109e2567e6d
DPY-0
DVI-D-0
Connector-0
[1] server:0[dpy:1] (HDMI-0)
Has the following names:
DFP
DFP-1
DPY-1
HDMI-0
Connector-1
[2] server:0[dpy:2] (DP-0)
Has the following names:
DFP
DFP-2
DPY-2
DP-0
Connector-2
[3] server:0[dpy:3] (DP-1) (connected, enabled)
Has the following names:
DFP
DFP-3
DPY-EDID-05c8daf9-506c-f4bb-5bf1-0a886a401315
DPY-3
DP-1
Connector-2
[4] server:0[dpy:4] (DVI-D-1)
Has the following names:
DFP
DFP-4
DPY-4
DVI-D-1
Connector-3
Diese Karte hat 4 Anschluesse: 2 DVI-D (nebeneinander 2 Slots Connector-0 und Connector-3), HDMI (Connector-1) und ein DP (Connector-2)
Was mir auffaellt.
- DVI-D-0 ist connected, aber nicht enabled
- HDMI-0: Der angschlossene Sony TV ist nicht connected
- DVI-D-1: Der angschlossene Samsung TV ist nicht connected
Vielleicht hilft die Option "ConnectedMonitor".
Option "ConnectedMonitor" "DVI-D-0, DVI-D-1, HDMI-0, DP-1"
Vergleich Xorg.conf
Wie ist also die Hardware in Xorg.conf hinterlegt?
Quadro M2000
Die Input-Devices habe ich rausgenommen.
more /etc/X11/xorg.conf
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 550.127.05
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Samsung U28E590"
HorizSync 30.0 - 135.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro M2000"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DP-4"
Option "metamodes" "DP-4: nvidia-auto-select +0+0, DP-0: nvidia-auto-select +3840+0"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Was schon mal auffaellt, obwohl 2 Monitore an 2 unterschiedlichen Displayports angeschlossen sind taucht nur ein Monitor0 auf. (NB: VendorName "Unkown" Wer hat denn da wieder geschlafen?)
NVidia xorgconfoptions [5] nur fuer den Treiber 325.15 verfuegbar(???).
Die beiden Options von Interesse sind:
- nvidiaXineramaInfoOrder
The option string is a comma-separated list of display device names. The display device names can either be general (e.g, "CRT", which identifies all CRTs), or specific (e.g., "CRT-1", which identifies a particular CRT). Not all display devices need to be identified in the option string; display devices that are not listed will be implicitly appended to the end of the list, in their default order. Note that nvidiaXineramaInfoOrder tracks all display devices that could possibly be connected to the GPU, not just the ones that are currently enabled. When reporting the Xinerama information, the NVIDIA X driver walks through the display devices in the order specified, only reporting enabled display devices.
- MetaModes (GroszKleinSchreibung?²)
This option describes the combination of modes to use on each monitor when using TwinView or SLI Mosaic Mode. See Chapter 12, Configuring Multiple Display Devices on One X Screen and Chapter 29, Configuring SLI and Multi-GPU FrameRendering for details. Default: string is NULL.
²Just as in all X config entries, spaces are ignored and all entries are case insensitive.
Diese Seite bringt hoffentlich Klarheit.
Wenn auf der GPU mehrere X-Bildschirme konfiguriert sind, versucht der NVIDIA X-Treiber, Anzeigegeräte und GPU-Ressourcen für diese anderen X-Bildschirme zu reservieren (unter Berücksichtigung der X-Konfigurationsoptionen „UseDisplayDevice“ und „MetaModes“ jedes X-Bildschirms) und weist dann alle verbleibenden Ressourcen dem ersten auf der GPU konfigurierten X-Bildschirm zu.
Was bei meiner QuadroM2000Config weiterhin irritiert, ist dass der 2. Monitor keine eigene Section besitzt und nur ueber DP-0 in den MetaModes auftaucht.
The details of how this works are documented in the nv-control-dpy.c sample NV-CONTROL client in the nvidia-settings source tarball.
GTX 1050 Ti 4 Monitore/TVs
Anmerkung:
- Alle vier Monitore/TVs haben FullHD.
- Die beiden Monitore zeigen das gleiche Bild (Desktop). Sind also geklont.
- Die beiden TVs haben jeweils einen eigenen Screen.
Hier zum Nachvollziehen.
Die xorg.conf die nach viel Probiererei auf einmal nicht mehr ging.
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 550.135
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" 1920 0
Screen 2 "Screen2" 3840 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from data in "/etc/sysconfig/mouse"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "yes"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "HP"
ModelName "HP Inc. HP E24t G5"
HorizSync 30.0 - 85.0
VertRefresh 50.0 - 75.0
Option "DPMS"
Option "Enable" "True"
Option "Primary" "True"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor1"
VendorName "Sony"
ModelName "SONY TV"
HorizSync 14.0 - 68.0
VertRefresh 48.0 - 62.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor2"
VendorName "SAMSUNG"
ModelName "SAMSUNG TV"
HorizSync 26.0 - 81.0
VertRefresh 24.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce GTX 1050 Ti"
BusID "PCI:15:0:0"
Screen 0
Option "UseHotplugEvents" "false"
Option "AllowEmptyInitialConfiguration" "true"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce GTX 1050 Ti"
BusID "PCI:15:0:0"
Screen 1
Option "UseHotplugEvents" "false"
Option "AllowEmptyInitialConfiguration" "true"
EndSection
Section "Device"
Identifier "Device2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce GTX 1050 Ti"
BusID "PCI:15:0:0"
Screen 2
Option "UseHotplugEvents" "false"
Option "AllowEmptyInitialConfiguration" "true"
EndSection
Section "Screen"
# Removed Option "metamodes" "DP-1: nvidia-auto-select +0+0, DVI-D-0: 1920x1080 +0+0"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DVI-D-0"
Option "metamodes" "DVI-D-0: nvidia-auto-select +0+0 {AllowGSYNC=Off}"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "HDMI-0"
Option "metamodes" "HDMI-0: nvidia-auto-select +0+0 {AllowGSYNC=Off}"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen2"
Device "Device2"
Monitor "Monitor2"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DVI-D-1"
Option "metamodes" "DVI-D-1: nvidia-auto-select +0+0 {AllowGSYNC=Off}"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Was auffaellt.
- Removed Option "metamodes" "DP-1: nvidia-auto-select +0+0, DVI-D-0: 1920x1080 +0+0" Warum? Das muss doch rein!
- Option "DPMS" bei den TVs muss/sollte raus!
- Option "Enable" "True" kann eigentlich bei allen Monitor-Sections rein.
Darueber hinaus kann vielleicht
Option "ConnectedMonitor" "DVI-D-0, DVI-D-1, HDMI-0, DP-1"
auch nichts schaden?
Beifang
Nvidia (Texture) Tools:
- nvtop: interactive GPU process viewer (Wie top, aber halt fuer die Grafikkarte. Einfach ausprobieren.)
- nvzoom - Scales the given image.
- nvtestsuite TODO
- nvidia-sleep.sh: Bash-Script Interessant ist die das Ansprechen des NVIDIA-Treiber ueber echo "$1" > /proc/driver/nvidia/suspend
- nvhdrtest HDR High Dynamic Range Image Image Viewer
- nvassemble
- nvcompress
- nvdecompress: --help
- nv-gnome-thumbnailer
- nvddsinfo