Wednesday, April 09, 2008

Terminal Server 2003 Printer Fallback Drivers

So I have a customer that uses a terminal server to share a clinical and financial app between forty or so users. Some, when printing in landscape mode, get the right 1/4 inch or so cut off when prionting reports. I could print fine using an Apple printing to a Lexmark All-In-One, and the programmers could print OK using a Windows client printing to a Laserjet 5, but my friends with Laserjet 1300 series and some others get cut off.

Looking into it, I found that some clients were printing using the HP Deskjet 500 PCL drivers, but we have no Deskjet 500's in use, so where did this come from? Well, Microsoft quietly delivered a feature called "Fallback Drivers." So instead of trying to download the drivers from the client computer, it says, "Ooooh, you have an HP, let's just use the Deskjet 500 drivers." Well, this doesn't work so well under some circumstances.

Doing some further research, I found the page How Microsoft's Windows 2003 SP1 Fallback Printer Driver Works (which now supports color!), which clearly and concisely explained what is going on, but not necessarily how to fix it. But he pointed me to some new registry keys that could prove useful.

I downloaded and installed HP's Universal Print Driver, then added the following registry key under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd

String value FallbackPclDriver with the value HP Universal Printing PCL 5.

Reboot your server, and it prints AOK from ANY HP printer.

Note added 10-Apr-08 - this driver seems to consume a lot of time before allowing print dialogs and properties to be displayed. I downloaded the x64 version as I'm running a 64-bit server 2003, but during one particularly spectacular crash, I noticed that some 32-bit processes related to the HP Universal Print driver were to blame. This begs the question: "Are the x64 versions really repackaged 32-bit drivers with a wrapper?" That would explain te performance hit and the crash message (shoulda wrote it down - I'll have to check the logs). I'll keep you updated!

3 comments:

Anonymous said...

I can not get this to work. I'm trying to change my terminal servers to use the HP Universal Printing PCL 6 driver.

I've created the FallbackPclDriver REG_SZ key under HKLM\System\CurrentControlSet\Control\TerminalServer\wds\rdpwd with a value of HP Universal Printing PCL 6.

The HP universal printing PCL 6 driver is installed...

Any ideas/tricks/tips/advice?

I've rebooted...

Justin said...

Hmmm, when you installed the drivers, did you put the server into install mode (issue CHANGE USER /INSTALL at the command prompt)?

This is a feature of Service Pack 1 for Windows 2003 server. With SP1, open the group policy editor and go to Computer Configuration | Administrative Templates | Windows Components | Terminal Services | Client/Server data redirection. You'll see a new policy item called "Terminal Server Fallback Printer Driver Behavior."

* Both settings of "Not Configured" or "Enabled" with "Do nothing if one is not found" will result in no client printer being created using the fallback driver.
* "Default to PCL if one is not found" will result in an auto created printer using the PCL driver if the standard driver mapping process cannot find a suitable driver on the Terminal Server or in a mapping file.
* "Default to PS if one is not found" will result in an auto created printer using the Postscript driver is a suitable driver cannot be found.
* "Show both PCL and PS if one is not found" will result in an auto-created printer using the PCL and the PS driver.



Thanks and credit to the author of http://www.brianmadden.com/content/article/Updated-Microsoft-adds-Universal-Printing-to-Terminal-Server for these nuggets of truth!

speed8 said...

Excellent. Congratulation !!! Thanks for the knowledge.