xrandrで検出されない解像度を設定する

xrandrで検出されない解像度を設定する

私は Debian 10 で HDMI から VGA へのアダプタを使用して Samsung SyncMaster 226 NW ディスプレイを実行しようとしています。GPU は RTX 2060 Super で、独自の Nvidia ドライバー バージョン 440.64 を使用しています。

Linux では、使用可能として検出される解像度は 1280×720、1024×768、800×600、および 640x480 のみです。

ただし、実際のネイティブ解像度は 1680×1050 であり、Windows をデュアルブートする場合はこの解像度を設定して使用できます。

xrandr私はカスタム解像度を追加するために使用しようとしました。まずはcvtモードラインを生成するために使用しました。xrandrの新しいモードを作成するために使用したコマンドは

xrandr --newmode "1680×1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

これを実行した後、ランニングxrandrが戻りました

Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm
   1024x768      60.00*+  60.00  
   1280x720      60.00  
   800x600       60.32  
   640x480       59.94  
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)
USB-C-0 disconnected (normal left inverted right x axis y axis)
  1680x1050_60.00 (0x1e4) 146.250MHz -HSync +VSync
        h: width  1680 start 1784 end 1960 total 2240 skew    0 clock  65.29KHz
        v: height 1050 start 1053 end 1059 total 1089           clock  59.95Hz

しかし、使用しようとすると

xrandr --addmode HDMI-0 "1680×1050_60.00"`

エラー

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  43
  Current serial number in output stream:  44

返されました。

xrandr --output HDMI-0 --mode "1680×1050_60.00"

戻ってきた

xrandr: モード 1680x1050_60.00 が見つかりません (エラー)。

出力解像度を 1680x1050 に適切に設定するにはどうすればよいですか?

答え1

私もまったく同じ問題に 2 ~ 3 時間費やしました。とても困ったことに、xrandr は新しい nvidia ドライバーではまったく機能しないようです。今、気が狂いそうになって腹を立てた後、ようやく解決策を思いつきました。あなたにも効果があることを願っています。

ターミナル「nvidia-settings」で開始し、「X Server Display Configuration」に切り替え、下部の「Save to X configuration File」ボタンをクリックし、「Show Preview」をクリックします。次に、このプレビューで「Section "Monitor"..... EndSection」ブロックに移動し、後で使用できるように保存します。これが、xorg.conf のモニター設定を見つけた方法です。他の方法もありますが、これは nvidia ユーザーにとって非常に安全で便利な方法であることに注意してください。

次に、解像度の「Modeline」を取得し、ターミナルに次のように入力します。

cvt 1680x1050

出力を後で使用するために保存します。

さて、これで、これらすべてを xorg.conf ファイルに追加し、たとえば /etc/X11/xorg.conf.d/10-monitor.conf (少なくとも私のディストリビューションのパス) という名前にします。モニター セクションもモデル ラインも持っていないので、私のモニター セクションとモデル ラインの例を示します (私の希望する/検出されない解像度は 1920x1080 でした)。

Section "Monitor"
  Identifier "Monitor1"
  VendorName     "Unknown"
  ModelName      "Acer B246HL"
  HorizSync       30.0 - 80.0
  VertRefresh     55.0 - 76.0
  Option         "DPMS"
  Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
EndSection

Section "Device"
  Identifier "Card0"
  Driver "nvidia"
  Option "HDMI-0" "Monitor1"
EndSection

Section "Screen"
  Identifier "Screen0"
  Device "Card0"
  Monitor "Monitor1"
  DefaultDepth 24
  SubSection "Display"
    Depth 24
    Modes "1920x1080_60.00"
  EndSubSection
EndSection

したがって、モニター セクションでは、最初の行 (識別子) を保持し、残りを nvidia 設定から保存したものに置き換え、最後の行は cvt コマンドの出力にします。デバイス セクションでは問題ないはずです。スクリーン セクションでは、"Modes" 行をモードの名前に変更するだけで済みます。おそらく、Modes "1680x1050_60.00" のようになります。

私のデバイス セクションには 'BusID "PCI:39:0:0"' という行もありますが、これは必要ないと思います。ただし、この行は "X -configure" を実行することで取得しました (xorg は実行されていない必要があります)。BusID は生成された xorg.conf.new に含まれている必要があります。奇妙なことに、私の場合は lspci の BusID とは異なっていました。

さらに、複数のモニターを実行したい場合 (私のように)、識別子「Monitor2」などの新しいモニター セクションを追加し、デバイス セクションで「オプション "HDMI-1" "Monitor2"」などを追加し、最後に「モニター "Monitor2"」などのモニターを画面セクションに追加します。

私の場合、奇妙だったのは、まったく同じモニターが 3 台あるのですが、そのうちの 1 台が nvidia-modeset で常に認識されなかったことです。これは EDID と関係があり、エラーは次の方法で見つけることができます。

dmesg | grep EDID

関連情報