Printer drivers in a multiuser environment.

If you’re familiar with the challenges of printer drivers in a multiuser environemnt you can skip the first part of this post.

The challenge of printer drivers in a multiuser environment
The first terminal server implementation i’ve done was a Windows NT 4 Terminal Server. This is where i’ve learned (the hard way) that printer drivers and a multiuser enviroment is a snake pit. Finding the right driver for the printer is a difficult job which was done by trial-and-error.

The vendors soon realized that this was a problem and there had to be a better way, which resulted in a number of difficult approaches.
First of all the printer vendors started building good printer drivers which were tested on multiuser platforms like Terminal Server and Citrix MetaFrame / Presentation Server / XenApp.
This helped a lot! In my environment the most commonly used printers where Hewlett Packard printers, usually LaserJet’s. After downloading the right driver once you where done… right?
Well, unless all you’re printers are from a “good” vendor with multiuser aware drivers there was no issue. But you needed some other printers as well, and HP wasn’t always the right match for you. And there came the users…
Besides the printers in the (branch) office users got the ability to login from a remote location, with client printers. Client printers are printers attached to the client (PC or thin client) which are mapped through the session. This resulted in an explosion of printer drivers on you’re servers, which you all needed to support (and you didn’t want to support in the first place).

Within a few years some companies created a solution for most of these problems, a universal printer driver. This “one size fits all” solution resulted in a driver which was supposed to be used for everyone, so one driver should be supported. That’s the theorie. But since this solution is for client printers, and not all printers respond well to this solution, this didn’t solve all problems.

In fact, not all the problems are solved. There are less, which is a good thing.

How do I recognize issues related to bad printer drivers?Depening on the type of issue, you’ll notice soon enough. In the worst case you’re machine will crash and result in a BSOD (Blue Screen Of Death).
However some problems are more ‘subtle’. Sometimes the printer spooler crashes, doesn’t respond or just doesn’t function.
In other cases the server appears to hang. New sessions aren’t created properly, users are unable to print and server doesn’t respond to ‘Terminal Services Manager’ (TSAdmin.exe).

How should I choose my printer drivers?
First of all, choose a printer which has multiuser-aware drivers. For instance, most HP drivers have drivers which are tested on multiuser environments. HP has published a document about supported printers in a Citrix XenApp environment which can be downloaded here.

Next, try to use as less drivers as possible. For instance with an universal, or using the same printer model. The less drivers you have, the less chance on driver issues.

The next fase is to test you’re printer drivers.
– The first step in this test is as easy as it sounds, just install the printer with the driver you expect to work. Then test a few test pages and then some rich-documents.
– The second step is to stress the server with you’re chosen printer drivers. Citrix has released a utility called StressPrinters which can be found here.
I would like to advice you to simulate a real user environment, with user actions like printing, as well. This can be achieved by using the Denamik LoadGen which can be found here.
– When everything still functions correct you’re ready to test according to you’re own test plan (for instance a DTAP procesS).

When you’re sure about the drivers you want to implement you need to make sure that all drivers are the same on all the multiuser servers (TS / Citrix / etc.). Citrix has a printerdriver replication builtin there XenApp product, but this hasn’t really convinced me.
On all of my implementations I use the DeNamiK EMSS (Environment Management and Synchronisation Suite) to replicate the printer drivers.

And that’s it! When you’re problems aren’t solved, go back to step 1… No seriously, you could look at these resources as well:
Citrix – Troubleshooting Printer Issues in Presentation Server 4.5
Citrix – The Citrix Print Manager Service (cpsvc.exe) or Microsoft Print Spooler Service (spoolsv.exe) Crashes or Hangs
Citrix – HMR Test Pack

Ingmar Verheij