跳转至内容

NVIDIA/故障排除

来自 ArchWiki

启动失败

驱动程序安装后系统无法启动

如果在安装 NVIDIA 驱动程序后,系统在达到显示管理器之前卡住,请尝试 禁用内核模式设置

Xorg 无法加载或“红色屏幕之死”

如果您看到红色屏幕并使用 GRUB,请通过编辑 /etc/default/grub 并取消注释 GRUB_TERMINAL_OUTPUT=console 来禁用 GRUB 帧缓冲。有关更多信息,请参阅 GRUB/Tips and tricks#Disable framebuffer

X 启动时黑屏 / X 关闭时机器断电

如果您安装了 NVIDIA 的更新,并且在启动 Xorg 后屏幕保持黑屏,或者在关闭 Xorg 时导致机器断电,请尝试以下解决方法:

  • 在您的 xinitrc 文件开头添加 xrandr --auto
  • 使用 rcutree.gp_init_delay=1 内核参数
  • 您也可以尝试将 nvidia 模块直接添加到您的 mkinitcpio.conf 文件中。

找到屏幕,但没有可用的配置

有时 NVIDIA 和 X 会难以找到活动的屏幕。如果您的显卡有多个输出,请尝试将显示器插入其他输出。在笔记本电脑上,这可能是因为您的显卡有 VGA/TV 输出。Xorg.0.log 会提供更多信息。

另一个尝试的方法是向 Section "Device" 添加一个无效的 Option "ConnectedMonitor",以强制 Xorg 抛出错误并显示如何纠正它。有关 ConnectedMonitor 设置的更多信息,请参阅 文档

重新运行 X 后,查看 Xorg.0.log 以获取有效的 CRT-x、DFP-x、TV-x 值。

nvidia-xconfig --query-gpu-info 可能会有帮助。

X 出现“初始化 X 屏幕失败”错误

如果 /var/log/Xorg.0.log 显示 X 服务器无法初始化屏幕

(EE) NVIDIA(G0): GPU screens are not yet supported by the NVIDIA driver
(EE) NVIDIA(G0): Failing initialization of X screen

并且 nvidia-smi 显示 未找到正在运行的进程

解决方案是首先重新安装最新的 nvidia-utils,然后将 /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf 复制到 /etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf,然后编辑 /etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf 并添加行 Option "PrimaryGPU" "yes"。重启电脑。问题将得到解决。

Xorg 在启动时失败,但其他方面启动正常

在启动速度非常快的系统上,systemd 可能会在 NVIDIA 驱动程序完全初始化之前尝试启动显示管理器。您将在日志中看到类似以下的提示,仅在 Xorg 启动时发生。

/var/log/Xorg.0.log
[     1.807] (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module. Please see the
[     1.807] (EE) NVIDIA(0):     system's kernel log for additional error messages and
[     1.808] (EE) NVIDIA(0):     consult the NVIDIA README for details.
[     1.808] (EE) NVIDIA(0):  *** Aborting ***

在这种情况下,您需要建立从显示管理器到 DRI 设备的一个排序依赖关系。首先,通过创建一个新的 udev 规则文件来为 DRI 设备创建设备单元。

/etc/udev/rules.d/99-systemd-dri-devices.rules
ACTION=="add", KERNEL=="card*", SUBSYSTEM=="drm", TAG+="systemd"

然后,从显示管理器到设备建立依赖关系。

/etc/systemd/system/display-manager.service.d/10-wait-for-dri-devices.conf
[Unit]
Wants=dev-dri-card0.device
After=dev-dri-card0.device

如果您有额外的卡需要用于桌面,请将它们列在 Wants 和 After 中,用空格分隔。

集成 GPU 系统上的黑屏

如果您有一个带有集成 GPU 的系统(例如 Intel HD 4000、VIA VX820 Chrome 9 或 AMD Cezanne),并且安装了 nvidia-580xx-dkmsAUR 或更早的软件包,您可能会在启动时、切换虚拟终端时或退出 X 会话时遇到黑屏。这可能是由于图形模块之间的冲突引起的。通过将相关 GPU 模块列入黑名单来解决此问题。创建文件 /etc/modprobe.d/blacklist.conf 并阻止相关模块在启动时加载。

/etc/modprobe.d/blacklist.conf
install i915 /usr/bin/false
install intel_agp /usr/bin/false
install viafb /usr/bin/false
install radeon /usr/bin/false
install amdgpu /usr/bin/false

使用多 GPU 时 X 出现“未找到屏幕”错误

在您可能在系统上有多个 GPU 并且 X 启动失败的情况下:

[ 76.633] (EE) No devices detected.
[ 76.633] Fatal server error:
[ 76.633] no screens found

您需要将您的独立显卡的 BusID 添加到 X 配置中。这可能发生在带有 Intel CPU 和集成 GPU 的系统上,或者如果您连接了多个 NVIDIA 卡。查找您的 BusID:

# lspci -d ::03xx
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)

然后,通过将其添加到 X 配置中显卡的 Device 部分来修复。在我的例子中:

/etc/X11/xorg.conf.d/10-nvidia.conf
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:1:0:0"
EndSection
注意 BusID 格式很重要!

在上例中,01:00.0 被剥离为 1:0:0,但某些转换可能更复杂。lspci 输出为十六进制格式,但在配置文件中,BusID 为十进制格式!这意味着,当 BusID 大于 9 时,您需要将其转换为十进制!

例如:lspci 中的 5e:00.0 变为 PCI:94:0:0

Modprobe 错误:“无法插入‘nvidia’:设备不存在” (linux >=4.8)

在 Linux 4.8 中,当尝试使用独立显卡时,您可能会遇到以下错误:

# modprobe nvidia -vv
modprobe: INFO: custom logging function 0x409c10 registered
modprobe: INFO: Failed to insert module '/lib/modules/4.8.6-1-ARCH/extramodules/nvidia.ko.gz': No such device
modprobe: ERROR: could not insert 'nvidia': No such device
modprobe: INFO: context 0x24481e0 released
insmod /lib/modules/4.8.6-1-ARCH/extramodules/nvidia.ko.gz
# dmesg
...
NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:139b)
NVRM: installed in this system is not supported by the 370.28
NVRM: NVIDIA Linux driver release.  Please see 'Appendix
NVRM: A - Supported NVIDIA GPU Products' in this release's
NVRM: README, available on the Linux driver download page
NVRM: at www.nvidia.com.
...

此问题是由 Linux 内核中与 PCIe 电源管理相关的错误提交引起的(如 NVIDIA DevTalk 线程中所记录)。

解决方法是将 pcie_port_pm=off 添加到您的 内核参数中。请注意,这会禁用所有设备的 PCIe 电源管理。

系统从挂起状态无法恢复

日志中看到的内容:

kernel: nvidia-modeset: ERROR: GPU:0: Failed detecting connected display devices
kernel: nvidia-modeset: ERROR: GPU:0: Failed detecting connected display devices
kernel: nvidia-modeset: WARNING: GPU:0: Failure processing EDID for display device DELL U2412M (DP-0).
kernel: nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device DELL U2412M (DP-0)
kernel: nvidia-modeset: ERROR: GPU:0: Failure reading maximum pixel clock value for display device DELL U2412M (DP-0).

一个可能的解决方案基于 [1]

运行此命令以获取 version 字符串:

# strings /sys/firmware/acpi/tables/DSDT | grep -i 'windows ' | sort | tail -1

acpi_osi=! "acpi_osi=version" 内核参数添加到您的 引导加载程序配置中。

另一个可能导致此问题的原因是使用了 nvidia-open 软件包,如这里所述:

从挂起状态恢复时黑屏

如果您遇到黑屏问题,并且日志中包含:

archlinux kernel: NVRM: GPU at PCI:0000:08:00: GPU-926ecdb0-adb1-6ee9-2fad-52e7214c5011
archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi>
archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi>
archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi>
archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi>
archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphi>

您需要启用 NVIDIA 的挂起、休眠和服务,如 NVIDIA/Tips and tricks#Preserve video memory after suspend 中所述。

崩溃和挂起

总体崩溃

  • 尝试 禁用 GSP 固件
  • 在 xorg.conf 中禁用 RenderAccel
  • 如果 Xorg 输出关于 “conflicting memory type”“failed to allocate primary buffer: out of memory” 的错误,或者在使用 nvidia-96xx 驱动程序时因“Signal 11”而崩溃,请将 nopat 添加到您的 内核参数中。
  • 如果 NVIDIA 编译器抱怨当前 GCC 版本与编译内核时使用的版本不同,请在 /etc/profile 中添加:
export IGNORE_CC_MISMATCH=1
  • 如果全屏应用程序冻结或崩溃,请尝试在桌面环境的设置中启用 Display CompositingDirect fullscreen rendering 选项。

网格着色器支持不佳

此 bug 仅存在于依赖它的新游戏,例如《最终幻想 VII 重制版》。即使使用最新的测试版驱动程序,在使用 NVIDIA GPU 时也会反映出来,因为缺少环境。[2]

但是,pyroveil,最近开发出来,允许您绕过 SPIR-V 的问题,同时等待 NVIDIA 的修复。

您需要按照 GitHub 上的教程编译并安装该工具,然后使用 PYROVEIL=1PYROVEIL_CONFIG=/path/to/pyroveil/hacks/ffvii-rebirth-nvidia/pyroveil.json 环境变量运行游戏。

OpenGL 应用程序中出现视觉故障、挂起和错误

如果您使用的是较新的 CPU(Intel Sandy Bridge(2011 年及以后)或 AMD Zen(2017 年及以后)),它具有微操作缓存。使用微操作缓存可能导致 NVIDIA 驱动程序在 OpenGL 中出现问题,因为缓存别名 [3]。您通常可以在系统的 BIOS 中禁用微操作缓存,但这会以性能为代价 [4]。禁用微操作缓存也有助于解决 Xwayland 应用程序中最严重的图形故障,但它不能完全解决问题 [5]

更新和/或重启系统时内核恐慌

这是 NVIDIA 550 系列驱动程序中存在的已知 bug。[6] 原因尚不清楚,但似乎仅影响笔记本电脑。有关更多详细信息,请参阅 BBS#293400

作为解决方法,如果硬件支持,请切换到 nvidia-open-dkms,否则使用 nvidia-535xx-dkmsAUR

GSP 固件

自 2024 年 6 月发布的 NVIDIA 驱动程序 555 版本起默认启用的 GSP 固件已知会导致 一系列问题,包括 Vulkan 失败和系统崩溃。

要禁用它,请为 nvidia 内核模块使用 NVreg_EnableGpuFirmware=0 模块参数。这仅适用于专有 NVIDIA 驱动程序:如果从开源驱动程序切换,请参阅 NVIDIA#Installation

如果需要,请不要忘记 重新生成 initramfs。要使此新的内核模块选项生效,请重启。

视觉问题

避免屏幕撕裂

可以通过强制全合成管道来避免撕裂,无论您使用何种合成器。要测试此选项是否有效,请运行:

$ nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

或者点击 X Server Display Configuration 菜单选项中可用的 Advanced 按钮。选择 Force Composition PipelineForce Full Composition Pipeline,然后点击 Apply

为了使更改永久生效,必须将其添加到 Xorg 配置文件中的 "Screen" 部分。进行此更改时,TripleBuffering 应被启用,并且 AllowIndirectGLXProtocol 应在驱动程序配置中被禁用。请参阅下面的示例配置:

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
        Identifier "NVIDIA Card"
        Driver     "nvidia"
        VendorName "NVIDIA Corporation"
        BoardName  "GeForce GTX 1050 Ti"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    Option         "ForceFullCompositionPipeline" "on"
    Option         "AllowIndirectGLXProtocol" "off"
    Option         "TripleBuffer" "on"
EndSection

如果您没有 Xorg 配置文件,可以使用 nvidia-xconfig 为您当前的硬件创建一个(请参阅 NVIDIA#Automatic configuration),并将其从 /etc/X11/xorg.conf 移动到首选位置 /etc/X11/xorg.conf.d/20-nvidia.conf

注意 使用 nvidia-xconfig 生成的 20-nvidia.conf 中的许多配置选项已由驱动程序自动设置,并且不需要。要仅使用此文件来启用合成管道,只有包含 IdentifierOption 行值的 "Screen" 部分是必需的。其他部分可以从该文件中删除。

多显示器

对于多显示器设置,您需要为每个显示器指定 ForceCompositionPipeline=On。例如:

$ nvidia-settings --assign CurrentMetaMode="DP-2: nvidia-auto-select +0+0 {ForceCompositionPipeline=On}, DP-4: nvidia-auto-select +3840+0 {ForceCompositionPipeline=On}"

如果不这样做,nvidia-settings 命令将禁用您的次要显示器。

您可以使用 --query 获取当前屏幕名称和偏移量:

$ nvidia-settings --query CurrentMetaMode

上面的行适用于连接到 DP-2 和 DP-4 的两个 3840x2160 显示器。您需要读取正确的 CurrentMetaMode,方法是导出 xorg.conf 并为每个显示器附加 ForceCompositionPipeline。设置 ForceCompositionPipeline 仅影响目标显示器。

提示 使用不同型号显示器的多显示器设置可能具有略微不同的刷新率。如果 VSync 由驱动程序启用,它将仅同步到其中一个刷新率,这可能导致在未正确同步的显示器上出现屏幕撕裂。选择同步主要使用的显示器设备,因为其他显示器将无法正确同步。这可以在 ~/.nvidia-settings-rc 中配置为 0/XVideoSyncToDisplayID=,或者通过安装 nvidia-settings 并使用图形配置选项来配置。

从挂起或休眠恢复后屏幕损坏

这也适用于外接显示器在挂起或休眠后不唤醒的情况。

请参阅 NVIDIA/Tips and tricks#Preserve video memory after suspend

使用 GDM 服务在挂起后出现的损坏 bug 已在驱动程序版本 515.43.04 中得到解决 [7]

屏幕损坏:“六屏”问题

对于一些用户,使用 GeForce GT 100M,屏幕在 X 启动后损坏,分为 6 个部分,分辨率限制为 640x480。Quadro 2000 和高分辨率显示器也报告了类似问题。

要解决此问题,请在 Device 部分启用验证模式 NoTotalSizeCheck

Section "Device"
 ...
 Option "ModeValidation" "NoTotalSizeCheck"
 ...
EndSection

使用 nvidia-470 时文本和图标不可见

GTK4 的更新给依赖旧版显卡 nvidia-470 驱动程序的用户带来了问题。更新后,文本和图标会随机消失,并且只有在鼠标悬停在窗口上时才会重新出现。[8]

有关解决方法,请参阅 论坛

修复 GNOME Shell 从睡眠恢复时的图形损坏

如果您在从睡眠中恢复时遇到 GNOME Shell 中的奇怪字体和/或奇怪的图形故障,请尝试设置以下 内核参数以启用电源管理:

nvidia.NVreg_DynamicPowerManagement=0x02

更多信息:https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/dynamicpowermanagement.html

显示器关闭或恢复时系统冻结

如果系统在桌面环境关闭显示器(DPMS)后或从挂起恢复时立即冻结或崩溃,并且 dmesg/journal 显示 GSP 超时,例如:

NVRM: _kgspLogXid119: ********************************* GSP Timeout **********************************
NVRM: Xid (PCI:0000:01:00): 119, Timeout after 6s of waiting for RPC response from GPU0 GSP! Expected function 76 (GSP_RM_CONTROL) sequence 1321 

GPU 在这些电源转换期间可能会降入不稳定的低时钟状态。

解决方法:使用 nvidia-smi 锁定更高的最小 GPU/内存时钟。

前提条件

启用/启动 nvidia-persistenced.service

查找支持的时钟值(用于选择有效的最小/最大对):

nvidia-smi -q -d SUPPORTED_CLOCKS
nvidia-smi -q -d CLOCK

临时测试:

设置最小时钟(示例值;根据您的 GPU 最大支持时钟进行调整):

nvidia-smi -lgc 800,2100
nvidia-smi -lmc 800,10000
Test DPMS and suspend/resume to see if the issue is resolved.
   To revert:
nvidia-smi -rgc
nvidia-smi -rmc

永久配置(systemd):创建一个单元,例如 nvidia-clocks.service

/etc/systemd/system/nvidia-clocks.service
[Unit]
Description=Set NVIDIA GPU minimum clocks to avoid  GSP timeouts
Requires=nvidia-persistenced.service
After=nvidia-persistenced.service 

[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -lgc 500,2100
ExecStart=/usr/bin/nvidia-smi -lmc 500,10000
RemainAfterExit=yes 

[Install]
WantedBy=multi-user.target

您可以调整最小时钟,使其低于前面提到的 800 以降低空闲功耗;只需注意,设置过低将导致问题再次发生。

然后 启用/启动 nvidia-clocks.service

性能问题

安装新驱动程序版本后性能下降

本文或本章节的准确性存在争议。

原因:我们应该尝试找到根本原因(阅读 dmesg、dkms 日志等),而不是盲目降级驱动程序。(在 Talk:NVIDIA/Troubleshooting 中讨论)

如果 FPS 与旧驱动程序相比有所下降,请检查是否启用了直接渲染(glxinfo 包含在 mesa-utils 中)。

$ glxinfo | grep direct

如果命令输出:

direct rendering: No

一种可能的解决方案是回滚到以前安装的驱动程序版本,然后重启。

Xorg 极端延迟

本文或本章节的准确性存在争议。

原因:根据 一位 NVIDIA 开发人员的说法,此问题并非 GNOME 特有,并且该问题中的其余评论未提及多显示器设置。(在 Talk:NVIDIA/Troubleshooting 中讨论)

Mutter 的一个常见问题是 动画、视频播放和游戏导致 Xorg 桌面延迟极大

请参阅 NVIDIA/技巧和窍门#挂起后保留视频内存

这应该能解决这个问题,但是如果不行,您很可能就无能为力了。您可以尝试通过添加以下选项来解决此问题:

/etc/environment
CLUTTER_DEFAULT_FPS=YOUR_MAIN_DISPLAY_REFRESHRATE
__GL_SYNC_DISPLAY_DEVICE=YOUR_MAIN_DISPLAY_OUTPUT_NAME

在 NVIDIA Settings 中关闭 Sync to VBlankAllow flipping,并将 NVIDIA Settings 配置为使用 --load-config-only 标志在启动时运行。这仍然会导致桌面行为迟缓,尤其是在第二个(或第三个)显示器上,但应该会好很多。

400 系列显卡 CPU 占用率飙升

如果您在使用 400 系列显卡时遇到间歇性的 CPU 占用率飙升,这可能是由 PowerMizer 不断改变 GPU 时钟频率引起的。将 PowerMizer 的设置从“Adaptive”切换到“Performance”,并在 Xorg 配置的 Device 部分添加以下内容:

 Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"

其他问题

应用程序启动时 Vulkan 错误

本文或本章节的准确性存在争议。

原因:需要其他用户的确认(在 Talk:NVIDIA/Troubleshooting 中讨论)

在执行需要 Vulkan 加速的应用程序时,如果您收到此错误:

Vulkan call failed: -4

尝试删除 ~/.nv~/.cache/nvidia 目录。

HDMI 音频无声

有时 NVIDIA HDMI 音频设备在您执行以下操作时不会显示:

$ aplay -l

在一些新机器上,NVIDIA GPU 上的音频芯片在启动时被禁用。有关更多信息,请阅读 NVIDIA 网站论坛帖子

您需要重新加载启用音频的 NVIDIA 设备。要做到这一点,请确保您的 GPU 已开启(对于笔记本电脑/Bumblebee),并且您没有在上面运行 X,因为它将重置:

# setpci -s 01:00.0 0x488.l=0x2000000:0x2000000
# rmmod nvidia-drm nvidia-modeset nvidia
# echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove
# echo 1 > /sys/bus/pci/devices/0000:00:01.0/rescan
# modprobe nvidia-drm
# xinit -- -retro

如果您在 NVIDIA 上运行 TTY,请将这些行放入一个脚本中,以免出现没有屏幕的情况。

背光在某些情况下未关闭

默认情况下,DPMS 应在设置的超时后或通过运行 xset 关闭背光。然而,这可能是由于专有 NVIDIA 驱动程序中的一个 bug,导致屏幕变黑,但没有任何省电功能。要解决此问题,直到 bug 被修复,您可以使用 root 权限运行 vbetool

安装 vbetool 软件包。

按需关闭屏幕,然后通过按任意键唤醒背光:

vbetool dpms off && read -n1; vbetool dpms on

或者,xrandr 可以在不需要 root 权限的情况下禁用和重新启用显示器输出。

xrandr --output DP-1 --off; read -n1; xrandr --output DP-1 --auto

HardDPMS

本文章或章节需要扩充。

原因:添加“用户报告”的引用。(在 Talk:NVIDIA/Troubleshooting 中讨论)

专有驱动程序 415 包含一项名为 HardDPMS 的新功能。一些用户报告说,这解决了通过 DisplayPort 连接的显示器的挂起问题。自 440.26 起,它默认启用。如果您使用的是旧版驱动程序,可以在 DeviceScreen 部分设置 HardDPMS 选项。例如:

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
    ...
    Option         "HardDPMS" "true"
    ...
EndSection

Section "Screen"
    ...
    Option         "HardDPMS" "true"
    ...
EndSection

HardDPMS 会在屏幕保护程序设置(如 BlankTime)时触发。以下 ServerFlags 将在闲置 10 分钟后使您的显示器进入睡眠状态:

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "ServerFlags"
    Option     "BlankTime" "10"
EndSection

xrandr BadMatch

如果您尝试使用 xrandr 配置 WQHD 显示器(如 DELL U2515H)并且 xrandr --addmode 给出错误 X Error of failed request: BadMatch,可能是因为专有 NVIDIA 驱动程序将 HDMI 输出的像素时钟最大频率限制为 225 MHz 或更低。要将显示器设置为最高分辨率,您必须安装 nouveau 驱动程序。您可以通过在 内核参数中设置 nouveau.hdmimhz=297(或 330)来强制 nouveau 使用特定的像素时钟频率。

或者,可能是您的显示器的 EDID 不正确。请参阅 #Override EDID

另一个原因是,默认情况下,当前 NVIDIA 驱动程序仅允许 EDID 显式报告的模式,但有时需要刷新率和/或分辨率,而这些并未由显示器报告(尽管 EDID 信息是正确的;只是当前 NVIDIA 驱动程序过于严格)。

如果发生这种情况,您可能需要在 xorg.conf 中添加一个选项以允许非 EDID 模式:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
...
    Option         "ModeValidation" "AllowNonEdidModes"
...
EndSection

这可以按输出设置。有关更多信息,请参阅 README - Appendix B. X Config Options

覆盖 EDID

请参阅 Kernel mode setting#Forcing modes and EDIDXrandr#TroubleshootingQnix QX2710#Fixing X11 with Nvidia

使用 nvidia-settings GUI 超频无效

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因:重复,含糊不清的“无效”(在 Talk:NVIDIA/Troubleshooting 中讨论)

解决方法是使用 nvidia-settings 命令行工具来查询和设置某些变量,前提是已启用超频(如 NVIDIA/Tips and tricks#Enabling overclocking in nvidia-settings 中所述,有关更多信息,请参阅 nvidia-settings(1))。

查询所有变量的示例:

 nvidia-settings -q all

设置 PowerMizerMode 为首选性能模式的示例:

 nvidia-settings -a [gpu:0]/GPUPowerMizerMode=1

设置风扇速度为固定 21% 的示例:

nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=21

一次设置多个变量的示例(GPU 超频 50MHz,视频内存超频 50MHz,GPU 电压增加 100mV):

 nvidia-settings -a GPUGraphicsClockOffsetAllPerformanceLevels=50 -a GPUMemoryTransferRateOffsetGPUGraphicsClockOffsetAllPerformanceLevels=50 -a GPUOverVoltageOffset=100

超频时出现未知错误

如果您以非 root 用户身份运行 Xorg 并尝试超频 NVIDIA GPU,您将收到类似此的错误:

$ nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=10"
ERROR: Error assigning value 10 to attribute 'GPUGraphicsClockOffset' (trinity-zero:1[gpu:0]) as specified in assignment
        '[gpu:0]/GPUGraphicsClockOffset[3]=10' (Unknown Error).

为避免此问题,Xorg 必须以 root 用户身份运行。有关详细信息,请参阅 Xorg#Rootless Xorg

功耗

本文章或章节需要扩充。

原因:此部分的目的何在?(在 Talk:NVIDIA/Troubleshooting 中讨论)

检查驱动程序使用情况

# lsof /dev/nvidia*
kwin_wayl  867      user   17u   CHR   195,0      0t0  418 /dev/nvidia
kwin_wayl  867      user   18u   CHR   195,0      0t0  418 /dev/nvidiactl

如果内核模块配置了省电功能:

$ grep . /sys/bus/pci/devices/0000:01:00.0/power/*
/sys/bus/pci/devices/0000:01:00.0/power/control:auto
/sys/bus/pci/devices/0000:01:00.0/power/runtime_active_time:445933
/sys/bus/pci/devices/0000:01:00.0/power/runtime_status:active
/sys/bus/pci/devices/0000:01:00.0/power/runtime_suspended_time:1266
/sys/bus/pci/devices/0000:01:00.0/power/wakeup:disabled
# rmmod nvidia_drm
$ grep . /sys/bus/pci/devices/0000:01:00.0/power/*
/sys/bus/pci/devices/0000:01:00.0/power/control:auto
/sys/bus/pci/devices/0000:01:00.0/power/runtime_active_time:461023
/sys/bus/pci/devices/0000:01:00.0/power/runtime_status:suspended
/sys/bus/pci/devices/0000:01:00.0/power/runtime_suspended_time:1064192
/sys/bus/pci/devices/0000:01:00.0/power/wakeup:disabled

测试软件 GL

二进制 NVIDIA 驱动程序不会遵守 Mesa 环境变量 LIBGL_ALWAYS_SOFTWARE=1,但您可以通过设置以下 环境变量将 libglvnd 和 EGL 指向 Mesa:

__GLX_VENDOR_LIBRARY_NAME=mesa
__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json

这将导致 Mesa libgl 用于 GLX 和 EGL,并导致软件 GL,以检查 bug 是否与 NVIDIA GL 库相关。

刷新率限制为 120Hz

较新版本的驱动程序(550xx 之后)似乎在 8bpc 输出上浪费了带宽,很可能将信号推高到规范限制之外,结果是无法应用原本在输出规范内的更高刷新率模式。将 nvidia-modeset.hdmi_deepcolor=0 添加到 内核参数或通过 modprobe 设置选项。请注意,HDR 显示器将需要深度颜色。

Wayland HDMI 下 60Hz 色彩空间错误

在某些情况下(例如,使用 HDMI 线缆连接 1660 Super 显卡并以 60Hz),驱动程序似乎错误地假定了输出的色彩空间。这导致颜色看起来比正常情况暗。由于在 Wayland 上没有简单的方法可以明确设置色彩空间,作为解决方法,您可以将 nvidia-modeset.debug_force_color_space=2 添加到 内核参数或通过 modprobe 设置选项。