The Windows route: an EFI payload that runs before Windows boots

The three projects documented on this site are Linux kernel modules. Windows-GPU-UNLOCK is a different implementation: it installs its own EFI System Partition and performs the register work in a payload that hands off to Windows Boot Manager. It also publishes no stock-vs-unlocked pair, so this page reports the recorded profiles and the boot routes rather than a gain number.

This is not the Linux module and does not replace it

Nothing here applies to a Linux install, and the kernel module does not apply to Windows. The two share the underlying idea — write the rate-select register before the NVIDIA driver binds — but the boot path, the tooling and the failure modes are different. If you are on Linux, use the card list and the benchmarks on this site.

What the release is, at the time of writing

The latest tag is v0.3.1, a source-only pre-release. Read the scope list before assuming a card is covered.

Recorded and reported hardware

A profile covers one card in one specific system. The same GPU model on a different motherboard is not covered by that profile, and only the first row was recorded by the maintainer under their own test.

CardChipStatusRoute
RTX 3090 FE 24 GBGA102Recorded by the maintainerInternal headless — default profile (ASUS TUF B650M)
RTX 3070 Ti 8 GBGA104Hardware success reportedInternal headless (ASUS TUF B660M-E D4)
RTX 3090 Ti 24 GBGA102Hardware success reportedHeadless USB only (Gigabyte X870 Aorus Elite WiFi7)
RTX 3060 12 GBGA104Hardware success reportedHeadless USB only (ASUS Prime B660-Plus D4)
RTX 3080GA102Upstream target onlyNo dedicated profile in this port

Four boot routes, and they are not interchangeable

Which route you take depends on whether the display stays on the discrete card and whether you can use a USB stick. Each has its own guide in the repository.

RouteDisplay and inputGuide
Internal headlessMonitors on the RTX card, display temporarily removed, no T/U/Enter inputOpen guide
Headless USBProfile-specific wrapper and child staged on a FAT32 USB stickOpen guide
Internal AMD-display manual / autoMotherboard or iGPU display preserved; the manual variant needs UOpen guide
Legacy USB manualAMD/iGPU display profile; U once, then Boot Override to Windows without a resetOpen guide

Requirements before you start

The order that matters

1. Prepare a second ESP, not a data partition

The port boots from its own EFI System Partition and leaves Windows' ESP and recovery partition untouched. It does not create, shrink, delete or format anything: you prepare a GPT FAT32 partition of at least 1 GiB and give it a letter.

An ordinary FAT32 data partition is not a substitute. The tools also do not disable BitLocker — decrypt C: and turn protection off first.

2. Configure and build from an elevated PowerShell

Both scripts run from the repository root in an administrator PowerShell. Configuration and build stage no boot entry by themselves.

.\internal-boot\Configure.ps1 -UnlockDriveLetter U `
  -WindowsEspGuid 'YOUR-WINDOWS-ESP-GUID'
.research\headless\build-unlock.ps1 `
  -Clang 'C:\TOOLS\LLVM20\bin\clang.exe' `
  -LldLink 'C:\TOOLS\LLVM20\bin\lld-link.exe'

Use your own partition GUID and tool paths. Without an action switch, `Headless.ps1 -Assets '.\assets'` only stages files.

3. Register a separate F8 test entry first

Registering adds its own test entry and keeps your existing boot priority. Automatic boot is a separate, explicit action and stays off until the F8 test has actually worked.

.\internal-boot\Headless.ps1 -Assets '.\assets' -Register

On the tested ASUS firmware the entry appears as F8 → GPU Headless UNLOCK - EXPERIMENTAL.

4. Run one F8 test and wait

Save your work and fully power off, then pick the test entry. Do not press T, U or Enter. The screen goes black while the RTX GOP is removed; the child attempts once and the wrapper starts Windows directly.

Do not reset between the unlock and Windows. The two Esc windows differ: Esc in the initial wrapper boots Windows without the release, while Esc in the later three-second child window cancels into a stop and does not restore the display.

5. Only then enable automatic boot

After the F8 test succeeds and the display recovers, automatic boot can be enabled. That action places headless first, Windows Boot Manager second, and disables Windows Fast Startup. Registering the test entry alone does nothing like this.

.\internal-boot\Headless.ps1 -EnableAutomatic -ConfirmedSuccess

`-ConfirmedSuccess` is the acknowledgement that you personally saw the test boot work.

6. Recovery is Windows-first and independent of the build

If the handoff fails or Windows does not return, power off fully and choose F8 → Windows Boot Manager, or run the restore switch. Windows-first recovery works without saved state.

.\internal-boot\Headless.ps1 -RestoreWindowsFirst

Restoring the previous Fast Startup setting does need the saved state, so keep it and keep backups.

What the recorded run measured

The original B650M / RTX 3090 FE run reported these CUDA 12.6 / cuBLAS 12.6 numbers at 4096 x 4096, as a median of three runs. These are absolute figures from an unlocked card — there is no stock side published for them, so they are not a gain.

PathValue
FP32 pedantic22.85 TFLOPS
FP16 Tensor / FP32 accumulate124.97 TFLOPS
BF16 Tensor / FP32 accumulate128.93 TFLOPS

What the recorded run left behind

The successful child reported this state after the unlock, which is the evidence that the card was handed to the driver cleanly.

Licence

GPL-2.0-only for the port and the reused core; EDK2 and separately attributed components keep their own licences. Based on rough2515-hub/rtx3080-unlock-public and Zagitta/gpu-unlock. NVIDIA firmware, PROM/BIOS images, drivers and CUDA DLLs are not redistributed in the source release.

impacifist/Windows-GPU-UNLOCK on GitHub

Common questions