내 노트북에는 i7-10875H 프로세서가 있습니다. NVIDIA dGPU를 비활성화했기 때문에 Intel 드라이버에서만 문제가 발생합니다.
저는 데비안 11을 사용하고 있습니다.
커널을 사용하여 테스트:
- 5.10.0-9-amd64
- 5.14.0-0.bpo.2-amd64
Xorg와 Wayland를 사용해 보았는데 노트북 화면은40hz에서 멈췄습니다.
하지만 화면은 165hz입니다.
나는 이것이 Xorg 구성이나 xrandr 설정과 관련이 없기 때문에 드라이버 수준과 관련된 것이라고 생각합니다. xrandr의 헤르츠 값을 165로 설정하더라도 화면은 여전히 40hz로 실행됩니다.
Windows처럼 165hz에서 어떻게 실행되도록 할 수 있나요?
내 lshw -c 비디오는 다음과 같습니다.
*-display
description: VGA compatible controller
product: CometLake-H GT2 [UHD Graphics]
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
logical name: /dev/fb0
version: 05
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list fb
configuration: depth=32 driver=i915 latency=0 mode=2560x1440 visual=truecolor xres=2560 yres=1440
resources: iomemory:600-5ff iomemory:400-3ff irq:138 memory:6002000000-6002ffffff memory:4000000000-400fffffff ioport:6000(size=64) memory:c0000-dffff
이것은 내 lspci -k입니다.
00:02.0 VGA compatible controller: Intel Corporation CometLake-H GT2 [UHD Graphics] (rev 05)
DeviceName: Onboard - Video
Subsystem: Tongfang Hongkong Limited UHD Graphics
Kernel driver in use: i915
Kernel modules: i915
이것은 내 glxinfo입니다.
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics (CML GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.3.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.3.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
답변1
오랜 노력 끝에 나는 이 문제를 해결했습니다.
해결책:
실제 해결책은 Intel Graphics(i915) 드라이버를 업데이트해야 한다는 것입니다.
임시 해결책은 노트북 화면의 EDID 파일을 편집하고 픽셀 속도를 655Mhz 제한에 가깝게 변경하는 것입니다.
EDID 파일을 변경하는 방법:
- 모니터의 EDID 바이너리를 가져옵니다.
cp /sys/devices/pci0000\:00/0000\:00\:02.0/drm/card0/card0-eDP-1/edid ~/edid.bin
(eDP-1은 화면이고 0000:00:02.0은 Intel 드라이버의 PCIe 버스 ID입니다.lspci
ve 를 사용하여 가져올 수 있습니다xrandr
.) - 다음 프로그램을 사용하여 Windows 또는 Wine에서 edid.bin 파일을 엽니다.https://www.analogway.com/americas/products/software-tools/aw-edid-editor/
- "세부 정보" 탭에서 "CVT 1.2 마법사"를 사용하여 144hz 새로 고침 빈도와 같은 내용을 작성합니다. (165hz는 655Mhz보다 픽셀레이트가 높기 때문에 165hz는 허용되지 않으므로 더 작은 값을 입력해야 합니다.)
- 편집한
edid.bin
파일을 다음 위치에 복사하세요./lib/firmware/edid/edid.bin
- 파일에서
/etc/default/grub
다음quiet splash
과 같이 변경합니다.quiet splash drm.edid_firmware=eDP-1:edid/edid.bin
- 이 스크립트를 저장
/etc/initramfs-tools/hooks/edid
하고 실행하여chmod +x /etc/initramfs-tools/hooks/edid
실행 가능하게 만듭니다.
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
# Begin real processing below this line
mkdir -p "${DESTDIR}/lib/firmware/edid"
cp -a /lib/firmware/edid/edid.bin "${DESTDIR}/lib/firmware/edid/edid.bin"
exit 0
- 실행
sudo update-initramfs -u
하고sudo update-grub
- 완벽한! 재시작..
원천:
https://forums.developer.nvidia.com/t/165hz-internal-screen-stuck-at-40hz
https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1814938/comments/5
https://gitlab.freedesktop.org/drm/intel/-/issues/125#note_1068317
답변2
Arch를 사용하는 경우 eminfedar의 6단계와 7단계를 다음으로 바꾸십시오.
스크립트를 에 저장하지 말고 /etc/initramfs-tools/hooks/edid
에 저장하십시오 /etc/initcpio/install/edid
.
스크립트:
#!/bin/bash
build() {
add_file /lib/firmware/edid/edid.bin
}
help() {
cat <<HELPEOF
This hook add support for 165Hz
HELPEOF
}
실행 가능하게 만드십시오 chmod +x /etc/initcpio/install/edid
.
지금 추가에이디드/etc/mkinitcpio.conf
이렇게 후크 배열 끝에 HOOKS=(... fsck edid)
.
마지막으로, rebuild initramfs를 사용 sudo mkinitcpio -P
하고 update grub을 사용하세요 sudo grub-mkconfig -o /boot/grub/grub.cfg
.
PS 새로고침 빈도가 edid.bin
변경되는지 확인하세요. 내 것은읽기 전용모르겠습니다.
이 솔루션을 더 많은 사람들과 공유해 주세요. 노트북에서 흔히 발생하는 문제를 매우 효과적으로 해결합니다.