xrandr은 "crtc X를 구성하지 못했습니다."라는 메시지와 함께 여러 모니터가 있는 도크에서 무작위로 실패합니다.

xrandr은 "crtc X를 구성하지 못했습니다."라는 메시지와 함께 여러 모니터가 있는 도크에서 무작위로 실패합니다.

xrandr: Configure crtc X failed요약: xrandr은 도크에 연결된 두 개의 모니터 설정 시 오류 메시지와 함께 내 시스템에서 무작위로 실패합니다. 단일 모니터를 여러 번 켜고 끈 후에는 대부분의 경우 제대로 작동했습니다.

도킹 스테이션에 Lenovo Thinkpad가 설치되어 있습니다. 두 개의 모니터가 디스플레이 포트를 통해 도크에 연결됩니다. 출력은 다음과 같습니다 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

이 행에는 포인트 시계별로 정렬된 모든 모델 행이 표시됩니다. ³ 한 가지 접근 방식은 다양한 해상도에서도 자주 보고되는 주파수를 찾는 것입니다. 내 주파수는 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.2 출력 중에서 선택하여 4가지 다른 해상도도 사용했습니다. 하지만 먼저 클록 사이클 생성기 중 하나만 빼고 모두 해제합니다.

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).

이제 단일 도트 클록에서 모든 것을 실행하므로 그래픽 카드가 생성할 수 있는 모든 모니터(하나만)를 설정할 수 있습니다. 이것은 두 번째 클럭 틱 생성기를 활용하게 됩니다. 그래픽 카드에 최소한 두 개가 있다고 가정합니다.

일반적으로 이것으로 충분합니다.

xrandr --output W_BIGGEST_MON --auto
2.2. 다른 모든 모니터 설정

이미 사용 중인 시계에 적합한 모델 라인을 찾으려면 다른 모니터를 확인하세요. 맞춤형 모델 라인의 경우 전혀 마음에 들지 않는 일련의 모니터 세대를 실행하는 경우가 아니라면 반드시 두 개의 시계를 사용해야 합니다!

2.3. 사용자 정의 모델 행을 생성하고 사용하는 방법

보조 모니터의 "최적" 디스플레이보다 약간 낮은 해상도를 실행하려는 상황이 발생할 수 있습니다. 모델 라인의 픽셀 클럭이 더 낮을 수 있지만 클럭을 늘리는 것은 쉽습니다. 보조 디스플레이는 최대 해상도에 필요한 것보다 훨씬 높은 도트 클럭을 허용하지 않기 때문에 이 트릭을 너무 많이 사용할 수는 없습니다.

예: 내 최고의 모니터는 모두 Full HD이고 148.500MHz에서 실행되지만 그 중 하나는 다음과 같이 약간 더 작고 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두 개의 외부 모니터를 동시에 활성화하고 하나의 명령으로 노트북 모니터를 비활성화할 수 없습니다. 동일한 xrandr: Configure crtc 1 failed정보를 제공합니다.

하지만 모니터를 무작위로 비활성화/재활성화하는 대신 내가 한 일은 Niklas와 비슷하게 두 단계로 나누는 것이었습니다.

  1. 첫 번째 외부 모니터를 활성화하고 노트북 모니터를 비활성화합니다.
  2. 두 번째 외부 모니터 활성화

이것은 재현 가능하지만 올바른 솔루션에도 관심이 있습니다!

답변3

Niklas의 답변은 arandr을 사용하는 경우 해결책을 제시했습니다. (내가 그랬던 것처럼) 도크를 분리하면 arandr가 메인 모니터(이 경우 내 노트북)만 표시한다는 것을 알 수 있습니다. 그러나 xrandr는 여전히 다른 두 모니터를 감지하므로 GUI 배경을 마우스 오른쪽 버튼으로 클릭하고 두 모니터 모두에 대해 "활성화"를 켜기만 하면 다른 두 모니터를 다시 활성화할 수 있습니다.

그러나 두 모니터 모두에 대해 이 작업을 수행하면 razr에서 언급한 오류가 발생합니다. 활성화 사이에 확인 표시 버튼을 클릭하여 각 모니터를 한 번만 활성화하면 됩니다. :)

편집하다:

또한 arandr를 거치지 않고도 이 작업을 수행할 수 있는 완벽한 방법을 찾은 것 같습니다. 첫 번째 모니터를 활성화합니다.

xrandr --output DP2-1 --auto

그런 다음 당신이 나와 같은 경우 두 번째 모니터를 활성화하려고 하면 작동하지 않습니다(언급된 오류 razr이 계속 표시됩니다).

xrandr --output DP2-2 --auto

대신, 저장한 arandr 스크립트를 실행하세요. 내 경우는 다음과 같습니다.

./dual_monitor_home.sh

자동으로 두 번째 화면을 감지하고 작동했습니다!

답변4

내 해결책은 노트북이 도크에 있는 동안 일시 중지/절전 상태로 두었다가 깨운 다음 ​​다시 매력적으로 작동하는 것이었습니다.

관련 정보