cherryandbees - stock.adobe.com

Tip

How to troubleshoot a VMware Horizon black screen

One of the most common issues with VMware Horizon virtual desktops is a black screen displaying and crashing the desktop, so IT admins should learn how to troubleshoot this issue.

One of the more common problems that often occurs in VMware Horizon is that users connect to a VDI-hosted desktop only to see a black screen and disconnect shortly after that.

Although this problem is relatively common, it is usually easy for virtual desktop administrators to resolve. Most of the time, the VMware Horizon black screen problem can be attributed to one of five simple configuration issues.

As VMware VDI administrators, you should learn the common issues that could lead to VMware Horizon displaying a black screen for your users and how to fix them.

Unsupported display resolution

One of the main causes of the VMware Horizon black screen problem is a support issue with the physical device display. This occurs when the template that the admin configured for the virtual machine is set to use a display resolution that the end-user device cannot support.

If you suspect this is the cause of the problem, you should log in to the VMware Horizon Connection Server Admin portal and go to the desktop pool settings. If the video resolution is set to a static value, make sure that the setting is something that all the client devices support, such as 1024 x 768. However, the video adapter should be set to Auto Detect in most cases, which would prevent this issue.

VMware display settings
The display settings for VMware Horizon virtual desktops within the administrative console

Group Policy Object corruption

Another common cause of this VMware Horizon issue is that the DNS Name Group Policy Object has become corrupt. If this happens, you will need to replace the Group Policy Object.

You should make sure that users are not accessing any of the virtual desktops when you begin troubleshooting, and then log in to vCenter Server and power on the parent virtual machine. Within that virtual machine, launch the Group Policy Editor by entering the GPEDIT.msc command at the Windows Run prompt.

The next step in the process is to copy the Horizon Agent group policies from your connection server. These policies are stored in the administrative template, which should be located at c:\Program Files\VMware Horizon\Server\Extras\GroupPolicyFiles\vdm_agent.adm. You will need to copy this file to the parent virtual machine's Windows desktop.

Now, switch back to the Group Policy Editor, expand the Computer Configuration container, right click on Administrative Template, and choose the Add/Remove Templates command from the shortcut menu. Then you should follow the prompts to import the administrative template file that you copied to the desktop. Next, expand the VMware Horizon Agent Configuration container and select the Agent Configuration option.

One common cause of the Horizon black screen problem is that a firewall is blocking the client from accessing a required network port.

Right click on the Connect Using DNS Name option and choose the Properties command from the shortcut menu. You will need to disable this group policy object. Once you do, restart the parent virtual machine. When the machine completes the reboot, perform a full virtual machine shut down and create a snapshot.

The next step in the process is to open a web browser and log in to the Connection Server Admin page. You will now need to select the pool containing the base snapshot. Go to the Summary tab and click Edit Image, then click on the Recompose option and click Next. Follow the prompts on the remaining screens to recompose the VMware virtual desktops based on the parent virtual machine.

Firewall issues

One common cause of the Horizon black screen problem is that a firewall is blocking the client from accessing a required network port. The ports that must be open vary depending on whether the client connects through a VMware Unified Access Gateway, or if it connects directly to a Horizon Connection Server.

VMware Unified Access Gateway
A VMware virtual desktop connection through a Unified Access Gateway Appliance

If clients connect directly to a Horizon Connection Server, then you will need to open the following: ports:

TCP port 443

TCP and UDP ports 4172

TCP port 9427

TCP and UDP ports 22443

TCP port 32111

If clients connect through a Unified Access Gateway, then you will need to open these ports instead:

TCP and UDP ports 443

TCP and UDP ports 4172

TCP and UDP ports 8443

The Unified Access Gateway configuration

There are numerous issues related to the way that the Unified Access Gateway is configured that could potentially cause problems. The most common of these issues is that an IT admin may forget to disable the Blast Secure Gateway and PC over IP (PCoIP) options on the Horizon Connection Server.

You should disable these options because the Unified Access Gateway will be handling these functions in place of the connection server. You can find both options on the Edit Connection Server Settings' General tab, and you can disable them from there.

Inadequate video RAM

The black screen problem can happen if you configure the host virtual machine with an inadequate amount of video memory to display the desktop. Keep in mind that this problem only occurs if the connection runs via PCoIP. RDP connections are not affected, nor will the fix have any effect on RDP sessions.

According to VMware, the existence of these entries in the PCoIP server logs indicate insufficient video memory:

LVL:0 RC: 0 EXTERN :svga_devtap ==> SVGADevTapWDDMFlipKTRender: screen dma failed

LVL:0 RC: 0 IMG_FRONTEND :flip_frame_buffer: Unknown flip error for display 0 [0, 1006]

LVL:0 RC:-500 IMG_FRONTEND :open_displays(): Flip error in open display first flip.

LVL:0 RC:-500 MGMT_IMG :cSW_HOST_IPC::enable_frontend failed. 2 retries remaining. Trying again...

LVL:0 RC: 0 IMG_FRONTEND :Calling open display in Tera1 mode.

LVL:2 RC: 0 MGMT_SSIG :Session closed locally (IP_Address, MAC_Address, PRI: 0)

LVL:2 RC: 0 MGMT_SSIG :Sending to peer: BYE disconnect reason cause (0xfffffe0c)

To fix this problem, you must make sure that the parent virtual machine's video adapter is set to Auto Detect. Next, you must go to the VMware Horizon Connection Server Admin Portal and edit the desktop pool settings.

VMware desktop pool settings
The VMware virtual desktop pool setting in the Horizon administrative console

You'll need to set the video resolution and the monitor account to their maximum values. This will allow Horizon to allocate between 125 MB and 128 MB of video memory to each virtual desktop. Lastly, you should shut down and then reboot each of the virtual machines to complete the process.

Next Steps

VMware expands VD management tools for Microsoft Azure

7 steps to fix a black screen in Windows 11

Dig Deeper on Virtual desktop delivery tools