5.3 KiB
Testing the NVIDIA fix on a real PC
For the PC with an RTX 5080 (or any RTX 20 series or newer card) that shows a corrupted picture when
gaming mode (gamescope) starts. Branch feature/nvidia-gaming-fix, not released. Background and open
work: TODO-nvidia.md; research with sources: NVIDIA-RESEARCH.md.
What the fix does
With a supported NVIDIA GPU (RTX 20 series or newer, same check as the VRAM booster) and its driver installed it
- adds
nvidia-drm.modeset=1 nvidia-drm.fbdev=1to the kernel command line (Limine, systemd-boot or GRUB; the file is backed up as<file>.bak-gamescope-wizard), - loads the NVIDIA modules in the initramfs, but only while every installed kernel has them (a pacman hook,
/etc/pacman.d/hooks/85-steamify-nvidia-initramfs.hook, decides again at every kernel change), - rebuilds the initramfs and boot entries and checks that the parameters really are in them. It takes effect after a reboot. Older cards (GTX 10 series and older) are left alone.
Before you start
- CachyOS with the NVIDIA driver installed (
nvidia-open), a user with sudo,git. - Be at the PC and able to see the screen: the last step needs your eyes.
- Know the way back (below) in case the PC doesn't boot to a picture: a TTY (Ctrl+Alt+F3) or the boot menu's other kernel entry.
Steps
- Get the code:
(An existing checkout:
git clone -b feature/nvidia-gaming-fix https://github.com/theupriser/steamify-cachyos cd steamify-cachyosgit fetch && git checkout feature/nvidia-gaming-fix && git pull.) - Look first, change nothing:
bash tests/nvidia-hardware-test.sh check - Apply the fix (asks for your sudo password), then reboot:
bash tests/nvidia-hardware-test.sh apply - After the reboot, check again:
bash tests/nvidia-hardware-test.sh check - Start gaming mode, look at the screen, then (from the desktop or a TTY):
It asks whether the picture was clean and for one line on what you saw.
bash tests/nvidia-hardware-test.sh visual - Send back
~/steamify-nvidia-report.txt(every run adds to it), or start a new session in the checkout and say "read TODO-nvidia.md and the report".
(./steamify.sh from the same checkout also applies the fix, automatically, as part of the SteamOS conversion:
there is no menu option for it yet. The script above shows more.)
Reading check
| Line | Good result | If not |
|---|---|---|
PASS a supported NVIDIA GPU ... is detected |
your 5080 | FAIL ... older than RTX 20: the card is skipped on purpose. FAIL no NVIDIA GPU with its driver: driver not installed (nouveau?) |
NVIDIA PCI device id 0x... (not on a legacy list ...) |
RTX 20 or newer | on a legacy list: older card |
no chwd legacy lists found |
(note only) | the check cannot tell old from new cards; every card counts as supported. Tell me, it's open item 4 in TODO-nvidia.md |
PASS nvidia-drm.modeset=1 is on the running kernel's command line (and fbdev=1) |
after step 3 and the reboot | "in the boot loader's file but not booted yet": reboot, or the boot entry used is another one |
PASS nvidia_drm modeset = Y (and fbdev = Y) |
after the reboot | unreadable: it needs sudo, enter the password |
... early-load drop-in is used / skipped |
note only: skipped means a kernel without the NVIDIA modules is installed | nothing to do |
Reading the result
- Parameters on,
modeset = Y,fbdev = Y, picture clean: the fix works. - Parameters on and
Y, picture still corrupted: not this fix. The report has the gamescope and NVIDIA log lines and the versions ofnvidia-open,nvidia-utils,gamescopeandgamescope-session-cachyos: the cause is probably the gamescope/driver combination for Blackwell (seeNVIDIA-RESEARCH.md). - No picture at all after the reboot: undo it (next section) from a TTY or the other kernel entry, and send the report.
Undo
Turning the SteamOS conversion off in the wizard removes the fix too. On its own, from the checkout:
SCRIPT_DIR=$PWD bash -c 'source lib/common.sh; source lib/hdmi-refresh.sh; source lib/vram-booster.sh; source lib/nvidia.sh; nvidia_disable'
It removes the parameters, the early-load file, the pacman hook and its script, and rebuilds the boot entries (reboot after).
By hand: delete nvidia-drm.modeset=1 nvidia-drm.fbdev=1 from /etc/default/limine (KERNEL_CMDLINE[default]),
/etc/sdboot-manage.conf (LINUX_OPTIONS) or /etc/default/grub (GRUB_CMDLINE_LINUX_DEFAULT), or restore the
.bak-gamescope-wizard copy next to it; remove /etc/mkinitcpio.conf.d/90-steamify-nvidia.conf,
/etc/pacman.d/hooks/85-steamify-nvidia-initramfs.hook and /usr/local/libexec/steamify-nvidia-initramfs; then
sudo limine-mkinitcpio (Limine) or sudo mkinitcpio -P and sudo sdboot-manage gen / sudo grub-mkconfig -o /boot/grub/grub.cfg.
What is and isn't proven
Proven in VMs (QEMU/KVM, CachyOS ISO 260809): the parameters land and survive a reboot on Limine, systemd-boot and GRUB;
disabling restores the original; on Limine the pacman hook keeps the early-load file right across kernel reinstalls
(with fake NVIDIA modules). Not proven: that the fix cures the 5080's picture, the real NVIDIA modules in the
initramfs, DKMS hook order, systemd-boot/GRUB with a pacman transaction, and the RTX 20+ check against a real chwd list.
Unit test (no hardware): bash tests/nvidia-test.sh.