You are not logged in.

#1 2024-01-03 22:15:28

solonovamax
Member
Registered: 2020-05-04
Posts: 65
Website

Wayland shows black screen with cursor with NVIDIA proprietary drivers

I'm attempting to move from X to Wayland on my desktop, and after installing the required packages, then rebooting and selecting "Plasma (Wayland)" in sddm, my computer will show a black screen with a cursor that moves.
Additionally, my monitors will turn off for ~5 sec after boot when switching to sddm, as well as after logging through sddm.

Here is the output of yay -Qs nvidia:

local/cuda 12.3.1-2
    NVIDIA's GPU programming toolkit
local/cudnn 8.9.7.29-1
    NVIDIA CUDA Deep Neural Network library
local/egl-wayland 2:1.1.13-1
    EGLStream-based Wayland external platform
local/ffnvcodec-headers 12.1.14.0-1
    FFmpeg version of headers required to interface with Nvidias codec APIs
local/lib32-libvdpau 1.5-2
    Nvidia VDPAU library
local/lib32-nvidia-utils 545.29.06-1
    NVIDIA drivers utilities (32-bit)
local/libnvidia-container 1.14.3-1
    NVIDIA container runtime library
local/libnvidia-container-tools 1.14.3-1
    NVIDIA container runtime library
local/libvdpau 1.5-2
    Nvidia VDPAU library
local/libxnvctrl 545.29.06-1
    NVIDIA NV-CONTROL X extension
local/nvidia-container-runtime 3.13.1-4
    NVIDIA opencontainer runtime fork to expose GPU devices to containers.
local/nvidia-container-toolkit 1.13.5-1
    NVIDIA container runtime toolkit
local/nvidia-dkms 545.29.06-1
    NVIDIA drivers - module sources
local/nvidia-docker 2.13.0-1
    Build and run Docker containers leveraging NVIDIA GPUs
local/nvidia-fake-powerd 0.1.0-2
    dbus blackhole for nvidia.powerd.server for working around a bug in nvidia-495 drivers.
local/nvidia-settings 545.29.06-1
    Tool for configuring the NVIDIA graphics driver
local/nvidia-utils 545.29.06-1
    NVIDIA drivers utilities
local/nvtop 3.0.2-1
    GPUs process monitoring for AMD, Intel and NVIDIA
local/opencl-nvidia 545.29.06-1
    OpenCL implemention for NVIDIA

Here is the output of yay -Qs wayland:

local/cuda 12.3.1-2
    NVIDIA's GPU programming toolkit
local/cudnn 8.9.7.29-1
    NVIDIA CUDA Deep Neural Network library
local/egl-wayland 2:1.1.13-1
    EGLStream-based Wayland external platform
local/ffnvcodec-headers 12.1.14.0-1
    FFmpeg version of headers required to interface with Nvidias codec APIs
local/lib32-libvdpau 1.5-2
    Nvidia VDPAU library
local/lib32-nvidia-utils 545.29.06-1
    NVIDIA drivers utilities (32-bit)
local/libnvidia-container 1.14.3-1
    NVIDIA container runtime library
local/libnvidia-container-tools 1.14.3-1
    NVIDIA container runtime library
local/libvdpau 1.5-2
    Nvidia VDPAU library
local/libxnvctrl 545.29.06-1
    NVIDIA NV-CONTROL X extension
local/nvidia-container-runtime 3.13.1-4
    NVIDIA opencontainer runtime fork to expose GPU devices to containers.
local/nvidia-container-toolkit 1.13.5-1
    NVIDIA container runtime toolkit
local/nvidia-dkms 545.29.06-1
    NVIDIA drivers - module sources
local/nvidia-docker 2.13.0-1
    Build and run Docker containers leveraging NVIDIA GPUs
local/nvidia-fake-powerd 0.1.0-2
    dbus blackhole for nvidia.powerd.server for working around a bug in nvidia-495 drivers.
local/nvidia-settings 545.29.06-1
    Tool for configuring the NVIDIA graphics driver
local/nvidia-utils 545.29.06-1
    NVIDIA drivers utilities
local/nvtop 3.0.2-1
    GPUs process monitoring for AMD, Intel and NVIDIA
local/opencl-nvidia 545.29.06-1
    OpenCL implemention for NVIDIA
 17:01:41   solonovamax@solo-main  ~ 0    yay -Qs wayland
local/egl-wayland 2:1.1.13-1
    EGLStream-based Wayland external platform
local/glfw-wayland 3.3.9-1
    A free, open source, portable framework for graphical application development (wayland)
local/kwayland-integration 5.27.10-1 (plasma)
    Provides integration plugins for various KDE frameworks for the wayland windowing system
local/kwayland5 5.113.0-1 (kf5)
    Qt-style Client and Server library wrapper for the Wayland libraries
local/layer-shell-qt 5.27.10-1 (plasma)
    Qt component to allow applications to make use of the Wayland wl-layer-shell protocol
local/lib32-libva 2.20.0-1
    Video Acceleration (VA) API for Linux (32-bit)
local/lib32-wayland 1.22.0-1
    A computer display server protocol
local/libdecor 0.2.1-2
    Client-side decorations library for Wayland clients
local/libva 2.20.0-1
    Video Acceleration (VA) API for Linux
local/plasma-wayland-session 5.27.10-2
    Plasma Wayland session
local/qt5-wayland 5.15.11+kde+r60-1 (qt5)
    Provides APIs for Wayland
local/qt6-wayland 6.6.1-1 (qt6)
    Provides APIs for Wayland
local/sddm 0.20.0-2
    QML based X11 and Wayland display manager
local/wayland 1.22.0-1
    A computer display server protocol
local/wayland-protocols 1.32-1
    Specifications of extended Wayland protocols
local/wayland-utils 1.2.0-1
    Wayland tools to display information about current compositor
local/xorg-xwayland 23.2.3-1 (xorg)
    run X clients under wayland

Here is my /etc/default/grub:

# GRUB boot loader configuration

GRUB_DEFAULT="saved"
GRUB_TIMEOUT="10"
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quietamd_iommu=on nvidia-drm.modeset=1"
GRUB_CMDLINE_LINUX=""

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK="y"

# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE="menu"

# Uncomment to use basic console
GRUB_TERMINAL_INPUT="console"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT="console"

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE="auto"

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX="keep"

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID="true"

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
export GRUB_COLOR_NORMAL="light-blue/black"
export GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
GRUB_THEME="/boot/grub/themes/Vimix/theme.txt"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
GRUB_SAVEDEFAULT="true"

#GRUB_DISABLE_LINUX_RECOVERY="true"

Here is my /etc/mkinitcpio.conf:

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=()

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No RAID, lvm2, or encrypted root is needed.
#    HOOKS=(base)
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect modconf block filesystems fsck)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev modconf block filesystems fsck)
#
##   This setup assembles a mdadm array with an encrypted root file system.
##   Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
#    HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
##   This setup loads an lvm2 volume group.
#    HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used. Use 'cat' to create an uncompressed image.
COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
COMPRESSION_OPTIONS=(-11 --auto-threads=logical)

# MODULES_DECOMPRESS
# Decompress kernel modules during initramfs creation.
# Enable to speedup boot process, disable to save RAM
# during early userspace. Switch (yes/no).
MODULES_DECOMPRESS="yes"

Here is my complete system log: https://0x0.st/H69N.txt

When reading through my journal log, I noticed quite a bit of the following:

Jan 03 16:49:17 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 1
Jan 03 16:49:20 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 2
Jan 03 16:49:22 solo-main systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
Jan 03 16:49:23 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 0
Jan 03 16:49:26 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 1
Jan 03 16:49:29 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 2
Jan 03 16:49:33 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 0
Jan 03 16:49:36 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 1
Jan 03 16:49:39 solo-main kernel: [drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000900] Flip event timeout on head 2

With some searches, I came across something saying that removing

fbdev=1

from (/etc/modprobe.d/nvidia-wayland.conf)

options nvidia_drm modeset=1 fbdev=1

should fix it. Removing it did not.

If there is any further information I should provide, please let me know.


Thanks for your time,
solonovamax

https://solonovamax.gay

Offline

#2 2024-01-03 22:39:49

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,275

Re: Wayland shows black screen with cursor with NVIDIA proprietary drivers

Jan 03 16:49:10 solo-main kernel: fbcon: nvidia-drmdrmfb (fb0) is primary device

you did not properly remove the fbdev option or are loading it somewhere else. FWIW you can try explicitly setting it to 0 but FWIW

grep -r  fbdev /{etc,usr/lib}/modprobe.d

Offline

Board footer

Powered by FluxBB