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).
Fig.
42Printer
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:
- 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’.
- 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.
- 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).
- 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
- 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:
- - Make
sure you have the latest RDP client on your machine.
- - If
you use a Mac try using a postscript printer.
- - For
older clients check Q302361 in the Microsoft Knowledge
Base.
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:
- - UniPrint
- - ThinPrint
- - SimplifyPrinting
- - Print-IT
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.