web-dev-qa-db-ja.com

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

今日、2台目のモニターをノートブックに接続しようとしました。私が持っています:

  • nvidiaグラフィックカード
  • 304.43ドライバ[xrandr 1.2をサポート]
  • archlinux [最新]
  • すごいwm
  • xrandr 1.3

私の問題は、外部モニター(VGA)の解像度が640x480よりも大きいことです。 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

グーグルから私は古いxrandr/nvidiaドライバーでは利用可能なモードのリストに問題があることを学びましたが、今ではnvidiaドライバーによるxrandr 1.2のサポートにより改善されるべきです。また、解像度とリフレッシュレートを低くしてみました(例:1024x768x50)が、同じエラーが発生します。この問題をどうすればいいのかわからない...

16
Borgo

xrandr --newmodeに続く文字列を自分で作成したのか、他の場所からコピーしたのかはわかりませんが、現在の形式では機能しません。

段階的に行うことをお勧めします。

まず、新しいモードを生成する必要があります。 LCDまたは60HzをCRTモニターで使用することをお勧めします

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

次に、--newmodeを使用して、このモードをxrandrに提示します( '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
11
Paweł Rumian

以前に追加した「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を削除する方がはるかに簡単であることを発見したので、1280x1024_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インチスクエアモニターが1280x1024で動作しています。

4
rjt

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

ビデオメモリが少なすぎると、xrandrを実行しようとしたときにこのエラーが発生します。

0
Felipe Almeida

私は2時間かけて同様の問題を解決しましたが、問題はvgaケーブルにありました。 vgaケーブルを交換しますxrandrやxorgを使用せずに解像度を1920x1080に変更できますが、これは非常に奇妙です。

0
burtsevyg