AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 680356
Accepted
eminfedar
eminfedar
Asked: 2021-12-07 04:05:26 +0800 CST2021-12-07 04:05:26 +0800 CST 2021-12-07 04:05:26 +0800 CST

i915 驱动程序在 165hz 屏幕上卡在 40hz

  • 772

我的笔记本电脑上有 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:
linux graphics
  • 2 2 个回答
  • 2455 Views

2 个回答

  • Voted
  1. Best Answer
    eminfedar
    2021-12-15T01:28:31+08:002021-12-15T01:28:31+08:00

    经过长时间的努力,我已经解决了这个问题。

    解决方案:

    真正的解决方案是:英特尔显卡(i915)驱动程序应该更新

    临时解决方案是编辑笔记本电脑屏幕的 EDID 文件并将像素速率更改为接近 655Mhz 的限制。

    如何更改 EDID 文件:

    1. 获取显示器的 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。您可以使用lspcivexrandr获取它们。)
    2. 使用此程序在 Windows 或 Wine 中打开 edid.bin 文件:https ://www.analogway.com/americas/products/software-tools/aw-edid-editor/
    3. 在“详细数据”选项卡中,使用“CVT 1.2 向导”并写入类似 144hz 刷新率的内容。(因为 165hz 的像素率在 655Mhz 以上,所以不接受 165hz。所以你应该输入更小的值。)
    4. 将编辑好的edid.bin文件复制到/lib/firmware/edid/edid.bin
    5. 在文件上/etc/default/grub,更改quiet splash如下: quiet splash drm.edid_firmware=eDP-1:edid/edid.bin
    6. 将此脚本保存到/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
    
    1. 运行sudo update-initramfs -u和sudo update-grub
    2. 完毕!重启..

    资料来源:

    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

    • 1
  2. Zijian
    2022-08-06T10:52:49+08:002022-08-06T10:52:49+08:00

    如果您使用的是 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。

    现在像这样将edid添加到钩子数组的末尾。/etc/mkinitcpio.confHOOKS=(... fsck edid)

    最后,使用 重新生成 initramfssudo mkinitcpio -P并使用 更新 grub sudo grub-mkconfig -o /boot/grub/grub.cfg。

    PS确保刷新率edid.bin确实被改变了,我的只读,我不知道。

    请与更多人分享此解决方案,非常有效地解决笔记本电脑上普遍存在的问题。

    • 0

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve