I have a lenovo laptop with nvidia 3070 ti. I've i...
Created on: April 12, 2025
Created on: April 12, 2025
I have a lenovo laptop with nvidia 3070 ti. I've installed Arch Linux, kernel 6.13.8-arch1-1. I've attempted to install proprietary nvidia driver with "sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils". The packages have been installed (driver version 570.133.07) but the driver is not "starting". On ArchWiki it says that DRM defaults to enabled starting with version 560.35.03 but there is no /sys/module/nvidia_drm directory. Actually I have no idea which driver to install, if I need dkms or not, etc.
Below is a step-by-step overview of how to get NVIDIA drivers working on Arch, especially on laptops with dual (integrated + NVIDIA) GPUs. While there can be quite a few moving parts, these are the common troubleshooting steps:
Verify your kernel version:
bashuname -r
Make sure your installed nvidia
package is built for that exact kernel version. If you are on the default Arch kernel (e.g., linux
), then installing the normal nvidia
package (not nvidia-dkms
) is typically sufficient.
linux-zen
, linux-lts
, or a custom-compiled version), you usually need nvidia-dkms (which compiles the module for whatever kernel you boot).Confirm installed NVIDIA packages:
bashpacman -Qs nvidia
You should see something like:
nvidia
nvidia-utils
lib32-nvidia-utils
(if you run 32-bit apps)nvidia-dkms
only if you use custom or non-official kernels.Note on driver versions: For an RTX 3070 Ti, you’ll want the newest stable branch from Arch’s repositories (e.g., 530/535/570, etc.). Older legacy packages (e.g., 470xx, 390xx) are for older GPUs.
The open-source Nouveau driver can conflict with the proprietary driver. Often, the Arch nvidia
package will handle blacklisting automatically, but it’s good to verify:
Check if Nouveau is loaded:
bashlsmod | grep nouveau
If it’s there, you’ll want to blacklist it (or let the official nvidia
package do it automatically).
After blacklisting, rebuild your initramfs:
bashsudo mkinitcpio -P
(The -P
option rebuilds the initramfs for all kernels.)
Even if the driver is installed, it may not be auto-loading. Check:
Does the kernel module exist?
bashmodinfo nvidia modinfo nvidia_drm
If you get “not found,” then the module isn’t building/installed for your current kernel (this usually means you need nvidia-dkms
or your kernel is too new/unsupported by the driver version).
Try loading the module manually:
bashsudo modprobe nvidia_drm
Then check:
bashlsmod | grep nvidia
You should see nvidia
, nvidia_drm
, nvidia_modeset
, and nvidia_uvm
in the output.
Check if /sys/module/nvidia_drm
appears after loading. If the nvidia_drm
module does not load, that folder obviously will not show up.
Since driver version 560.35.03, DRM KMS is enabled by default for the official NVIDIA package on Arch. However, sometimes you still need to specify it or verify it’s actually enabled.
Add to kernel parameters (if not already there). For example, in your bootloader’s config (whether GRUB or systemd-boot), add:
nvidia_drm.modeset=1
This ensures early KMS is enabled.
After editing, update GRUB or your boot loader:
bashsudo grub-mkconfig -o /boot/grub/grub.cfg
or regenerate your systemd-boot configs if you use that.
Reboot, then run:
bashdmesg | grep nvidia
Look for messages indicating that nvidia_drm
initialized.
/var/log/Xorg.0.log
(or the equivalent in systemd’s journal) to see whether the NVIDIA driver was loaded or if it fell back to modesetting or nouveau.textSection "Device" Identifier "NVIDIA Card" Driver "nvidia" EndSection
Because you have a Lenovo laptop with a 3070 Ti, you likely also have an Intel (or AMD) integrated GPU. Often, you’ll need a “hybrid graphics” setup:
Optimus/Prime:
prime-run <program>
).nvidia
(and nvidia-prime
or prime-run
scripts)xf86-video-intel
) or use the built-in modesetting driver.…to confirm it’s offloading to NVIDIA.bashprime-run glxinfo | grep OpenGL
If you want to run only on NVIDIA (some BIOS settings allow you to disable the integrated GPU, or you can use software solutions like optimus-manager or envycontrol to switch to “dedicated GPU only” mode).
Advanced Optimus (some newer laptops have firmware-level advanced mux switching). You may need extra steps or your laptop’s BIOS toggles.
nvidia
package must match the kernel you boot. If you see something like nvidia: no symbol version for module_layout
, you definitely have a mismatch.nvidia
, nvidia_modeset
, nvidia_uvm
, and nvidia_drm
are not blacklisted in any config.nvidia_drm.modeset=1
) and can be trickier to configure depending on the desktop environment.or if running a non-official kernel:bashsudo pacman -S nvidia nvidia-utils lib32-nvidia-utils
bashsudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils
bashsudo mkinitcpio -P
nvidia_drm.modeset=1
to kernel command line.bashsudo modprobe nvidia_drm lsmod | grep nvidia
dmesg
):
bashdmesg | grep nvidia
nvidia nvidia-utils lib32-nvidia-utils
should be enough./sys/module/nvidia_drm
, the most common reason is simply that the module isn’t loading (due to mismatch, blacklisting, or an error during module build).Hopefully these steps help you pinpoint why the driver isn’t “starting.” If you systematically walk through each step (checking the kernel version, blacklisting nouveau, verifying modules load, etc.), you should end up with a working NVIDIA setup on Arch. Good luck!