Getting blank screen or "source signal on other port" when connecting from zero client to VMware Horizon
Scenario:
When using a PCoIP zero client connecting to VMware VM running Horizon Agent 8.2 if the VMware remote console is open while user is in session the zero client will display a blank screen or you may receive a message "source signal on other port". If VMware remote console screen is closed the session never recovers. The user will have to disconnect and in some cases will have to power cycle the zero client to recover. While this may not be a big issue if you are using a persistent VM it may be a problem is the user is using an instant clone VM.
Issue:
It was observed in the zero client and host VM logs that when the VMware remote console screen was opened it was forcing a change in topology and this change was being pushed down to the zero client.
The zero client was being forced to try to use a resolution that the attached display cannot support.
PCoIP Zero Client log snip-its...
*************************** Display Topology ****************************
Display Topology: Enabled
Primary Display: Monitor Port 2
Display Layout: Horizontal
Alignment: Top
Monitor Port 1:
Position: A
Rotation: No rotation
Resolution: 0x0 @ 0Hz
Origin: (0, 0)
Monitor Port 2:
Position: A
Rotation: No rotation
Resolution: 1280x1024 @ 60Hz
Origin: (0, 0)
*************************** Attached Devices ***************************
Notice the zero client is showing the primary display is on port 2 and only 1 display connected with a resolution of 1280x1024.
The zero client logs show after Session Active that both the client and the host agree on the monitor topology and timing.......
2021-09-28T16:59:10.19Z> LVL:2 RC: 0 MGMT_IMG:(stats): Receiving video for videohead 1 with resolution 1280x1024
Then a few minutes later the VMware remote console screen is opened and it tries to enforce a resolution of 1920x843 and now the port is configured with no source.
A display with a native resolution of 1280x1024 cannot support a resolution of 1920xanything.
2021-09-28T17:01:38.01Z> LVL:3 RC: 0 MGMT_IMG:(set_new_sub_session_rx): Imaging subsession changing from 0 to 1!
2021-09-28T17:01:38.01Z> LVL:3 RC: 0 MGMT_IMG:dmt_params[0]: port 1, dmt 1920x843 @ 0 Hz, topology 1920x843 (0,0)
2021-09-28T17:01:38.01Z> LVL:3 RC: 0 MGMT_IMG:dmt_params[1]: port 1, dmt 0x0 @ 0 Hz, topology 0x0 (0,0)
2021-09-28T17:01:38.01Z> LVL:3 RC: 0 MGMT_IMG:(mgmt_img_fcc_rx_dmt1): Configuring port 1 with no source.
You should also see the following error message (-500)...
2021-09-28T17:01:38.06Z> LVL:1 RC:-500 MGMT_IMG:(is_imaging_reset_required): Incorrect DMT detected on single display setup, request imagi
2021-09-28T17:01:38.06Z> LVL:1 RC:-500 MGMT_IMG:ng reset.
Host VM log snip-its...
You will see shortly after Session Active the zero client is sending it's topology...
2021-09-28T12:59:09.003-04:00> LVL:2 RC: 0 MGMT_IMG :Zero client sent preferred topology for display 1: resolution=1280x1024, origin=(0, 0), rotation=0
Logs will show displays as 0,1,2,3
You can see that the VMware SVGA DevTap is enumerating the displays exactly as the zero client presented...
2021-09-28T12:59:55.025-04:00> LVL:0 RC: 0 EXTERN :input_devtap ==> WindowMonitorEnumProc - enumerated monitor: (0, 0) 1280 x 1024
The VMware remote console session is started and we can see the windowed size of that screen....
2021-09-28T13:01:38.380-04:00> LVL:0 RC: 0 SERVER :==> WindowProc: Detected WM_DISPLAYCHANGE event (1920 x 843)
During the next several minutes the host VM and the zero client try to agree on a new topology and try to reset the SVGADevTap several times.
Finally you see an error condition (-511)....
2021-09-28T13:01:42.940-04:00> LVL:0 RC: 0 MGMT_IMG :dmt_send: Image Engine detected display #0 (1920x843) with offset (0x0)
2021-09-28T13:01:42.940-04:00> LVL:1 RC:-511 MGMT_IMG :dmt_send: Cannot calculate monitor timing for 1920x843 resolution.
I suspect if the zero client had a 1920x1080 display connected you may not see this issue.
Fix:
Upgrade VMware Agent to 8.3.0-2106
NOTES:
The intent of providing the log snip-its is to help others try and troubleshoot issues like this.
Reading log files is not an easy thing, you need to know what to look for and where to look.
In this case the zero client logs were set to enhanced logging for Video.
On the host VM side the logging level was set to level 2.
Zero client log time stamps are in UTC and host VM log time stamps are in user local time zone.