我的笔记本电脑上有 i7-10875H 处理器。我已禁用 NVIDIA dGPU,因此问题仅与英特尔驱动程序有关。
我正在使用 Debian 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:
经过长时间的努力,我已经解决了这个问题。
解决方案:
真正的解决方案是:英特尔显卡(i915)驱动程序应该更新
临时解决方案是编辑笔记本电脑屏幕的 EDID 文件并将像素速率更改为接近 655Mhz 的限制。
如何更改 EDID 文件:
cp /sys/devices/pci0000\:00/0000\:00\:02.0/drm/card0/card0-eDP-1/edid ~/edid.bin
(eDP-1 是屏幕,0000:00:02.0 是英特尔驱动程序的 PCIe 总线 ID。您可以使用lspci
vexrandr
获取它们。)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
以使其可执行: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
如果您使用的是 Arch,请将 eminfedar 的第 6 步和第 7 步替换为以下内容:
不要将脚本保存到
/etc/initramfs-tools/hooks/edid
,而是将其保存到/etc/initcpio/install/edid
.剧本:
使其可执行
chmod +x /etc/initcpio/install/edid
。现在像这样将edid添加到钩子数组的末尾。
/etc/mkinitcpio.conf
HOOKS=(... fsck edid)
最后,使用 重新生成 initramfs
sudo mkinitcpio -P
并使用 更新 grubsudo grub-mkconfig -o /boot/grub/grub.cfg
。PS确保刷新率
edid.bin
确实被改变了,我的只读,我不知道。请与更多人分享此解决方案,非常有效地解决笔记本电脑上普遍存在的问题。