HP Printers and Terminal Server

This is an issue that is annoying TS administrators across the land. Since MS and HP can't ever seem to get along it is no wonder why we have to deal with such frustrations. I am still amazed at this phenomenom that HP continues to get away with distributing drivers that have so many bugs or just plain do not work. MS continually blames HP's third party drivers for its woes. Unfortunately....HP has one of the most popular and "workhorse" type of printers out there, more unfortunate is the current drivers offered with Terminal Server for HP Printers literally CRASH the server spooler causing a blue screen.

After a month of messing around with this issue I have determined what currently as of (9/3/99> are the best possible settings and setup for the use of just about any HP printer.

For your perusal below there are three articles from the MS KB documenting the woes of owning an HP printer and trying to run it on Terminal Server. The one key suggestion is to use the printer drivers from the HP Laserjet 4 that are supplied on the Windows Terminal Server disk. MS indicates that HP is currently writing drivers for TS but it will most likely be a year and a day before it ever happens.

So my reccomendation is no matter what HP printer you have, you should install the driver for the HP laserjet 4 from the TS distribution disk for it ON THE TERMINAL SERVER. (let the client keep their driver information in other words) Next you have to set up a file on Terminal server that tells TS to use the hp4 driver for the clients connected printer. The name of this file is WTSUPRN.INF and you must create it from WTSUPRN.TXT as described in the below KB article. If you are using winterminals/dumb terminals you will have to set up the printer on the TS as an HPLJ4 despite what you have connected to it. You will also have to make sure that these printers have the correct security settings (ie the everyone group is removed)and to set them up to spool and begin printing immediately under scheduling.

The next step is to set the HP printers to all think they are Laserjet 4's. (At least until we have some stable CORRECT drivers from HP for Terminal Server). Again you do this through the WTSUPRN.INF file which resides in the WTSRV\System32 folder.

The important thing to remember when you are editing this file is that you have to have the EXACT name of the printer driver you installed on the WS and also the exact name of what you called your HP Laserjet 4 printer when you set it up. You may have to look at your local WS printer.inf file to find this.

The line to type in the WTSUPRN.INF file is fairly simple. For example if I had a Laserjet 5L on my workstation and I wanted TS to use the 4 driver for it I would type:

"HP LaserJet 5L" = "HP LaserJet 4"

This is usually the way that the printer name comes up but I have also seen it come up using Hewlett Packard in the name instead of the abbreviation HP. DO NOT JUST PUT RANDOM NAMES IN THIS FILE! Only put names of printers you KNOW that you have or TS will crash looking for a driver that is not installed. I hope this piece of information helps you solve some of your headaches!

FROM: http://support.microsoft.com/support/kb/articles/Q191/6/66.ASP
Terminal Server responds with the following blue screen STOP error:
STOP 0x00000050 Page_Fault_in_Non-Paged_Area
when you print numerous print jobs to a Hewlett Packard LaserJet 5 P/MP, 6P/MP, or 2000C printer using a Hewlett Packard driver.
CAUSE
There are compatibility issues with the current printer driver and Terminal Server.

Windows Terminal Server with Metaframe ICA Client Cannot Autocreate Some Printers

FROM: http://support.microsoft.com/support/kb/articles/Q214/5/93.ASP
The information in this article applies to:
Microsoft Windows NT Server version 4.0, Terminal Server Edition

Symptoms

After you connect a locally attached printer and load the printer drivers to the local workstation that has a Citrix Metaframe ICA client, you log on to the Terminal Server computer. The printer is supposed to be autocreated and available to you in the Printers folder of your Terminal Server session. The printer does not appear in the Printers folder.

Cause

If the printer driver name on the local workstation does not match the printer driver name on the Windows NT Terminal Server computer exactly, the printer will not autocreate. This occurs with Windows 95, Windows 98 and any other operating system or platform where the printer driver name on the client station does not match the printer driver name on the Terminal Server computer. If you are adding a new printer that is not native to Terminal Server, and the client and server print driver names are different, this problem will also occur.

Resolution

There is a file on the Terminal Server computer that can be modified to make the disparate printer driver names appear to be the same and the autocreate function will work.

To make this modification, follow these steps:

  1. On the client workstation in local mode, not a Terminal Server session, click Start, click settings, and then click printers. Select the printer that did not autocreate and right-click it. Click Properties and then click the Details tab.
  2. Write down the name that appears in the Print Using the Following Driver box. This box contains the print driver name. For example, HP DeskJet 1600C ColorSmart.
  3. On the Terminal Server computer, click Start, click Settings, and then click Printers.
  4. Double-click Add Printer, click to select the My Computer radio button, and then click Next. In the Available Ports box, click to select the LPT1 check box, and then click Next.
  5. In the left pane, select the manufacturer of the printer you have installed on your workstation. In the right hand pane, scroll to the model of the printer you have installed on the workstation. For example, HP DeskJet 1600C. This is the server printer driver name for that printer. Write this name down.

    As you can probably see, the workstation printer driver name and the printer driver name on the Terminal Server computer are different. The server driver does not have "ColorSmart" added to it.

  6. In the %systemroot%\system32 folder, open the Wtsuprn.txt file. The file is as follows:

     ==========================================================================
     ; WTSUPRN.TXT 
     ;
     ; this is a template for wtsuprn.inf -- rename this file to wtsuprn.inf
     ;
     ; this file provides a mapping for client printers which have a name
     ; different from the server printer.  this file is necessary since many
     ; printers for Win95 are different from their WinNT equivalent.
     ;
     ; Note: the driver for the server printer must be installed.  See the
     ; WinFrame Concepts and Planning Guide.
     ;
     [Identification]
             OptionType = PRINTER
     [ClientPrinters]
     ;
     ;     Client Name                                  Server Name
     ;          |                                            |
     ;          |                                            |
     ;         \|/                                          \|/ 
     ;"HP LaserJet 4/4M"                          = "HP LaserJet 4"
     ;"HP LaserJet 4P/4MP"                        = "HP LaserJet 4P"
     ;"HP LaserJet 4 Plus/4M Plus"                = "HP LaserJet 4 Plus"
     ;"HP LaserJet 4Si/4Si MX"                    = "HP LaserJet 4Si"
     ;"HP LaserJet 4V/4MV"                        = "HP LaserJet 4V"
     ;"HP LaserJet 5/5M - Enhanced"               = "HP LaserJet 5"
     ;"HP LaserJet 5/5M - Standard"               = "HP LaserJet 5"
     ;"HP LaserJet 5/5M PostScript"               = "HP LaserJet 5"
     ;"HP LaserJet 5L (PCL)"                      = "HP LaserJet 5L"
     ;"HP LaserJet 5P/5MP (HP)"                   = "HP LaserJet 5P"
     ==========================================================================
    		
  7. Using this exact format, enter the previous information that you gathered from the workstation and the server.

    Note: Leave out the semicolon; this is used to remark the line out. Make sure you type the right driver under the proper colum. Client name would be the workstation; server name is the Terminal Server computer.

    For example:

    "HP DeskJet 1600C ColorSmart"                = "HP DeskJet 1600C"
    		
  8. After making the change, save this file with a .inf extension and then close the Wtsuprn.txt file.

    Note: From now on, if you have to add any other printers, add them to the Wtsuprn.inf file.

  9. Log off of the Terminal Server computer and log back on. Log your client workstation on to a Terminal Server session and you should now see your printer autocreated in the Terminal Server session printers folder, and you will be able to print to your local printer.

Installing a New, Non-Native Print Driver

http://support.microsoft.com/support/kb/articles/Q195/8/55.ASP
When you need to install a new print driver to your workstation, you will also have to install a print driver to the Terminal Server computer. Install the printer on the server as a local printer. Upon completion of the printer installation, delete the printer icon from the printer folder. The printer driver will be installed on the server and, when you connect the workstation to the Terminal Server computer, the new printer will be autocreated. If the print driver names are different between the workstation (client) and the server, follow the same procedure as above to make them the same.
Application Exception in Spoolss When Printing

Symptoms

When you use the Citrix ICA client and are connected to a server configured using the Metaframe add-on to Microsoft Terminal Server, you may receive a Dr. Watson error in Spoolss if using the HP LaserJet 4000 printer.

Application exception occurred:
App: exe\spoolss.dbg (pid=74)
When: 9/14/1998 @ 14:28:14.841
Exception number: c0000005 (access violation)

Cause

This issue may be caused because you may have a mismatched version of the Hpdcmon.dll file, or the Hpdcmon.dll file may be corrupted, or it may be unnecessary for proper operation.

Resolution

Remove the dynamic link library file named Hpdcmon.dll from %SystemRoot%\System32 folder. If it is not found in this folder, perform a search of your %SystemRoot% folder including subfolders, and remove it from any folder in which it is found.

More information

Hpdcmon.dll is a port status monitor that queries the parallel port for incoming information. Not all versions of Hewlett Packard's printer drivers require this library file. Check with Hewlett Packard for more information on using this file with the printer driver being used.

The third-party products discussed here are manufactured by vendors independent of Microsoft; we make no warranty, implied or otherwise, regarding these products' performance or reliability.


Receive all the latest articles by email!

Receive Real-Time & Monthly VirtualizationAdmin.com article updates in your mailbox. Enter your email below!
Click for Real-Time sample & Monthly sample

Become a VirtualizationAdmin.com member!

Discuss all your Virtualization issues with other experts. Click here to join!

Readers' Choice

Which is your preferred Backup and Recovery solution?

Follow TechGenix on Twitter