Ubuntu 20.04 perde resolução do monitor após acordar

Ubuntu 20.04 perde resolução do monitor após acordar

Tenho uma Nvidia RTX 3070 e um monitor Samsung C49RG90. O monitor está conectado à placa de vídeo via HDMI. Tudo funciona bem, a menos que eu suspenda o sistema e o reative. Quando isso acontece, a resolução muda para 1024x768. Posso fazer login e abrir o painel de controle da Nvidia e configurá-lo de volta para a resolução correta, mas se eu colocá-lo no modo de espera novamente, a resolução sempre retorna para 1024x768.

Estou usando a versão 470.86 do driver Nvidia, mas as versões mais antigas se comportam da mesma maneira.

Quando defino manualmente a resolução após wake e run xrandr, recebo o seguinte:

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)

Quando coloco a máquina no modo de suspensão e depois a acordo novamente e depois executo xrandr, recebo o seguinte:

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

Aqui está meu xorg.confarquivo:

# 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

Entendo que provavelmente serão necessárias mais informações, mas não tenho certeza de onde procurar.

Responder1

Depois de alguns anos cutucando isso ocasionalmente, acredito que resolvi o problema.

Primeiro,essa questãonos fóruns de desenvolvedores da Nvidia é praticamente idêntico ao meu problema. Como o autor dessa pergunta, acredito que a raiz do problema é que meu monitor não fornece informações EDID quando sai do modo de suspensão, o que faz com que o Ubuntu selecione uma resolução padrão de 1024x768.

Para contornar isso, exportei meu EDID conforme descritoaqui. Salvei o arquivo como ASCII e nomeei-o crg-edit.txt, depois movi-o para /etc/X11. No entanto, eu fiznãoexecute os comandos nas seções "Carregando EDID de exibição do arquivo". Em vez disso, abri meu /etc/X11/xorg.confarquivo manualmente e editei-o como tal (veja os comentários na configuração):

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

Após essas etapas, o monitor voltaria da suspensão com uma resolução mais alta de 3840x1080, mas ainda não com a resolução desejada de 5120x1440. Então corri xrandr --verbosee observei que, por algum motivo, essa resolução era preferida:

...
  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
...

Depois de olhar mais um pouco, descobriessepergunta. Em seguida, editei meu xorg.confnovamente da seguinte maneira:

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

e

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

Não tenho certeza se o EDID personalizado e as outras configurações foram necessárias, e também não me importo, porque está funcionando e quero deixá-lo como está. Mas eu queria compartilhar minhas descobertas, caso isso ajude alguém.

EDIT: Passei por esse processo quando instalei o Ubuntu 22.04 e funcionou bem. Apenas observe que após fazer login pela primeira vez após a conclusão dessas etapas, a tela padronizou para 3840x1080. Usei o painel de controle do Ubuntu para alterar a resolução de volta para 5120x1440, e ela permanece com essa configuração durante reinicializações e suspensão.

Responder2

Eu tenho o mesmo problema e tenho o Pop! _OS 22.04 e isso começou há algum tempo, após algumas atualizações. Isso deve ser um problema de driver. Notei quando os monitores entraram no modo de suspensão quando voltaram, e este pode ser qualquer um dos monitores, desce para 800x400. Basicamente, meu passo lateral foi desligar o monitor e ligá-lo novamente. Meus monitores são Asus VQR de 27" que acabei de ganhar no Natal. Sei que não são os monitores, porque depende de qual eu configurei para ser o primeiro monitor.

Tenho brincado com taxas de atualização e resoluções de exibição e acredito que os monitores (que estão conectados ao DP) não são o problema. Aconteceu quando instalei o 20.04 e atualizei para o 21.10, depois novamente para o 22.04. Portanto, embora eu realmente não saiba o que causou o seu problema, acredito que os meus sejam drivers e, como não sou um guru de drivers, terei que esperar pelas correções enquanto isso.

Eu sei que você pode configurar um arquivo usando xrandr para definir uma resolução e cardinalidade específicas de seus monitores toda vez que você iniciar o computador e vou procurar e tentar isso a seguir. Realmente desmoronou quando usei 3 monitores.

informação relacionada