Product Documentation


Sep 27, 2016

This article provides information about printing best practices.


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

RHEL 6 printing support

command 複製

sudo yum –y install cups

sudo yum -y install foomatic

RHEL 7 printing support

command 複製

sudo yum –y install cups

sudo yum -y install foomatic-filters


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 if printing is not working correctly. The print daemon is a per-session process and must be running for the length of the session. Verify that the printing daemon is running.

command 複製

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 the 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 複製

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 SUSE, some extra steps are necessary to configure the CUPS service file. Otherwise some logs cannot get logged in hdx.lo:

command 複製

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:

command 複製







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 as only one takes effect for the mapped printer.

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

command 複製

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:

command 複製


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

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

command 複製


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 client default printer driver type is PCL5:

command 複製


Output size is zero

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

The print job depends on the printer driver of 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 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:
command 複製


4.  Log off and log on again to load the configuration changes.

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

6.  Verify if 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 that 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 in the ICA desktop. 

b. Open the printing management portal:

command 複製


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, then Generic CUPS-PDF Printer can be chosen. 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 3rd 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:

command 複製

<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