배경
나는 오랫동안(몇 년) 여러 가지 구성에서 어떤 방식으로든 이 문제를 겪었습니다. 드라이버와 커널을 여러 번 업데이트했는데 현재로서는 범인이 어디에 있는지 전혀 알 수 없습니다.
이것은 일종의 경쟁 조건인 것 같습니다. 한 모니터가 다른 모니터보다 먼저 "준비"되면 xrandr(및 i3)가 연결되어 작동해야 한다고 생각하더라도 다른 모니터는 "입력 없음"을 얻습니다.
이전 설정
- 4K 모니터
- 1080p 모니터
동작: 두 모니터 모두 절전 모드(활성화되지 않음)로 전환되고 마우스를 움직일 때 모니터 중 하나만(1080p 모니터)만 올바르게 깨어납니다. 다른 장치는 몇 초 후에 깨어나지만 "입력 없음"이 표시됩니다.
해결책:
- 실행
xrandr.sh
(이전 버전, 새 버전은 아래 참조)- 작동하도록 하기 위해 다른 작업을 수행해야 했는지는 확실히 말할 수 없습니다(전체 과정이 어느 정도 근육 기억이 되었습니다...).
새로운 설정
- 4K 모니터(이전과 동일한 설정)
- 4K 모니터(신품)
동작: 유사한 동작이지만 이제 동작이 다음에 적용됩니다.새로운감시 장치. 이전 모니터는 성능이 괜찮았습니다(기존 1080p 모니터와 마찬가지로).
해결 방법 1(먼저 모니터를 깨워야 함):
- (마우스/키보드를 움직여 화면을 깨우기 전) "느린" 화면을 깨우려면 모니터의 메뉴 버튼을 사용하세요.
- 모니터가 대기 모드에서 다시 시작되고 메뉴 항목이 표시되면 마우스/키보드를 움직여 모니터를 깨우십시오.
- 두 모니터 모두 잘 작동합니다!
해결 방법 2(모니터를 먼저 깨우는 것을 잊어버렸습니다):
- (마우스/키보드 이동) 두 모니터가 모두 깨어납니다. 하나는 잘 작동하지만 다른 하나는 일시 중지 상태에서 깨어나는 데 더 많은 시간이 걸리고 "입력 없음"만 표시됩니다.
- Run 을 누르면
xrandr --output HDMI-0 --off
디스플레이가 대기 상태로 돌아갑니다. - 솔루션 1을 적용합니다.
- 두 모니터 모두 잘 작동합니다!
세부 사항
Nvidia 드라이버 버전(Arch 저장소에서): 455.45.01-6
$ lspci | grep NV
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
$ xrandr
Screen 0: minimum 8 x 8, current 7680 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 621mm x 341mm
3840x2160 60.00*+ 59.94 50.00 30.00 29.97 25.00 23.98 23.98
2560x1600 59.97
2560x1440 59.95
1920x1080 60.00 59.94 50.00 60.00 50.04
1680x1050 59.95
1440x900 59.89
1440x576 50.00
1440x480 59.94
1280x1024 75.02 60.02
1280x960 60.00
1280x800 59.81
1280x720 60.00 59.94 50.00
1024x768 75.03 70.07 60.00
800x600 75.00 72.19 60.32 56.25
720x576 50.00
720x480 59.94
640x480 75.00 72.81 59.94
640x350 70.07
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 1280mm x 720mm
4096x2160 29.97 + 25.00 24.00 23.98
3840x2160 29.97* 25.00 23.98 23.98
1920x1080 60.00 59.94 50.00 29.97 25.00 23.98 60.00 50.04
1280x1024 60.02
1280x720 59.94 50.00
1024x768 60.00
800x600 60.32
720x576 50.00
720x480 59.94
640x480 59.95 59.93 59.94
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)
dmesg
아무런 이상이 나타나지 않았습니다.
xrandr.sh
:
# This used to be uncommented, but doesn't cut it anymore with the new setup
#xrandr --output HDMI-0 --off
sleep 0.5
xrandr --output HDMI-0 --primary --mode 3840x2160 --panning 0x0
xrandr --output DP-1 --mode 3840x2160 --right-of HDMI-0
시도된 솔루션
나는 수년에 걸쳐 비슷한 문제를 여러 번 검색했지만 실제로 유망한 것을 찾지 못했습니다. 예전 4K 모니터에 뭔가 이상한 것이 있다고 생각하곤 했습니다(예: 잘못된 EDID 등). 하지만 이제 새 모니터에서도 같은 문제가 발생하므로 그 의심을 포기했습니다.
화면이 복원되지 않는다는 스레드를 많이 찾았습니다.정지시키다(보통 수정됨 modeset
) 하지만 제 경우에는 실제 일시 중지가 발생하지 않았으며 단지 화면이 꺼지거나 꺼졌을 뿐이었습니다(모니터 중 하나에서만 발생했습니다!). 또한 내 문제/해결 방법과 유사한 "경합 조건" 성격의 문제를 발견하지 못했습니다.
답변1
"해결 방법" 스크립트를 유지하고 xrandr 명령을 사용하여 두 모니터를 원하는 방식으로 얻으십시오. "절전 절전 해제" 커널 이벤트에 의해 트리거되는 스크립트를 실행하려면 작은 udev 규칙을 작성하는 것이 좋습니다. 다음 명령을 실행하여 얻은 트리거 유형을 모니터링할 수 있습니다.
udevadm monitor -u
다음 명령을 실행하여 모니터의 udev 규칙 키 형식에서 가능한 모든 속성에 대한 정보를 얻을 수도 있습니다: udevadm info -a -n /dev/dri/card0
여기서 카드0은 온보드 비디오 카드입니다. udev 규칙을 읽어보세요: https://linux.die.net/man/7/udev
일반적으로 파일을 /etc/udev/rules.d/에 배치합니다.
다음만 포함하는 항목:
KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/opt/xrandr.sh"
작동할 수도 있습니다. 스크립트 경로를 수정하면 됩니다. 도움이 되었기를 바랍니다.