What is the most recommended process to downgrade the NVIDIA drivers to get Starfield working under Proton in Garuda?

Hey fellow Garuda users,

So according to users on ProtonDB who use an NVIDIA GPU with the latest revision proprietary blob (535.104.05) Starfield will lock up when trying to load the first in the game after going through the menu. I discovered this myself after trying both Proton-GE and Experimental (at latest revisions).

So there are a few ways to downgrade the NVIDIA drivers to fix this little issue until a new version of the NVIDIA blob comes out (and hopefully fixes the issue). But I want to know what is the best approach for Garuda? Is the Arch Linux process okay or is it a litte different like in Manjaro?

Will I need to downgrade my kernel as well? It really seems like a whole can of worms. And understandably I don't want to really screw things up on my OS.

As much as I love btrfs - cloning the whole drive just in case something really bad happens isn't really possible without using a ton of command line utilities to recover it - so I want to be careful with this process since it means changing the gpu driver packages and maybe even the kernel (and/or kernel-dkms) packages - and who knows if the snapshots will recover from this one.

Below I've included the garuda-inxi output even though it will probably won't matter for this query? But it is there for a reason :slight_smile:

System:
Kernel: 6.4.12-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
clocksource: tsc available: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=dce650f1-f4c4-417c-9d13-d1bbcca3e55e rw rootflags=subvol=@
nvidia-drm.modeset=1 rd.udev.log_priority=3 vt.global_cursor_default=0
loglevel=3
Desktop: KDE Plasma v: 5.27.7 tk: Qt v: 5.15.10 wm: kwin_x11 vt: 2
dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
Type: Desktop Mobo: ASUSTeK model: ROG STRIX X570-F GAMING v: Rev X.0x
serial: <superuser required> UEFI: American Megatrends v: 4021
date: 08/09/2021
Battery:
Device-1: ps-controller-battery-4c:b9:9b:94:01:9b model: N/A serial: N/A
charge: N/A status: full
CPU:
Info: model: AMD Ryzen 9 3950X bits: 64 type: MT MCP arch: Zen 2 gen: 3
level: v3 note: check built: 2020-22 process: TSMC n7 (7nm)
family: 0x17 (23) model-id: 0x71 (113) stepping: 0 microcode: 0x8701021
Topology: cpus: 1x cores: 16 tpc: 2 threads: 32 smt: enabled cache:
L1: 1024 KiB desc: d-16x32 KiB; i-16x32 KiB L2: 8 MiB desc: 16x512 KiB
L3: 64 MiB desc: 4x16 MiB
Speed (MHz): avg: 3578 high: 4325 min/max: 2200/4761 boost: enabled
scaling: driver: acpi-cpufreq governor: performance cores: 1: 3500 2: 3500
3: 3500 4: 3500 5: 4305 6: 3500 7: 3500 8: 3500 9: 3500 10: 4158 11: 3725
12: 3500 13: 3500 14: 4325 15: 3500 16: 3500 17: 3500 18: 3500 19: 3500
20: 3500 21: 3500 22: 3500 23: 3500 24: 3500 25: 3500 26: 3500 27: 3500
28: 3500 29: 3500 30: 3500 31: 3500 32: 3500 bogomips: 224012
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Vulnerabilities: <filter>
Graphics:
Device-1: NVIDIA GA102 [GeForce RTX 3080 Lite Hash Rate] vendor: Gigabyte
driver: nvidia v: 535.104.05 alternate: nouveau,nvidia_drm non-free: 535.xx+
status: current (as of 2023-08) arch: Ampere code: GAxxx
process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s
lanes: 16 ports: active: none off: DP-1 empty: DP-2, DP-3, HDMI-A-1,
HDMI-A-2 bus-ID: 09:00.0 chip-ID: 10de:2216 class-ID: 0300
Display: x11 server: X.Org v: 21.1.8 with: Xwayland v: 23.2.0
compositor: kwin_x11 driver: X: loaded: nvidia gpu: nvidia,nvidia-nvswitch
display-ID: :0 screens: 1
Screen-1: 0 s-res: 5120x1440 s-dpi: 109 s-size: 1193x342mm (46.97x13.46")
s-diag: 1241mm (48.86")
Monitor-1: DP-1 mapped: DP-0 note: disabled model: Philips PHL 498P9Z
serial: <filter> built: 2022 res: 5120x1440 hz: 165 dpi: 130048 gamma: 1.2
size: 1x1mm (0.04x0.04") diag: 1238mm (48.7") modes: max: 3840x1080
min: 640x480
API: OpenGL v: 4.6.0 NVIDIA 535.104.05 renderer: NVIDIA GeForce RTX
3080/PCIe/SSE2 direct-render: Yes
Audio:
Device-1: NVIDIA GA102 High Definition Audio vendor: Gigabyte
driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
bus-ID: 09:00.1 chip-ID: 10de:1aef class-ID: 0403
Device-2: AMD Starship/Matisse HD Audio vendor: ASUSTeK
driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
bus-ID: 0b:00.4 chip-ID: 1022:1487 class-ID: 0403
Device-3: Nektar Impact GX49 driver: snd-usb-audio type: USB rev: 1.1
speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-1:2 chip-ID: 2467:2033
class-ID: 0103
Device-4: Yamaha Steinberg UR22C driver: snd-usb-audio type: USB rev: 2.1
speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-2.1:5 chip-ID: 0499:172f
class-ID: 0103
Device-5: Sony DualSense wireless controller (PS5)
driver: playstation,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 480 Mb/s
lanes: 1 mode: 2.0 bus-ID: 5-3.2:6 chip-ID: 054c:0ce6 class-ID: 0300
API: ALSA v: k6.4.12-zen1-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
Server-2: PipeWire v: 0.3.79 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel Wi-Fi 6 AX210/AX211/AX411 160MHz driver: iwlwifi v: kernel
pcie: gen: 2 speed: 5 GT/s lanes: 1 bus-ID: 04:00.0 chip-ID: 8086:2725
class-ID: 0280
IF: wlp4s0 state: up mac: <filter>
Device-2: Intel I211 Gigabit Network vendor: ASUSTeK driver: igb v: kernel
pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 05:00.0
chip-ID: 8086:1539 class-ID: 0200
IF: enp5s0 state: down mac: <filter>
Device-3: Sony DualSense wireless controller (PS5)
driver: playstation,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 480 Mb/s
lanes: 1 mode: 2.0 bus-ID: 5-3.2:6 chip-ID: 054c:0ce6 class-ID: 0300
Bluetooth:
Device-1: Realtek Bluetooth 5.1 Radio driver: btusb v: 0.8 type: USB
rev: 1.1 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-2:2 chip-ID: 0bda:8771
class-ID: e001 serial: <filter>
Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.1
lmp-v: 10 status: discoverable: no pairing: no class-ID: 7c0104
Drives:
Local Storage: total: 10.92 TiB used: 4.02 TiB (36.8%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 980 PRO 2TB
size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
lanes: 4 tech: SSD serial: <filter> fw-rev: 3B2QGXA7 temp: 35.9 C
scheme: GPT
ID-2: /dev/sda maj-min: 8:0 vendor: Seagate model: ST2000DX002-2DV164
size: 1.82 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 7200 serial: <filter> fw-rev: CC41 scheme: GPT
ID-3: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST6000DM003-2CY186
size: 5.46 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 5425 serial: <filter> fw-rev: 0001 scheme: GPT
ID-4: /dev/sdc maj-min: 8:32 vendor: Samsung model: SSD 850 EVO 1TB
size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 1B6Q scheme: GPT
ID-5: /dev/sdd maj-min: 8:48 vendor: Crucial model: CT1000MX500SSD4
size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 023 scheme: GPT
Partition:
ID-1: / raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.67 TiB (92.0%)
fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 576 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.67 TiB (92.0%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.67 TiB (92.0%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.67 TiB (92.0%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 125.7 GiB used: 11.8 MiB (0.0%)
priority: 100 comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 32
dev: /dev/zram0
Sensors:
System Temperatures: cpu: 30.0 C mobo: 34.0 C gpu: nvidia temp: 45 C
Fan Speeds (rpm): N/A gpu: nvidia fan: 0%
Info:
Processes: 538 Uptime: 5h 2m wakeups: 1 Memory: total: 128 GiB note: est.
available: 125.71 GiB used: 9.52 GiB (7.6%) Init: systemd v: 254
default: graphical tool: systemctl Compilers: gcc: 13.2.1 alt: 12
clang: 16.0.6 Packages: 2060 pm: pacman pkgs: 2055 libs: 529
tools: octopi,paru,yay pm: flatpak pkgs: 5 Shell: fish v: 3.6.1
running-in: konsole inxi: 3.3.29
Garuda (2.6.16-1):
System install date:     2023-07-07
Last full system update: 2023-09-06
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut nvidia-dkms
Windows dual boot:       No/Undetected
Failed units:.

There is no particular recommended way to downgrade nvidia drivers or any software due to the fact that if you downgrade a particular software and it is making deprecated API calls to libraries that no longer support those calls due to the fact that the rest of the system and other libraries are going to keep updating. This is going to cause issues if not immediately it is definitely going to do so in longer run.

This is why even on archwiki it says to implement a snapshot subsystem and try to roll back a snapshot instead of downgrading a particular software. Plus with your setup it looks like Nvidia is the only card you have which means if the downgrade fails then you will be stuck with a black screen no video output. Even though you could still recover from this using chroot but that would be another tedious process of its own.

So if you are absolutely sure that the game is worth the trouble of doing all this and not just setting up a windows dual boot. Seriously that would be better than downgrading your nvidia drivers. Then you can do this.

sudo downgrade nvidia-dkms

downgrade is an AUR utility available by default in garuda. If it’s not there you can just download it. Running this command will give you a list like this

Example:

‐  1)  terraform    0.11.11  2  remote
‐  2)  terraform    0.11.12  1  /var/cache/pacman/pkg
+  3)  terraform    0.11.13  1  remote
+  4)  terraform    0.11.13  1  /var/cache/pacman/pkg
‐  5)  terraform    0.12.0   1  remote
‐  6)  terraform    0.12.0   1  /var/cache/pacman/pkg
7)  terraform    0.12.1   1  remote

Available packages (community):
7/7
>

The columns have the following meaning:

indicator Possible values: {‐|+}

‐ indicates that the version was previously installed.

+ indicates the currently installed version.

Fetching the driver from both arch archive and if present in your local system cache. So select the version you wanna downgrade to and go ahead.

Now, once this is done although pacman hooks should have taken care of it (you can read it in the output) and compiled the modules for the nvidia drivers using dkms to work if they didn’t that is they output some error in that stage. Something like this,

A newer module than this already exists aborting operation. Use --force if you still want to continue

Not exactly the same but you get the idea, then in that case you need to manually enter the commands to compile the modules:

sudo dkms install --no-depmod nvidia/<nvidia-driver-version> -k <kernel-version> --force

you will replace <nvidia-driver-version> with the driver version you downgraded and <kernel-version> with the kernel you wish to compile it against. For example,

If you downgraded your nvidia-dkms drivers to version 535.98 and you are currently have the kernels 6.4.12-zen1-1-zen and 6.1.51-1-lts in your system. Then you would run this command like this:

once for the zen kernel,

sudo dkms install --no-depmod nvidia/535.98 -k 6.4.12-zen1-1-zen --force

and then once for lts kernel,

sudo dkms install --no-depmod nvidia/535.98 -k 6.1.51-1-lts --force

Now this was just an example and you might not have the LTS kernel or might have different kernels installed so change this command accordingly.

I hope you see the pattern. Once you are done with the above command(s),

sudo depmod <kernel-version>

Again replacing like above.

sudo depmod 6.4.12-zen1-1-zen

and

sudo depmod 6.1.51-1-lts

That’s it now reboot and hopefully you don’t blackscreen. If you don’t and you actually manage to downgrade your drivers (you can check with nvidia-smi) then you can add nvidia-dkms to the IgnorePkg section of /etc/pacman.conf

Otherwise, chroot and garuda-update is your savior.

5 Likes

Thank you so much for the detailed response. Looking at the process I think I will just wait for another NVIDIA update before I even try and playing the game again. No game is worth that risk to be honest :slight_smile:

2 Likes

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.