xrandrで外部モニタの新しいモードを追加できません

xrandrで外部モニタの新しいモードを追加できません

今日はラップトップに2台目のモニターを接続してみました。私は持っています:

  • Nvidiaグラフィックカード
  • 304.43 ドライバ [xrandr 1.2 サポート]
  • アーチLinux [最新]
  • すごい
  • ランダル1.3

私の問題は、私の外部モニタ(VGA)の解像度が640×480より大きいことです。 xrandr -q:

Screen 0: minimum 8 x 8, current 1920 x 800, maximum 8192 x 8192
VGA-0 connected 640x480+1280+0 (normal left inverted right x axis y axis) 0mm
   640x480        59.9*+
   320x240       120.1  
LVDS-0 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331m
   1280x800       59.9*+
HDMI-0 disconnected (normal left inverted right x axis y axis)

ご覧のとおり、VGAの解像度は高くないため、新しいモードを追加しました。

xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')

Windowsで利用可能な解像度とリフレッシュレートを確認しました。そのうちの1つは1024x768x70です(私のモニターのOSDには70.4HZと表示されています)。新しいスキーマを作成したら、次を追加したいと思います。

xrandr --addmode VGA-0 1280x1024_70.40

そして…失敗します:

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

Googleでは、私は以前のxrandr / nvidiaドライバで利用可能なモードのリストに問題があることを知っていますが、今ではnvidiaドライバがxrandr 1.2をサポートしているので、より良いでしょう。また、低解像度とリフレッシュレート(例:1024×768×50)を試してみましたが、同じエラーが発生しました。この問題をどのように解決するのかわかりません...

答え1

xrandr --newmode後者の文字列を直接生成したのか、それとも別の場所からコピーしたのかはわかりませんが、現在の形式では機能しません。

徐々にすることをお勧めします。

まず、新しいスキーマを作成する必要があります。 LCDモニターには60Hz、CRTモニターには85Hzをお勧めします。

gtf 1280 1024 60

次のような結果が得られます。

 # 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz 
 Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

次に、このモードをxrandr使用するように提示します--newmode(「Modeline」で始まる行をコピーして貼り付けます)。

 xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

次にこのモードをVGA-0に追加します。

xrandr --addmode VGA-0 "1280x1024_60.00"

最後に、次の新しいモードを使用できます。

 xrandr --output VGA-0 --mode 1280x1024_60.00

答え2

二重引用符モードでは成功しなかったため、以前に追加した「1280x1024_60.00」を削除するまで、BadMatchエラーの問題がありました。結局のところ、パターンのより良い名前を理解するのが役立ちました。

そのため、通常のユーザーとして次のコマンドを実行して「1280x1024_60.00」を削除しました。

$ xrandr --version 
reports 1.4.0 and 1.4
$ xrandr | grep 1280 #Do you see any 1280x1024 anywhere?  Does it have double quotes?
$ xrandr --verbose --delmode VGA1 '"1280x1024_60.00"'
$ xrandr --verbose --rmmode '"1280x1024_60.00"' 

システムからジャンクを削除して削除すると、自分のアカウントとルートから削除しても機能しないか、再び表示されることがよくあります。通常、VGA1の代わりにVIRTUAL1という出力を返します。

スパムを捨てて、新しく作成したパターンの末尾に文字を追加したり、.00を削除したりする方が簡単です。1280×1024_60B。以下の--newmodeパラメータの周りに二重引用符がありますが、--addmodeや--modeに二重引用符がないことに注意してください。

$ xrandr --verbose --newmode "1280x1024_60B" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
$ xrandr --verbose --addmode VGA1 1280x1024_60B
$ xrandr --verbose --output VGA1 --mode 1280x1024_60B

画面が少し点滅し、外部19インチの正方形モニターが1280 x 1024で実行されます。

答え3

VM(特にVirtualBox)でLinuxを実行している場合は、VMに十分なビデオメモリがあることを確認してください。

ビデオメモリが小さすぎると、xrandrを実行しようとするとこのエラーが発生する可能性があります。

答え4

モニターが実際にこのモードをサポートしている場合は、次のXorg構成オプションを使用して強制することができます。

Option         "ModeValidation" "AllowNonEdidModes"

これにより、GPUを接続モニターのEDIDデータと一致しないモードに強制することができます。モニターが実際に未登録の表示モードをサポートしている場合もありますが、最悪の場合はシステムでは機能すると思っていましたが、完全に空白の画面で終わることもあります。これが発生した場合は、正しい表示モードを復元するための計画を準備してください。

私たち全員が知っているように、Nvidia GPUはEDIDデータがサポートするモードに非常に面倒です。

関連情報