Display issues when connecting to VNC Server running on Linux

Follow

In some circumstances, your Linux remote computer will not display correctly in VNC Viewer. The commonly reported issues are:

  • a black or blank screen
  • application windows are white
  • slow refresh of images

The issue is most commonly seen when connecting to a computer with no monitors attached (headless), or a monitor using HDMI/DisplayPort is connected but powered off.

It appears that in the above situations, Linux does not correctly report graphical updates to be captured by VNC Server. At this time, there are some known workarounds you can try below:

  1. Upgrade VNC Server to version 6.5.0, as this version contains some changes to try and automatically recover from a blank screen
  2. If you are running VNC Server on Ubuntu 18.04 LTS or later, or CentOS/RHEL 8 or later, you need to disable Wayland
  3. Change your Power settings on the Linux computer to never turn off the monitors/displays
  4. Check that Linux is not set to a "Battery Saver" power mode
  5. Connect an EDID emulator to the VNC Server computer. An example EDID emulator can be seen here
    Note: RealVNC have not tested this particular emulator and it is only provided as an example
  6. Change the VNC Server CaptureMethod parameter:
    • On the remote Linux computer, open the VNC Server dialog.
    • Select Options from the hamburger menu.
    • On the Expert tab, filter the list for CaptureMethod, and set the value to 1
    • Restart VNC Server

      This can also be specified using a configuration file: /root/.vnc/config.d/vncserver-x11
  7. Install the X11 dummy driver, by running:
    • Ubuntu
      sudo apt update
      sudo apt install xserver-xorg-video-dummy
      sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak # this file may not exist so if there is an error, it can be ignored
      sudo cp /etc/X11/vncserver-virtual-dummy.conf /etc/X11/xorg.conf
    • RHEL / CentOS
      sudo yum install xorg-x11-drv-dummy
      sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak # this file may not exist so if there is an error, it can be ignored
      sudo cp /etc/X11/vncserver-virtual-dummy.conf /etc/X11/xorg.conf
    • Reboot the machine, and you should now be able to connect as expected.
    • Note: Following these steps will result in any connected monitors displaying a blank screen. If you need to use a monitor, run sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.dummy and reboot
    • Note 2: This method is using the X11 dummy driver, so some graphical features may not be available. If you want your own driver to work, you will have to research what changes are needed and make your own xorg.conf
Was this article helpful?
12 out of 47 found this helpful

Comments

3 comments
  • I have an old Dell computer with a VGA connector that has this problem and another computer with HDMI. I recommend option 5, a dummy head. There are some very good ones that emulate very high resolution monitors.

    But I'm cheap. Putting three 75Ω resistors across 1-6, 2-7, 3-8 will do much the same as the emulation. I didn't have 75Ω resistors so I used 100Ω resistors and its working for me.

    0
    Comment actions Permalink
  • I have followed the steps below that you have mentioned but none of the said files exist in the X11 directory I am using RHEL 8.4.

    sudo yum install xorg-x11-drv-dummy
    sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak # this file may not exist so if there is an error, it can be ignored
    sudo cp /etc/X11/vncserver-virtual-dummy.conf /etc/X11/xorg.conf

    Furthermore, I tried to locate this file /etc/X11/xorg.conf that one also does not exist in the X11 directory.

    0
    Comment actions Permalink
  • I have followed the steps below that you have mentioned but none of the said files does not exist in the X11 directory I am using RHEL 8.4.

    sudo yum install xorg-x11-drv-dummy
    sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak # this file may not exist so if there is an error, it can be ignored
    sudo cp /etc/X11/vncserver-virtual-dummy.conf /etc/X11/xorg.conf

    Furthermore, I tried to locate this file /etc/X11/xorg.conf that one also does not exist in the X11 directory.

    0
    Comment actions Permalink

Please sign in to leave a comment.