xrandr: Configure crtc X failed
要約:xrandrは、ドックに接続されている2つのモニターを設定すると、エラーメッセージとともに自分のシステムでランダムに失敗します。 1台のモニターを数回オン/オフした後、ほとんどの場合正常に動作しました。
ドッキングステーションにLenovo Thinkpadがインストールされています。 2つのモニターがディスプレイポートを介してドックに接続されています。出力は次のとおりですxrandr
。
razr@notebook [~]
-> % xrandr
Screen 0: minimum 8 x 8, current 7680 x 1440, maximum 32767 x 32767
eDP1 connected 2560x1440+5120+0 (normal left inverted right x axis y axis) 340mm x 190mm
2880x1620 59.96 + 50.00
2560x1600 59.97
2560x1440 59.95*
2048x1536 60.00
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
2048x1152 60.00 59.90 59.91
1920x1200 59.88 59.95
1920x1080 59.96 60.00 59.93
1600x1200 60.00
1680x1050 59.95 59.88
1400x1050 59.98
1600x900 60.00 59.95 59.82
1280x1024 60.02
1400x900 59.96 59.88
1280x960 60.00
1440x810 60.00
1368x768 60.00 59.88 59.85
1280x800 59.81 59.91
1280x720 59.86 60.00 59.74
1024x768 60.00
1024x576 60.00 59.90 59.82
960x540 60.00 59.63 59.82
800x600 60.32 56.25
864x486 60.00 59.92 59.57
640x480 59.94
720x405 59.51 60.00 58.99
640x360 59.84 59.32 60.00
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP2-1 connected 2560x1440+2560+0 (normal left inverted right x axis y axis) 610mm x 350mm
3840x2160 60.00 + 30.00 29.97
2560x1440 59.95*
1920x1080 60.00 59.94
1680x1050 59.95
1600x900 60.00
1280x1024 75.02 60.02
1440x900 59.89
1280x800 59.81
1152x864 75.00
1280x720 60.00 59.94
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
640x480 75.00 72.81 66.67 60.00 59.94
720x400 70.08
DP2-2 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 610mm x 350mm
3840x2160 60.00 + 30.00 29.97
2560x1440 59.95*
1920x1080 60.00 59.94
1680x1050 59.95
1600x900 60.00
1280x1024 75.02 60.02
1440x900 59.89
1280x800 59.81
1152x864 75.00
1280x720 60.00 59.94
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
640x480 75.00 72.81 66.67 60.00 59.94
720x400 70.08
DP2-3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
razr@notebook [~]
-> %
私のシステムにxorg.confがありません。起動時にlightdm
これらのモニターが接続されていることを確認し(ノートブックがドックに入っている場合)、その場合は次のコマンドを実行するシェルスクリプトがあります。
xrandr --output eDP1 --mode "1920x1080" --output DP2-1 --mode auto --left-of eDP1 --output DP2-2 --mode auto --primary --left-of DP2-1
それ以外の場合は、ラップトップに表示されるモードがに設定されます"1920x1080"
。
しかし、これはまったく機能しません。同様のエラーメッセージが表示され続けますxrandr: Configure crtc 1 failed
。その数字は頻繁に変わると思います。
私は職場で同様の問題を経験したことがあります(質問の終わりを参照)、ほとんどの場合、モニターを無効にして再度有効にすると問題を解決できることがわかります。arandr
これを繰り返し実行する方が簡単なので、これをインストールしました。モニターでノートパソコンのディスプレイを有効にすると、常に機能します。どのモニターが有効になっているかは問題ではありません。モニター2台(ノートブックモニターを除く)のみ機能しません。
自宅の(新しい)設定では正しく機能できません。機能したいのですが、両方の"2560x1440"
モニターでモーダルのみを使用してください。そしてこれが常に動作するわけではありません。場合によってはarandr
、モニターをランダムにオンにし、無効/再アクティブ化して動作状態に戻る必要がある場合があります。これまで、私はその中にパターンを見つけることができませんでした。時にはあきらめてコンピュータを再起動した後、後でうまく動作することを願っています。
すでに述べたように、私は仕事で非常に似た設定を持っており、私の仕事も基本的に同じです。職場では、少なくともドックからコンピュータを起動すると、これが機能します。マシンを起動してドックに接続して上記のコマンドを実行すると、同じエラーが発生します。ここモニターをランダムに無効化/リアクティブ化また、ほとんどの場合動作します。
なぜこれが起こるのか、どうすれば解決できるのかを知っている人はいますか?
答え1
質問
私はあなたのシステムです2ピクセルクロックのみそれは使用することができる3つのモニターを運転してみてください。
私の仮説を確認するには、以下を提供してください。
xrandr --verbose | egrep '^[^[:space:]]|curr|pref' | sed -e 's/(norm.*)//'
すべてのモニターが正しい場合- 問題が発生した場合は、同じコマンドを実行してください。
- 修正したいコマンドと受信したエラー
- このコマンドがカーネル出力を生成することを確認してください(の新しい行
dmesg
)。 xrandr --listproviders
echo $XDG_SESSION_TYPE
loginctl show-session -p Type $(loginctl session-status | head -1 | cut -d' ' -f1)
99%は持っていません。これ問題がありますが、USB-Cドックを使用している場合は、別のドックを使用してください。(USB-Cは別の時計を使用していると思います。)
ドッキング中に再起動するのがどのように役立つかはわかりませんが、オプションはピクセルクロックの保存に最適化されていませ--auto
んxrandr
が、可能です。 (モニターが好きなものだけを試してください。)
ピクセル時計の詳細
ピクセルクロックは、一部の出力に表示されるMHzの数です。たとえば、2つのピクセルクロックに制限されている場合、必要なすべての「モデルライン」(解像度+リフレッシュレート+でも)は、ピクセルクロックの異なる周波数を最大2つまで参照できます。
モニタを設定するときにxrandr
これらのモデルラインのクロック速度でCRTC(CRTコントローラ)を(再)設定しようとすると、次のラインでさまざまな理由で(番号はさまざまです)失敗する可能性があります。
xrandr: Configure crtc 1 failed
一つ故障の原因は、より多くのアイドルクロックパルス発生器が不足しているためである。 (たくさんありますその他の理由しかも! )
xrandr
問題の詳細を取得できないようですが、私のシステムではカーネルバッファのグラフィカルドライバエラーを(同時に)見ることができます。dmesg
メッセージが表示されると、メッセージが異なる場合があります。
[drm:radeon_atom_pick_pll [radeon]] *ERROR* unable to allocate a PPLL
[drm:drm_crtc_helper_set_config [drm_kms_helper]] *ERROR* failed to set mode on [CRTC:44:crtc-1]
PLLはクロックサイクルを生成するために使用されます。
解決策
少ないドットクロック周波数を使用してください。残りの回答では、モニターの数を1または2に減らす究極の目標を持ってモニターを異なる方法で処理することに焦点を当てます。手順を読み、理解し、ハードウェアに適応するために必要な手順を使用します。
同じ画面走査率と同じ解像度でも、依然として異なるクロック周波数が必要になる場合があります。同じモデル行を使用しない場合。さらに、異なるモデル行がまったく同じピクセル周波数を使用することができる。
1.標準モデルワイヤを使用して、すべてのモニタを時計に配置します。
1.1。良い候補周波数を探す
xrandr --verbose | grep MHz | sort --key 3 --numeric-sort --reverse | uniq
この行には、ポイント時計でソートされたすべてのモデル行が表示されます。 ³1つのアプローチは、さまざまな解像度でも頻繁に報告される周波数を見つけることです。私の周波数は108.000MHzです。
....
1600x900 (0x5e) 108.000MHz +HSync +VSync
1280x960 (0x10c1) 108.000MHz +HSync +VSync
1280x1024 (0x5f) 108.000MHz +HSync +VSync
1152x864 (0x6f) 108.000MHz +HSync +VSync
....
1.2.すべてのモニタで候補が利用可能であることを確認してください。
xrandr --verbose | egrep '^[^[:space:]]|108.000MHz'
108.000MHzモデルラインは私のすべてのモニタで動作します。
Screen 0: minimum 320 x 200, current 5520 x 2160, maximum 8192 x 8192
DisplayPort-0 connected primary 1920x1080+0+1080 (0x184a) normal (normal left inverted right x axis y axis) 509mm x 286mm
1280x1024 (0x5f) 108.000MHz +HSync +VSync
1280x960 (0x10c1) 108.000MHz +HSync +VSync
1152x864 (0x6f) 108.000MHz +HSync +VSync
HDMI-0 connected 1920x1080+1920+1080 (0x184a) normal (normal left inverted right x axis y axis) 527mm x 296mm
1600x900 (0x5e) 108.000MHz +HSync +VSync
1280x1024 (0x5f) 108.000MHz +HSync +VSync
DVI-0 connected 1920x1080+3600+0 (0x5a) normal (normal left inverted right x axis y axis) 477mm x 268mm
1280x1024 (0x5f) 108.000MHz +HSync +VSync
1280x960 (0x10c1) 108.000MHz +HSync +VSync
1152x864 (0x6f) 108.000MHz +HSync +VSync
DVI-1 connected 1680x1050+1920+0 (0x172a) normal (normal left inverted right x axis y axis) 433mm x 270mm
1280x1024 (0x5f) 108.000MHz +HSync +VSync
1152x864 (0x6f) 108.000MHz +HSync +VSync
一部のモニターにモデルラインが表示されない場合は、1.1から他の周波数の共通解像度を確認してください。
1.3.すべてのディスプレイを1つの周波数に設定
おもしろく1.2出力から選んで4つの異なる解像度も使用しました。しかし、最初にクロックサイクルジェネレータの1つだけを引いて、すべてを解放します。
xrandr --output DisplayPort-0 --off \
--output DVI-0 --off \
--output DVI-1 --off \
--output HDMI-0 --mode 0x5e
その後、他の時計も同じに設定します。
xrandr --output DVI-1 --mode 0x6f \
--output DVI-0 --mode 0x10c1 \
--output DisplayPort-0 --mode 0x5f
3つの異なる時計を一時的に使用すると、一度に設定が失敗する可能性があります。 - 解像度名は複数のモデルラインを統合し、自動機能が無効なモデルラインを選択する可能性があるため、解像度名の代わりに16進モード番号(括弧内に1.2で始まる)を使用します。
2. すべてのモニターを希望の解像度に設定
2.1 最も難しいものを最初に設定します。
最も要求の厳しいディスプレイ(つまり、最も高いピクセルクロックが必要です)から始めましょう。これはほぼ常に最高の解像度です。推奨モデルラインを確認してください(で各モニターに「+」を表示xrandr --verbose
)。
これで、単一のドットクロックですべてを実行するので、グラフィックカードが生成できるすべてのモニタ(1つのみ)を設定できます。これは2番目のクロックティックジェネレータを利用します。グラフィックカードに少なくとも2つがあるとします。
一般的にこれで十分です。
xrandr --output W_BIGGEST_MON --auto
2.2.他のすべてのモニターの設定
すでに使用している時計に適したモデルラインを見つけるには、他のモニタを確認してください。カスタムモデルラインの場合、まったく気に入らない一連のモニター世代を実行していない場合は、必ず2つの時計を使用する必要があります。
2.3。カスタムモデル行を作成して使用する方法
セカンダリモニタの「最適」ディスプレイよりわずかに低い解像度を実行しようとする状況が発生することがあります。モデルラインのピクセルクロックはより低いかもしれませんが、クロックを増やすのは簡単です。セカンダリディスプレイは、最大解像度に必要なものよりはるかに高いドットクロックを許可しないため、このトリックをあまり使用することはできません。
例:私の最高のモニターはすべてフルHDで、148.500MHzで動作しますが、そのうちの1つは次のように少し小さく、146.250MHzモードを好みます。
xrandr --verbose | egrep '^[^[:space:]]|current|preferred'
出力(短縮):
DisplayPort-0 connected primary 1920x1080+0+1080 (0x5a)
1920x1080 (0x5a) 148.500MHz +HSync +VSync *current +preferred
HDMI-0 connected 1920x1080+1920+1080 (0x5a)
1920x1080 (0x5a) 148.500MHz +HSync +VSync *current +preferred
DVI-0 connected 1920x1080+3600+0 (0x5a)
1920x1080 (0x5a) 148.500MHz +HSync +VSync *current +preferred
DVI-1 connected 1152x864+1920+0 (0x6f)
1680x1050 (0x6d) 146.250MHz -HSync +VSync +preferred
これで、148.500MHzドットクロックを備えた1680x1050モデルラインが必要です。モデル行を生成するツールはさまざまです。cvt
はい悪い。ドット時計の設定には使用できません。しかし、これはシーシーホームページ十分です:
- すべてのボックスを空にしてください/デフォルト
- 希望の可視解像度設定(私にとっては1680と1050でした)
- リフレッシュレートをたとえば60に設定します(ドットクロックをすばやく移動するには50から75の間に移動します)。
- 生成されたドットクロック周波数を計算して確認します。 (154.19MHzを取得)
- 水平同期時間微調整(3.8→3.7→3.4→3.35μs)
- ...そして目標に近づくまでポイントクロック(... ... ... 148.29MHz)を再計算して確認します。
- このヒントは、モデル行の他のすべての側面をほぼ同じに保ちながら、ポイント時計を増減することに最も重点を置いています。
- ライン間待機時間をできるだけ透明に変更します。
- ほとんどの(すべて?)LCDは、実際に結果的な(より高い?)ドットクロックを処理できる場合、この時点(1〜7μs)で非常に柔軟です。
- (モデル行「名前」ドットクロックHDataEnd HSyncStart HSyncStop HFinish VDataEnd VSyncStart VSyncStop VFinish)
- HSyncStartとHSyncStopの間隔を変更します。
- 最後に、ポイントクロックを正しい目標ポイントクロック(148.500)に変更します。リフレッシュ頻度をクリア(これはリフレッシュをかろうじて調整しながら時計を維持します)計算
- わかりました
Modeline "1680x1050@60" 148.50 1680 1712 2208 2240 1050 1071 1081 1103
(ページ上部) - 次のコマンドは、行の最後の9つの数字(つまり、すべての数字)を使用します。
xrandr --newmode my-148.5MHz 148.50 1680 1712 2208 2240 1050 1071 1081 1103
xrandr --addmode DVI-1 my-148.5MHz
(必要に応じてモニターを追加)xrandr --ouput DVI-1 --mode my-148.5MHz
ジャジャン:あなたの決断力とあなたに必要な時計を更新してください。
1私のシステムには、4つのモニタを駆動するために2つのピクセルクロックしかありません。
³ドットクロックはピクセルクロックの同義語です。
答え2
Lenovoドッキングステーションにも同じ問題があります。 (実行中の)ノートブックを接続すると、xrandr
2つの外部モニターを同時に有効にし、1つのコマンドでノートブックモニターを無効にすることはできません。同じxrandr: Configure crtc 1 failed
情報を提供します。
しかし、モニターをランダムに無効化/リアクティブ化するのではなく、私がしたことはNiklasと同様に2つのステップに分けることでした。
- 最初の外部モニタを有効にし、ノートブックモニタを無効にします。
- 2番目の外部モニターの有効化
これは再現可能ですが、正しい解決策にも興味があります!
答え3
Niklasの答えは、arandrを使用している場合の解決策を示しました。 (私がしたように)ドックを外すと、arandrがメインモニタ(この場合は私のラップトップ)だけを表示することがわかります。ただし、xrandrはまだ他の2つのモニターを検出しているため、GUIの背景を右クリックして両方のモニターに対して「有効」をオンにするだけで、他の2つのモニターを再度有効にすることができます。
ただし、両方のモニターに対してこの操作を実行すると、razrで述べたエラーが発生します。アクティブ化の間にチェックマークボタンをクリックして、各モニターを一度だけアクティブにします。 :)
編集する:
また、arandrを介さずにこれを行うための完璧な方法を見つけたようです。最初のモニターを有効にします。
xrandr --output DP2-1 --auto
その後、あなたが私と同じ場合、2番目のモニターを有効にしようとすると機能しません(突然エラーrazrが表示され続けます)。
xrandr --output DP2-2 --auto
代わりに、保存したarandrスクリプトを実行してください。私の場合は次のようになります。
./dual_monitor_home.sh
自動的に2番目の画面を検出して動作しました!
答え4
私の解決策は、ノートブックがドックにある間に一時停止/スリープ状態にしてから目を覚まし、その後魅力的に動作することでした。