[WORKAROUND] Load NVidia graphics driver "before" login screen
 
Notifications
Clear all

[WORKAROUND] Load NVidia graphics driver "before" login screen  

  RSS

The_Livy
(@the_livy)
Eminent Member
Joined: 2 years ago
 

Hello everyone,

 

as some (like @coldfuser in their build - possibly specifically NUC users with eGPU) may have noticed, Nvidia graphics drivers refuse to load before you enter your password.

Some machines, like Intels NUC devices, support a sort of native output via eGPUs, more specifically through Thunderbolt 3.

The problem with this is that many hosts that support eGPUs also come with integrated graphics. This makes NVidias installer always run an at least Optimus-like version of it's drivers (correct me if i'm wrong, this is purely based on observation).

The biggest downside is that with this behavior Windows will not display anything but a black screen on an external monitor connected to the graphics card in an eGPU enclosure - which, quite frankly, makes entering login information a bit difficult.

One possible, but sub-optimal (and slightly inconvenient) workaround is to disable the iGPU in device manager (which probably sucks if you run a screen off of that chip).

Spoiler
A little bonus on the side
(By the way, if you ever had a problem with MSI Afterburner not working properly for autorun on Windows boot, this workaround also fixes that issue - sounds awesome, right?)

Spoiler
How did i get the idea for this workaround?
Ever since i got my NUC in February I had been using my mentioned workaround with disabled iGPU, until i got an idea while watching a Youtube video about 2 weeks ago - they mentioned there was no real reason in using an administrator account actively on Windows and that it virtually is a main reason for virus infections happening on PCs. (Don't worry now, you will still be able to use your administrator account, it was just what gave me the idea for this specific workaround.)
Basically what I noticed from using the NUC with the iGPU disabled was, that there is a major issue with Adaptive VSync - it keeps acting like normal VSync in some games until i accidentally signed out and back into my user account some day - adaptive vsync worked for some reason and every time i tried from then on, this seemed to work, so i suspect there is an issue with driver load and adaptive vsync to begin with for eGPU users (adaptive vsync only works on external screens, iGPU connected displays will never work with it) - after seeing the mentioned video on Youtube, i started thinking about changing my PC a bit, with using another user account - then i realized that a different dummy user could fix the manual logout-login workaround for vsync. Thank you for your interest and reading all this, but this section doesn't really provide any other information than that 😉

 

Let's get started.

Spoiler
Creating a user account and setting it up to log out once it logged in

First, you need to create a dummy user account which I called "Nvidia" with a simple password. This user account will be used to log in automatically when the PC is started up. After creating the user, switch to it so that Windows can set everything up. Once that is done, you can log out of the dummy user and go back to your administrator account to continue setting everything up.
Back in your admin account, use Windows Search to find and launch "Task Scheduler". On the right hand side, you will find an option to create a simple Task. Do so, and give the task a name (I used "Logout Nvidia") for it. For now, set the trigger to "at login" and continue by clicking next. For action you want to make sure to use "Start Application". In the following step you will be asked about which application you want your task to start for you.

Spoiler
64-Bit Windows
C:\Windows\SysWOW64\shutdown.exe

Spoiler
32-Bit Windows
C:\Windows\System32\shutdown.exe

Before going forward and clicking next, add '-L' as argument. After that, you can continue to finish creating the Task by just clicking next and finish.

IT'S IMPORTANT THAT YOU DO NOT LOG OUT OF YOUR CURRENT USER ACCOUNT AT THIS POINT!! Windows will constantly log all user accounts out on login if you do!

To fix this little issue from the line above, right click your newly created task and open the properties window. On the first tab you will be greeted with the name and creator of the task, below is a security options bit. We will take a look at this in a bit, but for now, go to the tab "Triggers". Click edit on the "At login" Trigger that was created during creation of the Task and change the option from "all users" to "specific user". Use the button to change the user and enter the name for the dummy user you created and logged into earlier. When done, click OK to close the window. Go to the Tab right of Actions (sorry, I don't know the exact names since I don't use Windows in English) and make sure to disable all ticks in the Energy options.

To finish up this section of the guide, go back to the first tab of your Task ('General') and make sure that it's set to "only run when user is logged in" and tick "run with highest privileges". You can now close the properties window by clicking OK.

What we just set up is that our previously created user account will automatically log out once it has logged in. We want this because we just use that user account to make Windows load the Nvidia driver using this dummy account.

Spoiler
Setup automatic login for our dummy user

Since we would still need to click login and enter the password for our dummy account, we will make Windows automatically log in with this account when it boots:

On your keyboard press Win+R and enter "netplwiz". For later on, select the dummy user we made before and select properties. Take note of the User account name and close the properties window. For automatic login, untick the "All users need to enter username and password" box and click OK. Windows will now ask you for the username and password to automatically log in at boot. Use the credentials of your dummy account made before (the one that will log out instantly at login).

If you reboot your PC now, you will be greeted with the Welcome screen and the dummy user (in my case "Nvidia" will be logged in and instantly logged out again. This will cause Windows to load the Nvidia graphics driver and bring us straight back to the login screen - but this time, output via our eGPU will be available, even if our iGPU is enabled in device manager.

Spoiler
Hiding dummy user from login screen

There is still something we can do about the dummy user being selected automatically for login. We can simply hide it from the login selection. Automatic login will still work, but Windows will give us the main account (if you only use one account on your computer) for login to let us enter our password without interacting with Windows manually.

To do this, open regedit by pressing Win+R and entering "regedit".

On the left side, navigate to

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Right click the "Winlogon" folder and create a new key. Enter "SpecialAccounts" as name for the key. Now right click the "SpecialAccounts" folder and create yet another key within called "UserList".

Now, on the right side (the bigger area) right click and create a new DWORD (32-Bit) entry with the name of your dummy user account (in my case that's "Nvidia"). Make sure the value is 0 by double clicking your DWORD entry ("username").

 

Windows will now boot as it usually would but then log into the dummy user, instantly log out of the dummy user and send you back to your normal login screen while loading the Nvidia driver, hiding away the dummy user.

 

If you have any questions or feel that pictures might help, let me know and I will look into it!

This topic was modified 4 weeks ago

How to undervolt your GPU

2017 13-inch MacBook Pro TB
2019 Intel NUC10i7FNK, 16GB RAM + PM981a 1TB
Aorus Gaming Box 1070 (EVGA GTX1060 3G) - silent mod #1
Aorus Gaming Box 1080 (Gigabyte GTX1070 ITX OC) - Custom Case solution (TBD)


ReplyQuote