Why do I see a low resolution when connected to RealVNC Server for Windows on a headless/virtual machine?

Follow

Why does this happen?

When connecting to a Windows computer you may notice that the list of resolutions in Windows' Display Settings is limited to a maximum of 1024x768 or 1280x1024.

This is caused by a limitation of Windows - since it cannot detect a connected display, a limited selection of "safe" resolutions is offered.

Is there a way to avoid this issue?

Connect a monitor to the RealVNC Server device and ensure it is powered on

If you are connecting to RealVNC Server on a physical computer, connect a monitor and ensure it is powered on. If you are connecting to a Virtual Machine, ensure that the Virtual Machine is configured to have an active graphical adapter and monitor device.

Connect a display emulation device to the RealVNC Server device

If you are connecting to RealVNC Server on a physical device, you can connect an EDID emulator to the RealVNC Server device. An example EDID emulator can be seen here.
Note: RealVNC has not tested this particular emulator and it is only provided as an example

Configure Windows to use a different resolution

It may be possible to force Windows to provide a specific resolution. This is usually only possible on desktop computers and not laptops.

PLEASE NOTE: The below option involves editing the Registry, and should only be attempted on a non-production/non-critical machine, before rolling out to your production environment. We recommend backing up the Registry prior to making any changes.

In this example, we will be setting a resolution of 1920x1080.

  1. Open Regedit
  2. Navigate to HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
  3. Select the key(s) that start with the name SIMULATED (or NOEDID if SIMULATED does not exist) and then select the child key named 00
  4. Change the value PrimSurfSize.cx to the desired horizontal resolution (1920). Be sure to select 'Decimal' when changing these values.
  5. Change the value PrimSurfSize.cy to the desired vertical resolution (1080).
  6. Select the child key of 00 also named 00.
  7. Change the value of ActiveSize.cx to the same horizontal resolution as before (1920).
  8. Change the value of ActiveSize.cy to the same vertical resolution as before (1080).

After a reboot, the simulated display should now be at the resolution you set.

This method was sourced from https://superuser.com/questions/990398/setting-display-resolution-beyond-1024x768-with-headless-windows-10).

Was this article helpful?
35 out of 76 found this helpful

Comments

4 comments
  • This is very helpful and seems to be going in the right direction. I have tried this and did not resolve the problem yet. I have also updated Stride and still not having any luck. Anything else that I should try?

    0
    Comment actions Permalink
  • As per the last comment. No effect at all :( Why Windows....why? Can someone have a go?

    0
    Comment actions Permalink
  • Same here, no joy. I'm not a huge fan of editing Windows registery but I was out of options. The article, references and general concept described here seem logical but have had absolutely zero effect on changing the resolution of a Windows VM. In my case, it's a Windows 10 VM running on Microsoft's cloud Azure services. 1920x1080 is what you're going to get with RealVNC regardless of how you set those registery keys.
    I finally figured out how to get RDP to work with different resolutions ... now I just have to get realvnc in "user mode" to connect to the RDP session with the higher resolution. Not sure if this is going to work ... and seems a bit quirky ... but it'll have to do. :/

    0
    Comment actions Permalink
  • I followed the instructions, it works exactly what I wanted. My remote Windows Server (VPS) is from IONOS.com. Thanks for the helpful article!

    0
    Comment actions Permalink

Please sign in to leave a comment.