PSA: if your laptop GPU turned into "Microsoft Basic Display Adapter", Windows deleted the driver on purpose
Took me months to work this out. Dropping a few keywords first so this actually shows up on Google for the next person:
- nvidia driver disappeared, GPU not showing in device manager laptop, showing as Microsoft Basic Display Adapter instead of RTX
- "Application is not compatible with the installed NVIDIA drivers", code 10 this device cannot start
- dGPU missing from task manager, only integrated graphics showing
- nvidia driver uninstalled itself, had to reinstall nvidia driver again
- GPU gone after eco mode, GPU gone after switching to standard mode
- HDMI not working in standard mode
- G-Helper, Armoury Crate, Optimus, MUX, hybrid graphics.
Mine's a ROG Zephyrus G14, RTX 5070 Ti Laptop.
But this'll hit any laptop where you switch the discrete GPU off and leave it off for a few weeks (eg: people that rarely play games and sit in eco mode for weeks).
TL;DR: Eco mode makes your dGPU absent. Windows deletes devices that have been absent past a timeout (15-30 days), then deletes their drivers as unused.
What happened
Eco mode power-gates the dGPU off the PCIe bus. Windows treats it like a USB stick you unplugged: not present.
There's a Windows maintenance job called pnpclean.dll that removes devices absent past a timeout, then removes any driver package nothing references any more. Default timeout is 30 days. Mine had a per-device value of 15.
Straight out of my C:\Windows\INF\setupapi.dev.log:
set: Device PCI\VEN_10DE&DEV_2F58&SUBSYS_39A81043&REV_A1\... uses timeout period of 15 days.
set: Device PCI\VEN_10DE&DEV_2F58&SUBSYS_39A81043&REV_A1\... will be removed.
set: Device PCI\VEN_10DE&DEV_2F58&SUBSYS_39A81043&REV_A1\... was removed.
set: Searching for unused drivers that may be removed from the system.
set: INF oem130.inf (nvamsi.inf_amd64_...) will be removed.
set: INF oem130.inf was removed.
Same pass also cleared out some old USB sticks and Bluetooth pairings. Switching back to Standard afterwards shows the GPU as a new device with no driver (it just shows as "Basic Display Adapter" and with Code 10 error). NVIDIA Control Panel says "not compatible" because there's no driver installed.
How to tell if this is what happened to you
Open PowerShell and run this to search the logs:
Select-String -Path C:\Windows\INF\setupapi.dev*.log -Pattern "(VEN_10DE|VEN_1002).*(was removed|timeout period)"
VEN_10DE is NVIDIA, VEN_1002 is AMD. If you get lines saying your GPU "was removed", that's it.
Note the * in setupapi.dev*.log. The live log rotates every few MB and mine only went back 5 days, but Windows keeps the old ones next to it as setupapi.dev.YYYYMMDD_HHMMSS.log going back about a year.
You can also see the driver package itself getting binned:
Select-String -Path C:\Windows\INF\setupapi.dev*.log -Pattern "unused drivers|INF oem\d+\.inf .*removed"
And check whether it's currently missing:
pnputil /enum-drivers | Select-String "nvamsi"
Nothing back means it's gone.
Fixes
Stop the cleanup running on its own. It runs as a Disk Cleanup handler, and each handler has an on/off switch:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Device Driver Packages
Autorun (DWORD) = 0
That handler's CLSID resolves to pnpclean.dll, so setting it to 0 stops the silent pass. Manual Disk Cleanup still works fine, since Autorun only controls the automatic run. Downside is that old driver packages and ghost devices stop getting cleaned up for you.
Or just keep the GPU visible now and then. Optimized mode in G-Helper turns the dGPU on whenever you plug in. Flipping to Standard every couple of weeks does the same thing. Resets the counter, no registry editing.