xrandr에서 외부 모니터에 대한 새 모드를 추가할 수 없습니다

xrandr에서 외부 모니터에 대한 새 모드를 추가할 수 없습니다

오늘은 노트북에 두 번째 모니터를 연결해 보았습니다. 나는 가지고있다:

  • 엔비디아 그래픽 카드
  • 304.43 드라이버 [xrandr 1.2 지원]
  • 아치리눅스 [최신]
  • 굉장해
  • 랜달 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에서 사용 가능한 해상도와 새로 고침 빈도를 확인했습니다. 그 중 하나는 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를 지원하므로 더 좋을 것입니다. 또한 더 낮은 해상도와 새로 고침 빈도(예: 1024x768x50)를 사용해 보았지만 동일한 오류가 발생했습니다. 이 문제를 어떻게 해결해야 할지 모르겠습니다...

답변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을 제거하는 것이 더 쉽다는 것을 알았습니다.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에서 실행됩니다.

답변3

VM(특히 VirtualBox)에서 Linux를 실행하는 경우 VM에 충분한 비디오 메모리가 있는지 확인하세요.

비디오 메모리가 너무 적으면 xrandr을 실행하려고 할 때 이 오류가 발생할 수 있습니다.

답변4

모니터가 실제로 이 모드를 지원하는 경우 다음 Xorg 구성 옵션을 사용하여 강제로 설정할 수 있습니다.

Option         "ModeValidation" "AllowNonEdidModes"

이를 통해 GPU를 연결된 모니터의 EDID 데이터와 일치하지 않는 모드로 강제 설정할 수 있습니다. 모니터가 실제로 미등록 디스플레이 모드를 지원하는 경우도 있지만, 최악의 경우 시스템에서는 작동한다고 생각했지만 완전히 빈 화면으로 끝날 수도 있습니다. 이런 일이 발생하면 올바른 디스플레이 모드를 복원할 수 있는 계획을 준비하십시오.

우리 모두 알고 있듯이 Nvidia GPU는 EDID 데이터가 지원하는 모드에 대해 매우 까다롭습니다.

관련 정보