How to install GPU Unlock on Linux
GPU Unlock is installed by building it from source on your own Linux machine, then turning it on with a kernel boot option. These are the steps from the official README in plain order, for RTX 3000 cards.
Using an RTX 4090, 4070 Ti SUPER or 4060 Ti 16GB? Use the GPU Unlock Ada fork instead and follow the RTX 4090 guide. Its options differ.
What you need
- Linux on an x86-64 PC with a supported RTX 3000 card (see supported GPUs).
- Git, the headers for your running kernel, a C build toolchain and DKMS.
- An initramfs generator: mkinitcpio, initramfs-tools or dracut.
- The normal NVIDIA driver. It is not modified.
- Internet access during the build. It downloads pinned NVIDIA and CachyOS inputs over HTTPS and checks their SHA-256.
Step 1: build and install
git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install
make install detects your distribution, installs the build dependencies, builds a package from the committed source and installs it. It asks for your sudo password. The firmware the module needs is generated locally in the build directory; the repository itself ships no NVIDIA archives or firmware.
If detection picks the wrong family, run one target directly:
make install-arch # makepkg -sif
make install-deb # apt-get build-dep, dpkg-buildpackage, apt-get install
make install-rpm # dnf builddep, rpmbuild, dnf install
Step 2: add the boot option
Append gpu_unlock.targets=all to your kernel command line, keeping the options already there.
| Bootloader | What to do |
|---|---|
| GRUB (Debian, Ubuntu, Mint) | Add it inside GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub, then run sudo update-grub. |
| GRUB (Arch, CachyOS) | Same edit, then run sudo grub-mkconfig -o /boot/grub/grub.cfg. |
| Fedora, RHEL | sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all" |
| systemd-boot | Append it to the options line of your boot entry. bootctl status shows where it is. |
| UKI / generated entries | Add it to /etc/kernel/cmdline and regenerate the images, for example sudo mkinitcpio -P. |
To unlock only some cards, list their full PCI addresses as lspci -D prints them:
gpu_unlock.targets=all # every unbound GA102/GA103/GA104/GA106 card
gpu_unlock.targets=0000:21:00.0 # only this card
gpu_unlock.targets=0000:21:00.0,0000:22:00.0 # comma-separated
Do not mix all with addresses. Anything that is not a supported card is logged and ignored.
Step 3: reboot and check
journalctl -k -b | grep gpu_unlock
lspci -nnk -s 0000:21:00.0
Replace the address with your card’s. Look for the unlock message for your card in the kernel log, then run your own matrix benchmark or workload to see the difference.
How it runs at boot
The package puts the gpu_unlock module and its firmware into the initramfs, so it runs before nvidia can bind a card. With mkinitcpio it is inserted just before nvidia in MODULES; initramfs-tools and dracut get their own drop-in files. With initramfs-tools and dracut the module is built for every installed kernel that has headers, and kernels installed later get it from their own install hooks.
If you build mkinitcpio images with -c or a preset _config, drop-ins are ignored; add gpu_unlock before nvidia in that config yourself.
How to turn it off or remove it
- Remove
gpu_unlock.targets=from the kernel command line. For one boot, delete it in the bootloader’s edit screen. - Uninstall the package to remove the module and the initramfs drop-ins.
- If the log says the firmware on a card never stopped, power the machine off fully before trying again.
Install questions
Can I load the module after boot?
No. Loading gpu_unlock by hand after the NVIDIA driver has bound the card does nothing to that card. It has to run from the initramfs, before nvidia.
Which Linux distributions are supported?
make install detects Arch, Debian/Ubuntu and Fedora/RHEL/CentOS families from /etc/os-release. For other distributions, use make install-arch, make install-deb or make install-rpm if one fits. The RPM path needs DNF.
Why is my screen blank for a moment at boot?
The display card is reset as part of the unlock. Its screen stays blank from that reset until nvidia-drm takes over. This is expected.
Does it survive suspend?
Suspend to RAM powers the card off, which resets the speed selectors. The module unlocks the card again on resume, adding about a second. Hibernation is not covered. Set gpu_unlock.resume=0 to turn re-unlocking off.
Does it work with several GPUs?
Yes. Reports cover up to four cards in one machine, and targets=all unlocks every unbound supported card at once, in about a second in total.
Next: which GPUs are supported, or the risks.