Wayland + Nvidia - No Signal Black Screen on Login

Yes for some reason this is working for me. I’m in wayland on plasma ! Thanks alot.

Edit : Side note i’m getting some oddities as well. Some flickering and app not maximizing properly but i can login a session with wayland and it’s really fast holly crap !

Edit 2: apparently flickering is caused by a explicit sync missing from the nvidia drivers. It should be implemented in the 555 version coming soon.

1 Like

Am out of the country at the moment but I will definitely try this when I get back this coming weekend.

Sidenote for prior commentors - I and others do have an iGPU (Ryzen 7 7700X) but I had disabled it in the BIOS. I had not tried enabling and looking for output from the onboard HDMI port for an image on the login screen yet.

Will try this potential solution first!

1 Like

I sure hope this is true. :exploding_head: Would really help.

There is this : https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/90

and this : https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/967

that some research on google have found. They say this would fix the majority of flickring. I know If you have flicker in chromium based browser (eg. Brave, Edge or Chrome) you can force the engine to run in wayland mode by going into the flags settings eg : (brave://flags or chrome://flags) and changing the ozone-plateform-hint or the settings starting with ozone to
to wayland. There is also some kind of flickering for me for Steam but at this point in time I didn’t find any fix. You can try enabling the hardware acceleration in settings but all it does for me is make the content of the client unreadable and garbled (not the menus so you can easily change it back)

There is also some odd behaviors from other apps like vlc will stutter massively for no reason. My best guess is that those apps are not technically made to run natively under wayland and the sync function might help them once implemented because of the compatibility layer used to make them work on wayland.

:point_up::point_up:

I think this right here is the key point. I only use Firefox (and variants thereof), so that’s not a problem. However, I have been having issues with steam and oddly with Wezterm.

My other major issue is when waking from sleep. I have 2 FHD 75hz displays and every time my machine wakes from sleep, I have random artifacts. Often large portions of the display. It may show portions of SDDM login, it may show portions of different virtual desktops (I use 3 currently: work, personal, communication) and haven’t been able to figure out a resolution. It usually requires a reboot to resolve. I can quit and restart an application, but it’s only a temporary fix. Then the flickering starts (this happens with most apps) and on it goes.

The 555 drivers are coming but only in a couple of months, beta on may 15th apparently, so I would not hold my breath on the flickers at this point. Run X11 sessions instead of Wayland for now but things look promising as Wayland is way faster for me than X11 at the moment. We’ll see what happens.

https://www.reddit.com/r/linux_gaming/comments/1bjok7t/nvidia_beta_driver_555_releasing_may_15th/

Consider me confused as hell. Using systemd - this is how I formatted custom.conf under /etc/dracut.conf.d:

kernel_cmdline="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 initcall_blacklist=simpledrm_platform_driver_init"
add_drivers+=” nvidia nvidia_drm nvidia_modeset nvidia_uvm ”

When I do this and run sudo dracut -f, I get this as part of the massive list of output in the terminal:

/etc/dracut.conf.d/custom.conf: line 2: nvidia: command not found

Pretty sure I’ve done something wrong, haha. Do I need to change anything for /etc/kernel/cmdline? Here is how it reads at the moment:

nvme_load=YES nowatchdog rw rootflags=subvol=/@ root=UUID=365f9274-84b2-4c59-811f-5061273a6bb5 nvidia-drm.modeset=1

Also, getting real confused over if it’s nvidia_modeset or nvidia-modeset from the various guides and threads I have read.

AFAIK it’s supposed to be the name of the module that loads, that is supposed to be with a “_” So that it looks like this: nvidia_drm.modeset=1

Is that for every time is appears in all the various files?

Also, did the changes as they appear in my last post…black screen again. This time on X11 as well. :upside_down_face:

I only used it in systemd-boot configuration, but I have recently switched to an AMD gpu. In what other files do you use it, if you mean dracut configuration I will have to check what I had there?

This is in my loader/entries file

options rd.luks.name=40e0f287-b465-4c59-a61f-262b6cb9177e=luksdev root=/dev/mapper/luksdev rootflags=subvol=@ rw rootfstype=btrfs nvidia_drm.modeset=1 lsm=landlock,lockdown,yama,integrity,apparmor,bpf

This in my dracut file.

force_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm "
omit_dracutmodules+=" brltty "
compress="zstd"

Hmm, O.K., maybe I should try that, your stuff is different. That said…I just reinstalled with grub instead of systemd, haha.

But it looks like the noise I had before is probably very wrong…

For systemd-boot:

If you have an nvidia card then you should only need to apply changes to: /etc/kernel/cmdline

sudo nano /etc/kernel/cmdline

Add these to the line of text:

nvidia-drm.modeset=1 nvidia-drm.fbdev=1

Hold ctrl and tap x . Select Yes to save changed buffer.

You can write the text using _ or - . Both will work.

Some add:

initcall_blacklist=simpledrm_platform_driver_init

But the above should not be necessary

Don’t forget to:

sudo reinstall-kernels

After editing.

For Grub:

sudo nano /etc/default/grub

Add these to the line of text:

nvidia-drm.modeset=1 nvidia-drm.fbdev=1

Hold ctrl and tap x . Select Yes to save changed buffer.

You can write the text using _ or - . Both will work.

Some add:

initcall_blacklist=simpledrm_platform_driver_init

But the above should not be necessary

Don’t forget to rebuild grub after editing:

sudo grub-mkconfig -o /boot/grub/grub.cfg

7 Likes

Hmm, I think I did basically that with the new grub install I did. No dice - still black screen.

Do I not need to do anything with initramfs/dracut? And a pacman hook?

What about the modprobe.d config file stuff?

Not sure if my formatting was wrong but I will double-check.

Unrelated but I have to use grub if I want the ability to boot snapshots right? Can’t do that from systemd?

damn… after weeks of trying different things to boot up on Wayland after upgrading to Plasma 6, this seems to have done the trick.

Among several other things, I tried adding the following line into a new /etc/dracut.conf.d/nvidia.conf and running sudo dracut -f before:

kernel_cmdline="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 initcall_blacklist=simpledrm_platform_driver_init"

but sudo cat /sys/module/nvidia_drm/parameters/fbdev was giving me N (and modeset Y).

Weirdly, Wayland was booting up on a new user, just not on mine, no matter what I changed in the user space / filesystem.

Now it works, thank you so much!!

If you did not add nvidia-drm.fbdev=1 then you didn’t set the frame buffer and that can result in a black screen on nvidia GPU. You must have both:

nvidia-drm.modeset=1 nvidia-drm.fbdev=1

to be sure it works and to avoid some (but not all) glitches.

Plasma 6 is still new at time of writing, so bugs and glitches can be expected.

Yes.

1 Like

Glad you got it working :slightly_smiling_face:

It was @SpaceManbob 's post that set me on the right track.

1 Like

I tried this for grub. Both with and without initcall_blacklist=simpledrm_platform_driver_init - no dice.

I got rid of any files under modprobe.d, dracut.conf.d, and re-ran dracut-rebuild too.

I do still have /etc/environment edited per my prior commentary in the OP.

I deleted the ~/.local/share/kscreen folder too, to reset Wayland’s monitor configuration. Weirdly - this made no difference. Still black screen.

Did a switch user and logged in under Wayland. Set all 3 monitors to 60Hz. On reboot - still black screen. Something is wrong somewhere.

Did I need to do any initramfs stuff, or remove environment variables. Should I reinstall with systemd?

Maybe it’s a driver issue that nvidia has to fix? The only thing i can think of is booting with only 1 monitor connected.

There are many with awesome hardware like yours having problems, which leads me to believe it may be a driver issue. I’m sure nvidia will get it sorted out eventually.

Reinstalling with systemd probably won’t make any difference. It could be enviroment variables and it could not.

I’m out of ideas. I guess you may have to use X11 for the time being, unless you find a solution. My money is it is probably a driver issue.

So on a giant whim…I reinstalled and chose systemd. Installed Nvidia drivers. Set all monitors to 60Hz. Did not make any changes except to the cmdline file like you indicated. Reinstalled kernels. Rebooted - logged in fine. Changed each display to their full refresh rate (120Hz for primary, 75Hz for dual secondary displays).

Rebooted again…it’s working. I’m in Wayland now. Big WTF, haha, but I’m not complaining.

Didn’t make any changes to environment variables, initramfs files, etc. Just strictly what you indicated above, even omitted initcall_blacklist=simpledrm_platform_driver_init.

Thank you!

Now it remains to be seen if it keeps working!

3 Likes