Title Page Previous Next Contents | Printing

Printing

If you take a look at the Microsoft public newsgroups or at the Remote Desktop/Terminal Services forum at Experts-Exchange you will notice that many questions (if not most of them) are related to printing. The same is valid for TS add-ons like Citrix; printing issues do exist and have plagued TS for many years.

The main question is, is it really that bad? Well it all depends on what you do on the TS, if you follow best practices, if you control the other end (meaning the user end and the printers they may have) and so on. We will give you a very good understanding on what you can do to minimize these and in some cases, eliminate such issues completely.

Best practices


The first thing you must learn before we move ahead is quite simple and easy to remember: NEVER, and I mean NEVER, install any printer driver on your terminal server. Ok, you can install them but only if the driver is developed for Windows Server 2003, it is certified by Microsoft AND (this is important!) you tested in your test environment with at least 5 to 10 users connected to the TS and all trying to print different types of documents, ranging from slides to 100 page PDFs. If the driver meets all above it is probably safe to have it running on your TS.

The second thing to remember is to avoid host based printers (these are printers that rely on the driver running on the machine to perform several tasks that are usually handled at the hardware level, directly on the printer – manufacturers do that to reduce the printer costs) and multifunctional devices (those that print, scan, fax, make coffee, etc – all in one single unit). I know this is probably the hardest part, as usually we have no control of which printers our users will be using at home for example.

The final rule is the easiest: avoid using/buying/suggesting less known brands and models.

If you follow these three simple rules above you will cut down a lot of your printing issues. If these still happen, let’s see what can be done.

Alternatives

There are two different types of alternatives out there. Free workarounds and paid solutions. Note the difference between workarounds and solutions. Workarounds will probably get you printing but functionality may be lost along the way (i.e. being limited to black and white printing even though your printer is a fancy color one); solutions in the other hand will give you all the features you need and more (i.e. bandwidth control/compression) but with a major drawback: cost.

Workarounds


Before we go ahead and discuss the known workarounds out there, you must understand how printer mapping works under Terminal Services. It is actually quite simple. Once a client connects to the TS, the TS will retrieve the exact name of the printer driver on the client end (under the printer ‘Advanced’ tab) and will compare it to what is available on the server. If a match is found, the TS will use the driver it has installed locally (if you did not install any drivers this means the Windows Server 2003 out-of-the-box printer drivers) and it will create a printer under the user session (you can easily identify these as they have the word ‘session’ as part of its name).
TerminalServicesAtoZ40.jpg

Fig. 42
Printer properties on the client side
As you can see, if you use printers that are available out-of-the-box with Windows Server 2003 (to find out which ones are there, simply logon to the server and add a new printer – use the LPT1: port or any other port as this is just for determining models available – and then browse through the manufacturer’s list and models), your local printer will get ‘mapped’ under your terminal server session and you will be able to print right away. This happens by default with any Windows Server 2003 default installation.

What if I am using a printer that is not on the list? As we mentioned above we should avoid installing any drivers on the TS. So how can the TS map my printer if the drivers names do not match? Well someone thought about that and added a mechanism to handle these cases under Terminal Services...

And the solution, as always, is simple. Here are the step-by-step instructions:
  1. You bought a LexBrother printer model CHEAPO1000. You installed it on your local PC and it works. The driver name listed on the ‘Advanced’ tab is ‘LexBrother Cheapo 1000 Series’.
  1. The first thing to determine is if this printer is compatible with anything else. Usually laser printers are compatible with some HP LaserJet model (like the old LaserJet 5 ones) and inkjet ones may be compatible with HP DeskJets (if you see another model under the Windows Server 2003 default printer list from the same manufacturer as your printer, you can try that driver to see if it works). Assuming there was no Windows Server 2003 for our CHEAPO1000 and that it worked with a LaserJet 4 driver we are ready to go. This step is where you will spend most of your time: trying to determine which driver may work with your printer.
  1. On the TS, edit the file PRINTUPG.INF and add a line under the [Printer Driver Mapping] section as shown below (yes, it is case sensitive):
“LexBrother Cheapo 1000 Series” = “HP LaserJet 4”, 1, 1, “11/27/1999
The left column is the exact name of the local driver, as seen on “your PC and the right column is the exact name as shown under the printer list available on Windows Server 2003 plus some extra values (check the PRINTUPG.INF file on your 2003 Server for more information – usually all you do is to copy an existing line and paste it right below and then you just change the left column to match the client driver name).
  1. Now you must change the TS registry. Add two new values to this registry key:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd
The values are:
Name: "PrinterMappingINFName"
Type: REG_SZ
Data: C:\Windows\Inf\PRINTUPG.INF.
Name: "PrinterMappingINFSection"
Type: REG_SZ
Data: Printers
  1. From now on the TS will use the LaserJet 4 driver anytime someone connects using the CHEAPO1000 printer!
ι Note: If you do want to change the PRINTUPG.INF file you can create your own .INF one. Just follow this article (it also details all I explained above):
http://support.microsoft.com/kb/275495
“Printer redirection or upgrade may not work because of signed Ntprint.inf file”

Some other things to remember when troubleshooting printing issues:

Third Party Printing Solutions


The purpose of this section is not really to evaluate and write a review of every single product to do this out there. I just want you the reader to be aware that such products exist, explain what they do and give you an idea of how much they cost and why they are helpful.

I have seen environments where administrators and/or technical personnel would spend hours and hours per week troubleshooting/fixing printing issues in TS. If you consider all these hours had an actual cost to the company that employed all these people we can easily see these companies were spending thousands of dollars monthly on printing problems. The issue is, most administrators/techies do not see their time as an expense, which is completely wrong.

And that is why I think all these products are helpful. They eliminate or greatly reduce printing issues and give administrators and techies time to do other, more relevant things for their companies. The problem is, there is an upfront AND steep cost usually associated with such solutions. I do not have exact numbers but they range from US$1,000 to US$ 2,000 per terminal server (unlimited users). If you are planning a TS environment, I highly recommend you budget some extra money for add-ons you will probably need to get the job done properly. Make sure printing is covered in this budget.

Not getting into the technical details of each product, the main idea behind all of them is eliminate the need for any drivers on the TS. The job is sent to the client and the client, using any printer it may have, will print it. There is also a way to control how much bandwidth is being used for printing (to limit it so you do not take over the whole DSL link just for your print job!) and compression. Neat stuff for sure. Keep in mind a client component is required (meaning you will have to deploy something at the client end for these products to work).

The products I know, in no specific order, are:

If printing becomes an issue or if you do not have control over what users may use as printers I definitely recommend you taking a look at any of the products above.