¿Cómo deshabilitar la configuración automática del monitor?

14

Estoy ejecutando Ubuntu 16.04 (rama de desarrollo), XFCE como entorno de escritorio.

Mi computadora está conectada a dos monitores. Uno a través del cable VGA normal y el otro está conectado a un conmutador HDMI. Esa configuración funciona bien, pero cada vez que cambio temporalmente el conmutador HDMI a otra conexión HDMI, Xorg detecta que el monitor se ha desconectado y reconfigura a Xorg para que solo use un solo monitor, al cambiar el conmutador HDMI a mi computadora no se reactiva el monitor dual usar cualquiera, tengo que activarlo manualmente conxrandr

¿Cómo puedo evitar que ocurra este tipo de detección y reconfiguración automática del monitor? Me gustaría poder cambiar el conmutador HDMI sin que la computadora haga nada.

Comando utilizado para restaurar la configuración de varios monitores:

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

Salida de xrandr en uso regular:

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  

Salida xrandr cuando el conmutador HDMI se cambia a una conexión diferente:

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  

Algunas cosas más que probé:

Con el monitor conectado, descubra la línea de modo:

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

Luego con el monitor desconectado:

$ 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

Esto me permite activar la pantalla cuando estoy desconectado, lo que de otro modo fallaría debido al modo inexistente 1920x1080. Sin embargo, el problema persiste, si cambio el HDMI Switcher, la pantalla se deshabilita, incluso si la configuro en un modo personalizado.

Estos son los eventos udev al desconectar la pantalla con el conmutador HDMI:

$ 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

Estos son los eventos de udev cuando se vuelve a habilitar la pantalla con el conmutador HDMI:

$ 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
fuente
¿Asumo que el monitor aparece en la lista xrandrcuando se vuelve a conectar? ¿Podría publicar la salida de xrandrcuando la configuración es como desea? entonces podemos hacer que se restaure automáticamente al volver a conectar. Además, ¿cuál es su xrandrcomando para " activar manualmente ".
Jacob Vlijm
Se actualizó la publicación. Sin embargo, no quiero restaurar automáticamente la configuración, quiero que no se estropee en primer lugar.
Grumbel
Lo más probable es que esté fuera de alcance, a menos que encuentre un controlador de gráficos que lo corrija. El problema se debe al hecho de que la comunicación entre el controlador y su pantalla falla en la conexión, saltando a los valores predeterminados. Necesita algún tipo de acción, ya sea mediante una tecla de acceso directo o de forma automática. Haz tu elección,
arréglala
@Grumbel, ¿podría agregar el resultado de sudo lshw -c displayla pregunta? Si tienes nvidia, prueba la respuesta en askubuntu.com/q/858798/26246
user.dz

Respuestas:

2

Esta no es una respuesta final, solo un puntero en la dirección correcta. En XFCE, el xfsettingsdprograma es responsable de manejar el RRScreenChangeNotifyevento y activar el interruptor de modo, la función exacta se puede encontrar en la xfce4-settings-4.12.0/xfsettingsd/displays.clínea 77, se llama a la función xfce_displays_helper_screen_on_event. Deshabilitar la función hará que el modo ya no cambie cuando se conecte un nuevo monitor.

La información de depuración se puede obtener con:

DISPLAY=:0 XFSETTINGSD_DEBUG=512 xfsettingsd --replace --no-daemon
Grumbel
fuente
1
Gracias por la sugerencia. Inhabilité el manejo de RRScreenChangeNotify y solucionó muchos problemas en mi configuración, incluidos los problemas en los que los monitores se activaban inmediatamente después de la suspensión.
Jim Paris
0

Para otros Cinnamon y Gnome se puede encontrar una solución aquí :

Canela:

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

Gnomo:

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