Wie deaktiviere ich die automatische Monitorkonfiguration?

13

Ich lasse Ubuntu 16.04 (dev branch), XFCE als Desktopumgebung laufen.

Mein Computer ist an zwei Monitore angeschlossen. Eines über ein normales VGA-Kabel und das andere ist mit einem HDMI-Umschalter verbunden. Dieses Setup funktioniert einwandfrei, aber jedes Mal, wenn ich den HDMI-Umschalter vorübergehend auf eine andere HDMI-Verbindung umstelle, stellt Xorg fest, dass der Monitor getrennt wurde, und konfiguriert Xorg so, dass nur ein einziger Monitor verwendet wird. Wenn Sie den HDMI-Umschalter zurück auf meinen Computer schalten, wird der Dual-Monitor nicht reaktiviert benutze entweder ich muss das manuell mit auslösenxrandr

Wie kann ich verhindern, dass diese Art der automatischen Monitorerkennung und Neukonfiguration erfolgt? Ich möchte den HDMI-Umschalter umschalten können, ohne dass der Computer etwas tut.

Befehl zum Wiederherstellen des Multimonitor-Setups:

xrandr \
 --output HDMI-1 \
   --mode "1920x1080" \
   --panning "1920x1080+1280+0/0x0+0+0" \
 --output DVI-1-I \
   --mode "1280x1024" \
   --panning "1280x1024/0x0+0+0"

xrandr-Ausgabe bei regelmäßiger Verwendung:

Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 8192 x 8192
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 443mm x 249mm panning 1920x1080+1280+0
   1920x1080     60.00*+  60.00    50.00    59.94    59.93  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     74.76    70.00    59.98  
   1280x1024     75.02    60.02  
   1440x900      59.89    59.90  
   1280x960      60.00  
   1360x768      59.80    59.96  
   1280x800      59.91  
   1152x864      75.00    75.00    70.00    60.00  
   1280x720      60.00    50.00    59.94  
   1024x768      60.04    75.03    70.07    60.00  
   960x720       75.00    60.00  
   928x696       75.00    60.05  
   896x672       75.05    60.01  
   960x600       60.00  
   832x624       74.55  
   960x540       59.99  
   800x600       75.00    70.00    65.00    60.00    72.19    75.00    60.32    56.25  
   840x525       74.96    69.88    60.01    59.88  
   720x576       50.00  
   800x512       60.17  
   700x525       74.76    70.06    59.98  
   720x480       60.00    59.94  
   640x512       75.02    60.02  
   720x450       59.89  
   640x480       60.00    72.81    75.00    66.67    60.00    59.94  
   720x400       70.08  
   680x384       59.80    59.96  
   576x432       75.00    75.00    70.00    60.06  
   512x384       75.03    70.07    60.00  
   416x312       74.66  
   400x300       72.19    75.12    60.32    56.34  
   320x240       72.81    75.00    60.05  
DVI-I-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 359mm x 287mm
   1280x1024     60.02*+  75.02  
   1280x960      60.00  
   1280x800      74.93    59.81  
   1152x864      75.00  
   1280x768      74.89    59.87  
   1280x720      60.00  
   1024x768      75.08    75.03    70.07    60.00  
   1024x576      59.97  
   832x624       74.55  
   800x600       72.19    75.00    70.01    60.32    56.25  
   848x480       60.00  
   640x480       75.00    72.81    66.67    60.00  
   720x400       70.08  

xrandr-Ausgabe, wenn der HDMI-Umschalter auf eine andere Verbindung umgeschaltet wird:

Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 359mm x 287mm
   1280x1024     60.02*+  75.02  
   1280x960      60.00  
   1280x800      74.93    59.81  
   1152x864      75.00  
   1280x768      74.89    59.87  
   1280x720      60.00  
   1024x768      75.08    75.03    70.07    60.00  
   1024x576      59.97  
   832x624       74.55  
   800x600       72.19    75.00    70.01    60.32    56.25  
   848x480       60.00  
   640x480       75.00    72.81    66.67    60.00  
   720x400       70.08  

Noch ein paar Dinge, die ich versucht habe:

Finden Sie bei angeschlossenem Monitor die Modeline heraus:

$ xvidtune -show 
"1920x1080"   148.50   1920 2008 2052 2200   1080 1084 1089 1125 -hsync +vsync

Dann, wenn der Monitor nicht angeschlossen ist:

$ xrandr --newmode "1920x1080-new"   148.50   1920 2008 2052 2200   1080 1084 1089 1125 -hsync +vsync
$ xrandr --addmode HDMI-1 1920x1080-new
$ xrandr --output HDMI-1 --mode 1920x1080-new

Auf diese Weise kann ich das Display aktivieren, wenn es nicht verbunden ist. Andernfalls würde dies aufgrund des nicht vorhandenen Modus 1920 x 1080 fehlschlagen. Das Problem bleibt jedoch bestehen, wenn ich den HDMI-Umschalter umschalte, wird die Anzeige deaktiviert, auch wenn ich sie auf einen benutzerdefinierten Modus eingestellt habe.

Dies sind die udev-Ereignisse beim Trennen des Bildschirms mit dem HDMI-Umschalter:

$ udevadm monitor --property
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[41678.571099] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=3248
SUBSYSTEM=drm

UDEV  [41678.573432] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_01_00_0
ID_PATH=pci-0000:01:00.0
ID_PATH_TAG=pci-0000_01_00_0
MAJOR=226
MINOR=0
SEQNUM=3248
SUBSYSTEM=drm
TAGS=:uaccess:master-of-seat:seat:
USEC_INITIALIZED=31279519

Dies sind die udev-Ereignisse beim erneuten Aktivieren des Displays mit dem HDMI-Umschalter:

$ udevadm monitor --property
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[41696.104481] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=3249
SUBSYSTEM=drm

UDEV  [41696.105685] change   /devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_01_00_0
ID_PATH=pci-0000:01:00.0
ID_PATH_TAG=pci-0000_01_00_0
MAJOR=226
MINOR=0
SEQNUM=3249
SUBSYSTEM=drm
TAGS=:seat:master-of-seat:uaccess:
USEC_INITIALIZED=31279519

.

$ sudo lshw -c display
  *-display                 
       description: VGA compatible controller
       product: Redwood XT [Radeon HD 5670/5690/5730]
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 0
       bus info: pci@0000:01:00.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: pm pciexpress msi vga_controller bus_master cap_list rom
       configuration: driver=radeon latency=0
       resources: irq:55 memory:c0000000-cfffffff memory:fea20000-fea3ffff ioport:e000(size=256) memory:c0000-dffff
Grumbel
quelle
Ich gehe davon aus, dass der Monitor xrandrbeim erneuten Anschließen in aufgeführt ist. Könnten Sie die Ausgabe von veröffentlichen, xrandrwenn das Setup so ist, wie Sie es möchten? wir können es dann leicht automatisch wiederherstellen lassen, wenn die Verbindung wiederhergestellt wird. Und wie lautet Ihr xrandrBefehl zum " manuellen Auslösen " ?
Jacob Vlijm
Der Beitrag wurde aktualisiert. Ich möchte jedoch nicht nur die Konfiguration automatisch wiederherstellen, sondern auch, dass sie nicht in erster Linie durcheinander gebracht wird.
Grumbel
Dies ist höchstwahrscheinlich unerreichbar, es sei denn, Sie finden einen Grafiktreiber, der dies behebt. Das Problem wird durch die Tatsache verursacht, dass die Kommunikation zwischen dem Treiber und Ihrem Bildschirm bei der Verbindung fehlschlägt und die Standardeinstellungen wiederhergestellt werden. Sie benötigen eine Aktion, entweder über eine Tastenkombination oder automatisch.
Treffen
@Grumbel, könnten Sie die Ausgabe von sudo lshw -c displayder Frage hinzufügen . Wenn Sie über NVIDIA
user.dz am

Antworten:

0

Dies ist keine endgültige Antwort, sondern nur ein Hinweis in die richtige Richtung. Auf XFCE ist das xfsettingsdProgramm für die Behandlung des RRScreenChangeNotifyEreignisses und das Auslösen des Modusschalters verantwortlich. Die genaue Funktion finden Sie in xfce4-settings-4.12.0/xfsettingsd/displays.cZeile 77, die Funktion wird aufgerufen xfce_displays_helper_screen_on_event. Durch Deaktivieren der Funktion ändert sich der Modus nicht mehr, wenn ein neuer Monitor angeschlossen wird.

Debug-Informationen erhalten Sie mit:

DISPLAY=:0 XFSETTINGSD_DEBUG=512 xfsettingsd --replace --no-daemon
Grumbel
quelle
0

Für andere Cinnamon und Gnome gibt es hier eine Lösung :

Zimt:

gsettings set org.cinnamon.settings-daemon.plugins.xrandr active false

Gnom:

gsettings set org.gnome.settings-daemon.plugins.xrandr active false
Grumbel
quelle