
私は 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