Ubuntu 20.04 はスリープ解除後にモニターの解像度が失われます

Ubuntu 20.04 はスリープ解除後にモニターの解像度が失われます

私は Nvidia RTX 3070 と Samsung C49RG90 モニターを持っています。モニターは HDMI 経由でビデオ カードに接続されています。システムをサスペンドしてから再び起動しない限り、すべて正常に動作します。その場合、解像度が 1024x768 に変わります。ログインして Nvidia コントロール パネルを開き、正しい解像度に戻すことはできますが、再びスリープ状態にすると、解像度は常に 1024x768 に戻ります。

私は Nvidia ドライバーのバージョン 470.86 を使用していますが、古いバージョンでも同じように動作します。

起動後に解像度を手動で設定して実行するとxrandr、次のようになります。

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)

マシンをスリープ状態にして再度起動し、 を実行するとxrandr、次のようになります。

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

xorg.conf私のファイルは次のとおりです:

# 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

さらに詳しい情報が必要になる可能性が高いことは理解していますが、どこを調べればよいかわかりません。

答え1

数年間、時々この問題に取り組んできましたが、私は問題を解決できたと思います。

初め、この質問Nvidia 開発者フォーラムで報告されている問題は、私の問題とほぼ同じです。その質問の作成者と同様に、問題の根本は、モニターがスリープ解除時に EDID 情報を提供していないことであり、そのため Ubuntu がデフォルトの 1024x768 解像度を選択していると考えています。

これを回避するために、私はEDIDを説明した通りにエクスポートしましたここファイルをASCII形式で保存し、名前を付けてcrg-edit.txt、 に移動しました/etc/X11。しかし、ない「ファイルからディスプレイ EDID をロードする」セクションのコマンドを実行します。代わりに、手動で/etc/X11/xorg.confファイルを開いて次のように編集しました (構成内のコメントを参照)。

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

これらの手順を実行すると、モニターは 3840x1080 というより高い解像度でサスペンドから復帰しますが、目標の解像度である 5120x1440 にはまだ達していません。そこで実行しxrandr --verbose、何らかの理由でその解像度が優先されることに気付きました。

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

さらに周りを見回すと、これ質問。その後、私は質問をxorg.conf次のように編集しました。

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

そして

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

カスタム EDID とその他の設定の両方が必要だったかどうかはわかりませんが、動作しているのでそのままにしておきたいので、気にしていません。しかし、他の人の役に立つかもしれないので、調査結果を共有したいと思いました。

編集: Ubuntu 22.04 をインストールしたときにこのプロセスを実行しましたが、問題なく動作しました。これらの手順を実行した後、初めてログインすると、画面がデフォルトで 3840x1080 になったことに注意してください。Ubuntu コントロール パネルを使用して解像度を 5120x1440 に戻しましたが、再起動やサスペンドを行ってもその設定が維持されます。

答え2

私も同じ問題を抱えています。Pop!_OS 22.04 を使用していますが、アップデート後しばらくしてこの問題が発生しました。これはドライバーの問題に違いありません。モニターがスリープ モードになってから復帰したときに気付きました。どちらのモニターでも、800x400 まで低下します。基本的に、私はモニターをオフにしてから再びオンにしています。私のモニターは、クリスマスにもらったばかりの 27 インチ Asus VQR です。これはモニターの問題ではないことはわかっています。なぜなら、どのモニターを最初のモニターとして設定したかによって変わるからです。

リフレッシュ レートとディスプレイ解像度をいろいろ試してみましたが、モニター (DP で接続) は問題ではないと思います。20.04 をインストールして 21.10 にアップデートし、さらに 22.04 にアップデートしたときに発生しました。そのため、あなたの問題の原因が何なのかはわかりませんが、私の場合はドライバーが原因だと思います。私はドライバーの専門家ではないので、当面は修正を待つ必要があります。

xrandr を使用してファイルを構成して、コンピューターを起動するたびにモニターの特定の解像度とカーディナリティを設定できることは知っています。次はそれを探して試してみます。3 台のモニターを使用したときに、本当にうまくいかなかったのです。

関連情報