NVIDIA (Русский)/Troubleshooting (Русский) - ArchWiki

Jump to content
From ArchWiki
< NVIDIA (Русский)
Состояние перевода: На этой странице представлен перевод статьи NVIDIA/Troubleshooting. Дата последней синхронизации: 9 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

## Повреждённый экран: проблема "шести экранов"

У некоторых пользователей с GeForce GT 100M, после запуска X экран оказывается повреждённым, разделённым на 6 секций с ограниченным разрешением 640x480. Сообщалось о такой же проблеме с Quadro 2000 и мониторами высокого разрешения.

Чтобы решить эту проблему, пропишите `NoTotalSizeCheck` в секции `Device`:

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

## '/dev/nvidia0' input/output error

Эта ошибка может возникать по различным причинам, и чаще всего предлагается проверка прав доступа к группам/файлам, что почти в каждом случае не является проблемой. В документации NVIDIA не говорится подробно о том, что нужно делать для решения проблемы, но есть несколько вещей, которые помогли некоторым людям. Проблема может заключаться в конфликте IRQ с другим устройством или в неправильной маршрутизации ядром или BIOS.

Первым делом попробуйте убрать другие видеоустройства, например, карты видеозахвата, и посмотрите, исчезнет ли проблема. Если в одной системе слишком много видеопроцессоров, это может привести к тому, что ядро не сможет их запустить из-за проблем с распределением памяти видеоконтроллера. На системах с малым объёмом видеопамяти это может произойти даже при наличии только одной видеокарты. Узнайте объём видеопамяти системы (например, с помощью `lspci -v`) и передайте параметры распределения ядру, например, для 32-битного ядра:

    vmalloc=384M

В 64-битном ядре дефект драйвера может привести к тому, что модуль NVIDIA не инициализируется при включенном IOMMU. Отключение этого параметра в BIOS помогало некоторым пользователям. [1] User:Clickthem#nvidia module

Ещё можно попробовать изменить маршрутизацию IRQ BIOS с `Operating system controlled` на `BIOS controlled` или наоборот. Первый вариант может быть передан как параметр ядра:

    PCI=biosirq

Параметр ядра `noacpi` также предлагался в качестве решения, но поскольку он полностью отключает ACPI, его следует использовать с осторожностью. Иногда оборудование повреждается от перегрева.

Примечание: Параметры ядра могут быть переданы либо через командную строку ядра, либо через файл конфигурации загрузчика. Более подробную информацию можно найти на вики-странице вашего загрузчика.

## Сбои в целом

- Попробуйте отключить `RenderAccel` в xorg.conf.
- Если Xorg пишет ошибки про `"conflicting memory type"` или `"failed to allocate primary buffer: out of memory"` или падает с сигналом 11, добавьте `nopat` в параметры ядра.
- Если компилятор NVIDIA жалуется на разные версии GCC между текущей и той, которая использовалась для компиляции ядра, добавьте в `/etc/profile`:

    export IGNORE_CC_MISMATCH=1

Больше информации про решение проблем драйвера можно найти на форуме NVIDIA.

## Плохая производительность после обновления драйвера

Если FPS упал относительно старых драйверов, проверьте, работает ли direct rendering (с помощью команды `glxinfo` из пакета mesa-utils):

    $ glxinfo | grep direct

Если эта команда выведет:

    direct rendering: No

Возможным решением может быть откат к старой версии драйвера и последующая перезагрузка.

## Избавление от разрывов

Примечание: Сообщалось, что это снижает производительность некоторых приложений OpenGL и может вызвать проблемы в WebGL. (Nvidia-Support-Thread)

Разрывы (тиринг) можно избежать принудительным включением цепочки полного композитинга, независимо от используемого вами композитора. Для проверки работоспособности опции, выполните

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

Или нажмите кнопку Advanced в меню X Server Display Configuration. ВыберитеForce Composition Pipeline или Force Full Composition Pipeline и нажмите Apply.

Для постоянного использования сделанных изменений, вам необходимо добавить следующую строку в секцию `"Screen"` в настройках Xorg. При изменении `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         "MetaModes" "nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}"
        Option         "AllowIndirectGLXProtocol" "off"
        Option         "TripleBuffer" "on"
    EndSection

Если у вас нет конфигурационного файла Xorg, вы можете создать его для текущей видеокарты исполльзуя `nvidia-xconfig` (смотрите NVIDIA (Русский)#Автоматическая настройка) и переместить его из `/etc/X11/xorg.conf` в более удобное место `/etc/X11/xorg.conf.d/20-nvidia.conf`.

Примечание: Многие параметры конфигурации, которые генерирует `nvidia-xconfig`, устанавливаются драйвером автоматически и на самом деле не нужны. Для включения полного композитинга нужна только секция "Screen", содержащая строки со значениями `Identifier` и `Option` Остальные секции могут быть удалены из этого файла.

### Несколько мониторов

В случае нескольких мониторов нужно указать `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

Строка из примера выше предназначена для двух мониторов 3840x2160, подключенных к DP-2 и DP-4. Вам нужно будет прочитать правильный `CurrentMetaMode` путём экспорта `xorg.conf` и добавить `ForceCompositionPipeline` для каждого из ваших мониторов. Установка `ForceCompositionPipeline` влияет только на целевой монитор.

Совет: Многомониторные установки, использующие мониторы разных моделей, могут иметь немного разные частоты обновления. Если vsync включен драйвером, он будет синхронизироваться только с одной из этих частот, что может привести к появлению разрывов экрана на неправильно синхронизированных мониторах. Выберите для синхронизации основной монитор, поскольку другие не будут синхронизироваться должным образом. Это можно настроить в `~/.nvidia-settings-rc` как `0/XVideoSyncToDisplayID=` или установив nvidia-settings и используя графические настройки.

## Ошибка modprobe: "Could not insert 'nvidia': No such device" на 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.
    ...

Проблема вызвана плохими коммитами, относящимися к управлению питанием PCIe в ядре Linux (как описано в этой ветке на NVIDIA DevTalk).

Обходным решением является добавление `pcie_port_pm=off` в параметры ядра. Обратите внимание, что это отключает управление питанием PCIe для всех устройств.

## Повреждение экрана после ждущего режима

Драйвер nvidia обычно сохраняет только основные распределения видеопамяти в ждущем и спящем режимах. В результате потеря содержимого видеопамяти может привести к повреждению рендеринга и сбоям приложений.

Смотрите NVIDIA/Советы и рекомендации#Сохранение видеопамяти в ждущем режиме.

## Скачки нагрузки процессора при использовании карт серии 400

Это может быть вызвано тем, что PowerMizer постоянно изменяет тактовую частоту GPU. Переключив настройки PowerMizer с Adaptive на Performance, добавьте следующее в секцию `Device` настроек Xorg:

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

## Полное зависание системы или сбои при использовании Flash

Попробуйте отключить аппаратное ускорение:

    /etc/adobe/mms.cfg

    EnableLinuxHWVideoDecode=0

Или, если вы хотите оставить аппаратное ускорение включенным, но допускаете больший шанс возникновения разрывов экрана, вы можете попробовать сделать это перед запуском браузера:

    export VDPAU_NVIDIA_NO_OVERLAY=1

## X зависает на ноутбуках при входе или выходе, обходится через Ctrl+Alt+Backspace

Если при использовании старых драйверов NVIDIA Xorg зависает при входе и выходе из системы (особенно при странном разделении экрана на две чёрно-бело-серые части), но вход в систему всё ещё возможен с помощью `Ctrl+Alt+Backspace` (или другом сочетании клавиш для «убийства X»), попробуйте добавить следующее в `/etc/modprobe.d/modprobe.conf`:

    options nvidia NVreg_Mobile=1

Одному пользователю помогло следующее, но у других производительность значительно падает:

    options nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=33 NVreg_DeviceFileMode=0660 NVreg_SoftEDIDs=0 NVreg_Mobile=1

Значение `NVreg_Mobile` может понадобиться изменить в зависимости от производителя ноутбука:

- 1 — Dell
- 2 — не-Compal Toshiba
- 3 — другие ноутбуки
- 4 — Compal Toshiba
- 5 — Gateway

Смотрите NVIDIA Driver's README: Appendix K для более подробной информации.

## Экран(ы) найден(ы), но ни один из них не имеет пригодной для использования конфигурации

Иногда у NVIDIA и X возникают проблемы с поиском активного экрана. Если ваша видеокарта имеет несколько выходов, попробуйте подключить монитор к другим выходам. На ноутбуке это может быть связано с тем, что ваша видеокарта имеет VGA/TV выход. Xorg.0.log предоставит больше информации.

Ещё можно попробовать добавить некорректную опцию `"ConnectedMonitor"` в секцию `Section "Device"`, чтобы Xorg выкинул ошибку и показал, как её исправить. Здесь подробнее о настройке ConnectedMonitor.

После повторного запуска X посмотрите Xorg.0.log, чтобы узнать правильные значения CRT-x, DFP-x, TV-x.

`nvidia-xconfig --query-gpu-info` может быть полезен.

## Чёрный экран при запуске X / Выключение компьютера при остановке X

Если вы установили обновление Nvidia и ваш экран остаётся черным после запуска Xorg, или если остановка Xorg приводит к выключению компьютера, попробуйте следующие обходные пути:

- Добавьте "xrandr --auto" в xinitrc
- Используйте параметр ядра `rcutree.rcu_idle_gp_delay=1`
- Вы также можете попробовать добавить модуль `nvidia` в mkinitcpio
- Если экран всё равно чёрный после выполнения двух предыдущих пунктов, попробуйте переустановить nvidia и nvidia-utils именно в таком порядке, и, наконец, перезагрузить драйвер:

    # modprobe nvidia

## Подсветка не выключается в некоторых случаях

По умолчанию DPMS должен отключать подсветку при установленных таймаутах или при запуске xset. Однако, вероятно, из-за ошибки в проприетарных драйверах Nvidia в результате получается пустой экран без какого-либо отключения подсветки. Чтобы обойти это, пока ошибка не будет исправлена, можно использовать vbetool от имени root.

Следующая команда выключит экран, а затем нажатие случайной клавиши включит подсветку снова:

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

Или можно попробовать xrandr, который не требует root:

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

### Драйвер 415: HardDPMS

Собственный драйвер 415 имеет новую функцию под названием HardDPMS. По сообщениям некоторых пользователей, она решает проблемы с приостановкой мониторов, подключенных через DisplayPort. Сообщается, что в одной из будущих версий драйвера она будет использоваться по умолчанию, а пока опцию `HardDPMS` можно установить в секциях `Device` или `Screen`. Например:

    /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

## Не удаётся запустить Xorg, или красный экран смерти

Если вы получаете красный экран и используете GRUB, отключите фреймбуфер GRUB, и раскомментировав строку `GRUB_TERMINAL_OUTPUT=console` в файле `/etc/default/grub`. Подробнее: GRUB/Tips and tricks#Disable framebuffer.

## Чёрный экран на системах со встроенным GPU Intel

Если у вас процессор Intel с интегрированным GPU (например, Intel HD 4000) и установлен пакет nvidia, вы можете столкнуться с чёрным экраном при загрузке, при смене виртуального терминала или при выходе из X-сессии. Это может быть вызвано конфликтом между графическими модулями. Эта проблема решается внесением модулей Intel GPU в чёрный список. Создайте файл `/etc/modprobe.d/blacklist.conf` и запретите модулям i915 и intel_agp загружаться при включении:

    /etc/modprobe.d/blacklist.conf

    install i915 /usr/bin/false
    install intel_agp /usr/bin/false

## Нет звука через HDMI

Иногда аудиоустройства nvidia HDMI не отображаются в выводе команды

    aplay -l

По какой-то причине на некоторых новых компьютерах аудиочип на графическом процессоре 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, поместите эти строки в скрипт, чтобы не остаться без работающего экрана.

## Чёрный экран на системах со встроенным GPU VIA

Аналогично ситуации с GPU Intel, внесение модуля viafb в чёрный список может решить конфликты с драйверами NVIDIA:

    /etc/modprobe.d/blacklist.conf

    install viafb /usr/bin/false

## Ошибка "no screens found" при использовании нескольких видеокарт

Если есть несколько видеокарт и X не запускается с ошибкой:

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

то вам нужно добавить BusID дискретной карты в конфигурацию X. Это может произойти в системах с процессором Intel и встроенном GPU или при подключении нескольких карт Nvidia. Найдите свой BusID:

    # lspci | grep -E "VGA|3D controller"

    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)

Затем исправьте это, добавив его в раздел `"Device"` карты в конфигурации X. В данном случае:

    /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 должен быть десятичным.

То есть, к примеру, `5e:00.0` из lspci нужно будет преобразовать в `PCI:94:0:0`.

## 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. Сначала создайте файлы для устройств DRI, создав новое правило udev.

    /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 через пробел.

## xrandr BadMatch

Если вы пытаетесь настроить WQHD монитор, например DELL U2515H, используя xrandr, и `xrandr --addmode` выдаёт ошибку `X Error of failed request: BadMatch`, это может быть связано с тем, что проприетарный драйвер NVIDIA обрезает максимальную частоту пиксельной синхронизации HDMI выхода до 225 МГц или ниже. Чтобы настроить монитор на максимальное разрешение, необходимо установить драйверы nouveau. Вы можете заставить nouveau использовать определённую частоту, прописав `nouveau.hdmimhz=297` (или `330`) в параметры ядра.

Другой причиной может быть неправильный EDID вашего монитора. Смотрите #Переопределение EDID.

Ещё причиной может быть то, что по умолчанию текущие драйверы NVidia разрешают только режимы, явно указанные в EDID; но иногда требуются частоты обновления и/или разрешения, о которых монитор не сообщает (хотя информация EDID верна; просто текущие драйверы NVidia слишком строгие).

В этом случае вы можете добавить опцию в `xorg.conf`, чтобы разрешить режимы, не указанные в EDID:

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

Этот параметр может быть установлен для каждого выхода. Подробности можно узнать в NVidia driver readme (Appendix B. X Config Options).

## Переопределение EDID

Смотрите Kernel mode setting (Русский)#Принудительный режим и EDID, Xrandr#Troubleshooting и Qnix QX2710#Fixing X11 with Nvidia.

## Попытка разгона выдаёт Unknown Error

Если вы запускаете Xorg без прав root и пытаетесь разогнать видеокарту, вы получите ошибку вроде такой:

    $ 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 (Русский)#Использование Xorg без прав суперпользователя для подробностей.

## Система не включается после установки драйвера

Если после установки драйвера NVIDIA система зависает, не доходя до экранного менеджера, попробуйте отключить kernel mode setting.

## X выдаёт ошибку "Failing initialization of X screen"

Если в `/var/log/Xorg.0.log` есть такое:

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

и nvidia-smi пишет `No running processes found`

Решение заключается в том, чтобы сначала переустановить последнюю версию 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"` и перезагрузиться.

## Система не возвращается из ждущего режима

Если в журнале вы видите:

    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).

Возможное решение [2]:

Выполните эту команду, чтобы получить строку `version`:

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

И добавьте параметр ядра `acpi_osi=! "acpi_osi=version"`.

## Ошибка при запуске Vulkan-приложений

Если при запуске приложений, требующих Vulkan, вы видите такую ошибку

    Vulkan call failed: -4

Попробуйте удалить каталог `~/.nv` или `~/.cache/nvidia`.

Categories:

- Graphics (Русский)
- X server (Русский)