Product Documentation


May 22, 2017

This article provides information about printing best practices.  


The Linux VDA requires both cups and foomatic filters. Execute the following commands based on your Linux distribution:

RHEL 7 printing support

command Copy

sudo yum –y install cups

sudo yum -y install foomatic-filters

RHEL 6 printing support

command Copy

sudo yum –y install cups

sudo yum -y install foomatic


The Linux VDA functions for both published desktops and published applications. The printer name is different between desktops and applications. Consider the following:

  • For published desktops:

  • For published applications:



If the same user opens both a published desktop and a published application, both printers are available to the session. Printing to a desktop printer in a published application session, or printing to an application printer in a published desktop fails.


Unable to print

There are a number of items to check when printing is not working correctly. The print daemon is a per-session process and must be running for the length of the session. Verify whether the printing daemon is running.

command Copy

ps –ef | grep ctxlpmngt

If the ctxlpmngt process is not running, manually start ctxlpmngt from a command line. If printing is still not working, check CUPS framework. The ctxcups service is for printer management and communicates with the Linux CUPS framework. This is a single process per machine and can be checked by:

command Copy

service ctxcups status

Extra log when printing CUPS

As one of the components of the Linux VDA, the method of how to get the log of a printing component is similar to other components.

For RHEL, some extra steps are necessary to configure the CUPS service file. Otherwise some logs cannot get logged in hdx.lo:

command Copy

sudo service cups stop

sudo vi /etc/systemd/system/


sudo service cups start

sudo systemctl daemon-reload


This configuration is only for collecting the full printing log when an issue arises. Normally this configuration is not recommended because it breaks CUPS security.

Print output is garbled

Garbled output can be caused by an incompatible printer driver. A per-user driver configuration is available and can be configured by editing the ~/.CtxlpProfile$CLIENT_NAME configuration file:

config Copy







The printername is a field containing the name of the current client side default printer. This is a read-only value and should not be edited.

The fields ppdpathmodel and drivertype should not be set at the same time because only one takes effect for the mapped printer.

If the Universal Printer driver is not compatible with the client printer, configure the model of the native printer driver with the model= option. You can find the current model name of the printer with the lpinfo command:

command Copy

lpinfo –m

xerox/ph3115.ppd.gz Xerox Phaser 3115, SpliX V. 2.0.0

xerox/ph3115fr.ppd.gz Xerox Phaser 3115, SpliX V. 2.0.0

xerox/ph3115pt.ppd.gz Xerox Phaser 3115, SpliX V. 2.0.0

You can then set the model to match the printer:

config Copy


If the Universal Printer driver is not compatible with the client printer, configure the ppd file path of the native printer driver. The value of ppdpath is the absolute path of the native printer driver file.

For example, there is a ppd driver under /home/tester/NATIVE_PRINTER_DRIVER.ppd:

config Copy


There are three types of Universal Printer Driver supplied by Citrix (postscript, pcl5 and pcl6). You can configure those in the driver type if no native printer driver is available. 

For example, if the client default printer driver type is PCL5:

config Copy


Output size is zero

Try different types of printers. And try with a virtual printer like CutePDF and PDFCreator to find out whether this issue is related to the printer driver.

The print job depends on the printer driver of the client default printer. It's important to identify the type of the current active driver type. If the client printer is using a PCL5 driver but the Linux VDA chooses a Postscript driver, this will cause an issue.

If the printer driver type is correct, you can identify the problem by performing the following steps:

To identify this issue:

  1. Log on to the ICA session desktop.
  2. vi ~/.CtxlProfile$CLIENT_NAME
  3. Add the following field to the save pool file on the Linux VDA:
config Copy


4.  Log off and back on to load the configuration changes.

5.  Print the document to reproduce the issue. After printing, a spool file is saved under /var/spool/cups-ctx/$logon_user/$spool_file.

6.  Verify whether the spool is empty. If the spool file is zero, this represents an issue. Contact Citrix Support (and provide the printing log) for additional guidance.

7.  If the spool size is not zero, copy the file to the client. The spool file content depends on the printer driver type of the client default printer. If the mapped printer (native) driver is postscript, the spool file can be opened in the Linux OS directly. Verify whether the content is correct.

If the spool file is PCL, or if the client OS is Windows, copy the spool file to the client and print it with the client-side printer. After completing this step, test it with the other printer driver.

8. To change the mapped printer to another third-party printer driver, use the postscript client printer as an example:

a. Log on to an active session and open a browser on the client desktop.

b. Open the printing management portal:

config Copy


b.  Choose the mapped printer CitrixUniversalPrinter:$ClientName:app/dek$SESSION_ID and Modify Printer. This operation requires administrator privileges.

c.  Retain the cups-ctx connection, then click Continue to modify the printer driver.

d.  In the Make and Model page, choose some other postcript driver instead of the Citrix UPD driver (for instance, Citrix Universal Driver Postscript). For example, if the CUPS-PDF virtual printer is installed, select the Generic CUPS-PDF Printer. Save the modification.

e.  If this process succeeds, configure the ppd file path of the driver in .CtxlpProfile$CLIENT_NAME to allow the mapped printer to use this third-party driver.

Known issues

The following issues have been identified when printing using the Linux VDA:

CTXPS driver is not compatible with some PLC printers

If you encounter printing output corruption, set the printer driver to the native one provided by the manufacturer.

Slow printing performance for large documents

When you print a large document on a local client printer, the print file is transferred over the server connection. On slow connections, this can take a long time.

Printer and print job notifications seen from other sessions

Linux does not have the same session concept as the Windows operating system. Therefore, all users get system wide notifications. You can disable these notifications by modifying the CUPS configuration file: /etc/cups/cupsd.conf.

Locate the current policy name configured in the file:

DefaultPolicy default

If the policy name is default, add the following lines into the default policy XML block:

config Copy

<Policy default>

     # Job/subscription privacy...

     JobPrivateAccess default

     JobPrivateValues default

     SubscriptionPrivateAccess default

     SubscriptionPrivateValues default

     … …

     <Limit Create-Printer-Subscription>

          Require user @OWNER

          Order deny,allow


     <Limit All>

          Order deny,allow