Windows 11

UEFI Framebuffer, NVIDIA 1080Ti, a New Monitor, and a Blank Screen

You may remember that I have a Gamestation that, due to the movers stealing my previous computer, is a fairly recent, and beefy, system. I even had it expanded (in terms of SSDs) so that my pictures would fit. As it turns out, it is also good enough to run Windows 11, despite all of the limits on hardware (I did add a TPM 2.0 on it when I built it, just so that Bitlocker wouldn’t bother me too much), which means I tried to do that when it became available — I wanted to update it on my own schedule, when I didn’t need the computer for a few days if something went wrong.

Unfortunately, when I tried the update, I hit a snag. While I eventually tracked it down, at first I thought there was an incompatibility between one of the services running on my system and the installer. So I wanted to stop everything before doing that, and I ran msconfig with the no-services boot option, which turned out to be a terrible idea, as it didn’t let me log in at all. It should have been easy to recover but… I couldn’t get to the checkpoint restore UI.

After that failed, I tried booting off the Windows 11 install media, but every time I tried getting to the boot menu, or to the UEFI configuration utility, I would be welcomed by the blank screen. I thought it was a firmware problem, but then I checked the readout of the POST code from the motherboard (it shows on the grille on top of the case, to the side of the liquid cooling radiator), and it was reporting something about a missing console output.

After attempting to enter the menu while booting on each of the three DisplayPort ports on the card, I started looking around, but it was not obvious what to look out for. Then I eventually found a random forum post that opened my eyes. You see, my main monitor – which I use both for my personal gamestation and my workstation from… uh… work – didn’t seem to like staying turned off for two weeks while me and my wife went to Lithuania, and I came back to it not working correctly, and the already present flickering deteriorated to the point of being unable to use it, which meant I ended up having to get myself a Dell U2720Q, which is a very recent monitor.

What I did not realize is that, unlike my previous Benq monitor, which was DisplayPort 1.1/1.2, the Dell only supports DisplayPort 1.4. And while a (booted) Windows will work fine with the graphic card I’ve got it won’t work out of the box on pre-boot environments relying on the UEFI framebuffer, such as the firmware configuration, and the Windows checkpoint restore interface. Indeed, there is a firmware update from NVIDIA specifically for this, and despite them not saying this explicitly on the page, the URL suggests this may be just an update for the Option ROM of the card, to include a newer UEFI framebuffer driver (the URL says uefi-update, and it makes sense for separate firmware updaters for 32- and 64-bit.)

After using my side 24″ monitor instead (the one that usually is connected to my Linux NUC), I could restore the previous checkpoint, and got my system back in working shape. I have obviously then proceeded to update the card’s firmware, and indeed the boot splash, configuration, boot menu and other recovery screens for Windows are all working fine.

Also for those who might be wondering what was going on with the Windows 11 install. Once I found the actual installation logs (attached on the Event Viewer), I could find the error message: «Duplicate profile detected for user.»

To understand what’s going on with that, you need to known that it’s counting as a “user” the actual home directory, and as “profile” the equivalent of the UID definition on Unixes (the thing that starts with S- and continues with an UUID). In this case, deleting an user definition does not mean that all of the definitions will be deleted — instead, it created a “backup” key in the registry that the installer didn’t ignore.

If you hit that problem, check HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList and remove the spurious backup entries — everything should be working after that.