Ubuntu 20.04 pierde la resolución del monitor después de despertarse del modo de suspensión

Ubuntu 20.04 pierde la resolución del monitor después de despertarse del modo de suspensión

Tengo una Nvidia RTX 3070 y un monitor Samsung C49RG90. El monitor está conectado a la tarjeta de video a través de HDMI. Todo funciona bien, a menos que suspenda el sistema y luego lo vuelva a activar. Cuando eso sucede, la resolución cambia a 1024x768. Puedo iniciar sesión y abrir el panel de control de Nvidia y volver a configurarlo a la resolución correcta, pero si lo pongo en suspensión nuevamente, la resolución siempre vuelve a 1024x768.

Estoy usando la versión 470.86 del controlador Nvidia, pero las versiones anteriores se comportan de la misma manera.

Cuando configuro manualmente la resolución después de activar y luego ejecuto xrandr, aparece esto:

Screen 0: minimum 8 x 8, current 5120 x 1440, maximum 32767 x 32767
HDMI-0 connected primary 5120x1440+0+0 (normal left inverted right x axis y axis) 1mm x 1mm
   3840x1080     59.97 +
   5120x1440     59.98*   29.98  
   3840x2160     59.94    50.00    29.97    25.00    23.98  
   2560x1440     59.95  
   2560x1080     60.00    59.94  
   1920x1080     60.00    59.94    50.00  
   1680x1050     59.95  
   1600x900      60.00  
   1440x900      59.89  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)

Cuando pongo la máquina en suspensión y luego la vuelvo a activar y luego la ejecuto xrandr, aparece esto:

Screen 0: minimum 8 x 8, current 5120 x 1440, maximum 32767 x 32767
HDMI-0 connected primary 1024x768+3327+362 (normal left inverted right x axis y axis) 0mm x 0mm panning 5120x1440+0+0
   3840x1080     59.97 +
   5120x1440     59.98    29.98  
   3840x2160     59.94    50.00    29.97    25.00    23.98  
   2560x1440     59.95  
   2560x1080     60.00    59.94  
   1920x1080     60.00    59.94    50.00  
   1680x1050     59.95  
   1600x900      60.00  
   1440x900      59.89  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)
  1024x768 (0x208) 94.500MHz +HSync +VSync
        h: width  1024 start 1072 end 1168 total 1376 skew    0 clock  68.68KHz
        v: height  768 start  769 end  772 total  808           clock  85.00Hz

Aquí está mi xorg.confarchivo:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 470.57.01

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

Section "Files"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
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     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Samsung C49RG9x"
    HorizSync       30.0 - 160.0
    VertRefresh     24.0 - 120.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GeForce RTX 3070"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "5120x1440 +0+0; 800x600 +0+0; 640x480 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Entiendo que probablemente se necesitará más información, pero no estoy seguro de dónde buscar.

Respuesta1

Después de un par de años de investigar esto ocasionalmente, creo que resolví el problema.

Primero,esta preguntaen los foros de desarrolladores de Nvidia es prácticamente idéntico a mi problema. Al igual que el autor de esa pregunta, creo que la raíz del problema es que mi monitor no proporciona información EDID cuando sale del modo de suspensión, lo que hace que Ubuntu seleccione una resolución predeterminada de 1024x768.

Para solucionar esto, exporté mi EDID como se describeaquí. Guardé el archivo como ASCII, le puse un nombre crg-edit.txty luego lo moví a /etc/X11. Sin embargo, lo hicenoejecute los comandos en las secciones "Cargando EDID de pantalla desde archivo". En lugar de eso, abrí manualmente mi /etc/X11/xorg.confarchivo y lo edité como tal (ver comentarios en la configuración):

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "CustomEDID" "GPU-0.HDMI-0:/etc/X11/crg-edid.txt" # I added this line
    Option         "metamodes" "5120x1440 +0+0" # I removed the 1024x768 option from here
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Después de estos pasos, el monitor saldría de la suspensión con una resolución más alta de 3840x1080, pero aún no era mi resolución objetivo de 5120x1440. Así que corrí xrandr --verbosey noté que por alguna razón se prefería esa resolución:

...
  3840x1080 (0x1be) 266.500MHz +HSync -VSync +preferred
        h: width  3840 start 3888 end 3920 total 4000 skew    0 clock  66.62KHz
        v: height 1080 start 1083 end 1093 total 1111           clock  59.97Hz
  5120x1440 (0x1bf) 469.000MHz +HSync -VSync *current
        h: width  5120 start 5168 end 5200 total 5280 skew    0 clock  88.83KHz
        v: height 1440 start 1443 end 1453 total 1481           clock  59.98Hz
...

Después de mirar un poco más, encontréestepregunta. Luego edité mi xorg.confnuevamente de la siguiente manera:

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Samsung C49RG9x"
    HorizSync       30.0 - 160.0
    VertRefresh     24.0 - 120.0
    Option         "DPMS"
    Option         "PreferredMode" "5120x1440" # I added this line
EndSection

y

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "CustomEDID" "GPU-0.HDMI-0:/etc/X11/crg-edid.txt"
    Option         "metamodes" "5120x1440 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Virtual     5120 1440 # I added this line
        Depth       24
    EndSubSection
EndSection

No estoy seguro de si eran necesarios tanto el EDID personalizado como las otras configuraciones, y tampoco me importa, porque está funcionando y quiero dejarlo como está. Pero quería compartir mis hallazgos en caso de que ayude a alguien más.

EDITAR: Pasé por este proceso cuando instalé Ubuntu 22.04 y funcionó bien. Solo tenga en cuenta que después de iniciar sesión por primera vez después de realizar estos pasos, la pantalla quedó predeterminada en 3840x1080. Utilicé el panel de control de Ubuntu para cambiar la resolución a 5120x1440, y permanece con esa configuración mediante reinicios y suspensiones.

Respuesta2

Tengo el mismo problema y tengo Pop!_OS 22.04 y esto comenzó hace un tiempo después de algunas actualizaciones. Esto tiene que ser un problema de controladores. Noté cuando los monitores bajaron al modo de suspensión cuando volvieron a encenderse, y este podría ser cualquier monitor, baja a 800x400. Básicamente, mi paso lateral ha sido apagar el monitor y luego volver a encenderlo. Mis monitores son Asus VQR de 27" que acabo de recibir de Navidad. Sé que estos no son los monitores, porque depende de cuál configuré como primer monitor.

He estado jugando con las frecuencias de actualización y las resoluciones de pantalla y creo que los monitores (que están conectados con DP) no son el problema. Sucedió cuando instalé 20.04 y actualicé a 21.10, luego nuevamente a 22.04. Entonces, aunque no sé realmente qué causó tu problema, creo que el mío son los controladores y, como no soy un gurú de los controladores, tendré que esperar a que se solucionen mientras tanto.

Sé que puedes configurar un archivo usando xrandr para obtener una resolución y cardinalidad específicas de tus monitores que se configurarán cada vez que inicies tu computadora y voy a buscarlo y probarlo a continuación. Realmente fracasó cuando usé 3 monitores.

información relacionada