Contact Support

Customers who viewed this article also viewed

banner icon

Identify Changes in NetScaler build files with

File Integrity Monitoring

Learn More Watch Video
CTX216051 {{tooltipText}}

Linux Virtual Desktop Graphics Configuration and Troubleshooting

Applicable Products

  • XenDesktop
  • XenApp

Information

Introduction

This document serves a guide for Linux VDA 1.3 Graphics configuration and fine-tuning. For system requirements and installation guide, please refer to Linux VDA Installation Guide on Citrix Documentation.

Configuration Parameters

There are quite a few configuration parameters under HKLM\System\CurrentControlSet\Control\Citrix\Thinwire regrading to graphics that can be tuned with ctxreg utility.

How to Enable Thinwire Plus

Thinwire plus is enabled by default, for both standard VDA and 3D Pro.

How to Enable H.264

In addition to the Operating System requirement, H.264 has minimum requirement on Receiver version, if client does not meet the requirements, it will fallback to thinwire plus.

OS Windows Mac OS X Linux Android iOS Chrome OS
Minimum requirement for H.264 3.4 or later 11.8 or later 13.0 or later 3.5 5.9 1.4

Latest Receiver feature matrix is available here.

Run the following command to advertise H.264 encoding in VDA:

sudo ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "AdvertiseH264" -d "0x00000001" --force

How to Enable Hardware Encoding in HDX 3D Pro

For HDX 3D Pro setting AdvertiseH264 only enables software H.264 encoding. Run this command to enable hardware encoding:

sudo ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "HardwareEncoding" -d "0x00000001" –force

Note: Currently, hardware encoding only supports H.240 YUV420P.

How to Tune Thinwire Plus for Lower bandwidth

  • MaxColorDepth
    Default 0x20, type DWORD.
    This option specifies the color depth of graphics transferred through thinwire protocol to client.
    To save bandwidth, set it to 0x10 (Preferred color depth for simple graphics) or 0x8 (the experimental low bandwidth mode).

  • Quality
    Visual quality
    Default: 0x1(medium), type: DWORD, valid values: 0x0(low), 0x1(medium), 0x2(high), 0x3(build to lossless), 0x4 always lossless.
    To save bandwidth, set Quality to 0x0(low).

Additional parameters

  • TargetFPS
    Target frame rate
    Default: 0x1e (30), Type: DWORD

  • MinFPS
    Target minimum frame rate
    Default: 0xa (10), Type: DWORD

  • MaxScreenNum
    Maximum number of Monitors client can have
    Default: 0x2, Type: DWORD
    For standard VDA, the maximum value can set is 10, and for 3D Pro, the maximum value can set is 4

Troubleshooting

Check which encoding is in use

Use the following command to check whether H.264 encoding is in use (1 means H.264 and 0 means TW+):

sudo ctxreg dump | grep H264

The results should resemble:

create -k "HKLM\Software\Citrix\Ica\Session\1\Graphics" -t "REG_DWORD" -v "H264" -d "0x00000001" --force
create -k "HKLM\System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "AdvertiseH264" -d "0x00000001" --force

Check whether hardware encoding is in use for 3D pro

Run this command (0 means not in use, 1 means in use):

sudo ctxreg dump | grep HardwareEncoding

The results should resemble:

create -k "HKLM\Software\Citrix\Ica\Session\1\Graphics" -t "REG_DWORD" -v "HardwareEncoding" -d "0x00000001" –force

Another way is to use nvidia-smi command, output should be like the following if hardware encoding in use:

nvidia-smi

Tue Apr 12 10:42:03 2016     
+------------------------------------------------------+                     
| NVIDIA-SMI 361.28     Driver Version: 361.28         |                     
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K1             Off  | 0000:00:05.0     Off |                  N/A |
| N/A   42C    P0    14W /  31W |    207MiB /  4095MiB |      8%      Default |
+-------------------------------+----------------------+----------------------+
                                                                             
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      2164  C+G   /usr/local/bin/ctxgfx                          106MiB |
|    0      2187    G   Xorg                                            85MiB |
+-----------------------------------------------------------------------------+

Check the NVIDIA GRID™ graphics driver is installed correctly

In order to verify if the NVIDIA GRID™ graphics driver is installed correctly, run “nvidia-smi”; the results should resemble:

nvidia-smi

+------------------------------------------------------+
| NVIDIA-SMI 352.70     Driver Version: 352.70         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M60           Off  | 0000:00:05.0     Off |                  Off |
| N/A   20C    P0    37W / 150W |     19MiB /  8191MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

In some cases, e.g. the GPU pass through case, the output indicates that the video card is not loaded correctly. This may caused by the following script:

/etc/X11/ctx-nvidia.sh

  • check the BusID in /etc/X11/ctx-nvidia-*.conf, if the BusID of Secion "Device" is like the following. It could be incorrect.
  BusID "PCI:0:0:0"
  • check the output of lspci, find the video card you are going to choose, in the following case, the device shall use PCI:0:5:0, which is different form the ctx-nvidia-*.conf file.
00:05.0 3D controller: NVIDIA Corporation Device xxxx (rev xx)

In this situation, the ctx-nvidia-*.conf are not configured correctly. You shall modify the script /etc/X11/ctx-nvidia.sh of line, to get correct gpu line according to the output of lspci

gpu=$(lspci | grep 'VGA' | grep 'NVIDIA')

When you modified the script, run the script by root again. So the /etc/X11/ctx-nvidia-*.conf are with the correct BusID.

You need to reboot Linux to make modification take effect.

HDX 3D Pro multi-monitor redraw issues

If you are seeing redraw issues on screens other than the primary monitor check that the NVIDIA GRID™ license is available.

Check Xorg error logs

The log file of Xorg is named like Xorg.{DISPLAY}.log under /var/log/ folder.