PJL Unsolicited Status Variables allow one to remotely monitor JOB, DEVICE, and PAGE occurrences through a bi-directional connection. For example, when a paper jam occurs, PJL can send a 'PAPER JAM' DEVICE message back to the host. PJL File System commands provide a programmatic interface to LaserJet mass storage devices. Its entirely true that multi-language devices will accept PJL, mostly because they accept PCL. Nevertheless, PJL is not part of the PostScript specification. I did cover the range of possibilities in my answer I felt. – KenS Dec 7 '13 at 20:09. PJLMON.DLL file, also known as PJL Language monitor, is commonly associated with Microsoft® Windows® Operating System. It is an essential component, which ensures that Windows programs operate properly. Thus, if the pjlmon.dll file is missing, it may negatively affect the. PJL Language Monitor Missing from Registry. Hi Having a lot of problems with my canon 610 which works ok on another computer. In the regisry I seem to be missing PJL Language Monitor uner the Monitors. Have BJL Language Monior Local Ports Standard TCP/IP Port USB Monitor.
Many a times after a fail over occurs on a print server, moving the resources to the passive node, a chill runs down the spine when you notice most of the print queues missing.
Today we will discuss a few basic things that you could look into before you decide to call for help.
First things first, do take a backup of the print server using PrintMigrator tool before making any modifications to the server.
First things first, do take a backup of the print server using PrintMigrator tool before making any modifications to the server.
Note: The information below applies to Windows 2003 server clusters only as there are significant differences between the functioning of a Windows 2003 and windows 2000 print cluster”.
The best example of a Language Monitor is PJLMON, which understands HP's Printer Job Language. When a print job starts, the Language Monitor can query the printer with @PJL INFO STATUS, read the response, and take an appropriate action (start printing, display an 'Out of Paper' message, etc.).
Okay, before we begin let us get familiar with some of the file and registry locations where the print cluster stores it configuration information:
Registry locations:
Windows Server 2003 cluster service stores all printer and port information inside the cluster registry: HKLMClusterResources
Each GUID entry below represents a clustered resource.
Each GUID entry below represents a clustered resource.
You can look at the “Type” value of a given resource to identify a Print resource; it should have the value data: “Print Spooler”
Pjl Language Monitor Software
HKLMClusterResources<Resource GUID>Parameters key contains the print spooler configuration information of our interest.
All printer, driver and port information is stored in separate keys under the Parameters key.
From this key onwards the registry structure is mostly the same as that of the local spooler at: HKLMSYSTEMCCSControlPrint
All printer, driver and port information is stored in separate keys under the Parameters key.
From this key onwards the registry structure is mostly the same as that of the local spooler at: HKLMSYSTEMCCSControlPrint
HKLMClusterResources<Resource GUID>Parameters
This key contains all printer specific information, spool directory information and job completion timeout information.
This key contains all printer specific information, spool directory information and job completion timeout information.
HKLMClusterResources<Resource GUID>ParametersEnvironments
This key contains the structure necessary for other Windows based print clients (such as Windows NT 4.0, Windows 2000 and IA64-based Windows Clients).
The list of installed drivers and related information is stored under the subkeys of appropriate print clients.
This key contains the structure necessary for other Windows based print clients (such as Windows NT 4.0, Windows 2000 and IA64-based Windows Clients).
The list of installed drivers and related information is stored under the subkeys of appropriate print clients.
Pjl Language Monitor App
HKLMClusterResources<Resource GUID>ParametersMonitors
This key is where the cluster will store Port monitor information; only supported Port monitors on a cluster are the TCP/IP and LPR standard port monitors.
Information regarding the TCP/IP ports, such as the port address, name and SNMP information, is stored here. All other monitor information (other port monitor + language monitor) is located in the local node key (SYSTEMCCSControlPrintMonitors).
This key is where the cluster will store Port monitor information; only supported Port monitors on a cluster are the TCP/IP and LPR standard port monitors.
Information regarding the TCP/IP ports, such as the port address, name and SNMP information, is stored here. All other monitor information (other port monitor + language monitor) is located in the local node key (SYSTEMCCSControlPrintMonitors).
HKLMClusterResources<Resource GUID>ParametersPrinters
In this key all print queue information is stored. This key lists the Print Processor in use by each print queue.
In this key all print queue information is stored. This key lists the Print Processor in use by each print queue.
File locations:
The clustered print spooler files are stored separately from that of the local spooler.
The start of the tree for file storage is here: C:windowssystem32spooldrivers<GUID>
The start of the tree for file storage is here: C:windowssystem32spooldrivers<GUID>
Beyond this the folder structure is same as that of the local spooler.
The drivers, print processors and color profiles are stored here under appropriate folders:
The drivers, print processors and color profiles are stored here under appropriate folders:
C:windowssystem32spooldrivers<GUID>Drivers
-Contains driver files installed on the clustered print spooler
-This key contains the structure necessary for other Windows based print clients (such as Windows NT 4.0, Windows 2000 and IA64-based Windows Clients).
E.g. For x86 print clients the drivers are stored under C:windowssystem32spooldrivers<GUID>Driversw32x86
-Contains driver files installed on the clustered print spooler
-This key contains the structure necessary for other Windows based print clients (such as Windows NT 4.0, Windows 2000 and IA64-based Windows Clients).
E.g. For x86 print clients the drivers are stored under C:windowssystem32spooldrivers<GUID>Driversw32x86
C:windowssystem32spooldrivers<GUID>DriversPRTPROCS
-This is the store for the 3rd party print processor DLLs used by the clustered printers
-This is the store for the 3rd party print processor DLLs used by the clustered printers
The same information is replicated in the shared disk under the folder named PrinterDrivers
S:PrinterDriversPRTPROCS -> Print Processors
S:PrinterDriversDrivers -> Driver files under the appropriate client folder structure
S:PrinterDriversMonitors -> Monitor DLLs if any
It also contains the Spool folder where the print jobs are spooled.
S:Spool -> Spool folder where print jobs are spooled
S:PrinterDriversPRTPROCS -> Print Processors
S:PrinterDriversDrivers -> Driver files under the appropriate client folder structure
S:PrinterDriversMonitors -> Monitor DLLs if any
It also contains the Spool folder where the print jobs are spooled.
S:Spool -> Spool folder where print jobs are spooled
I guess this is enough theory for the day, now into the practical part of the discussion.
———————————————–********************———————————————–
Let us try to classify the major reasons for missing print queues, major reasons I see are:
Missing Print Processor DLLs
Missing Print Processor Registry Entries
Missing Print Monitor Registry entries
Corrupt/Missing Driver Files
Missing Driver Files
Missing Print Processor Registry Entries
Missing Print Monitor Registry entries
Corrupt/Missing Driver Files
Missing Driver Files
Now we need to see if you are lucky; try to find out the commonality between the missing printers.
Do they belong to the same driver?
Do they use the same print processor?
Do they rely on a specific Print Monitor?
Do they belong to the same driver?
Do they use the same print processor?
Do they rely on a specific Print Monitor?
You can look this up from the working node or if it is down, from the Cluster registry.
Unless luck has run out on you, you will be able to put the failure in one of these groups.
This does mean that at least 90% of the failures are because of the reasons listed above.
Unless luck has run out on you, you will be able to put the failure in one of these groups.
This does mean that at least 90% of the failures are because of the reasons listed above.
Missing Print Processor Registry Entries / Missing Print Processor DLLs
Aah! My favorite
You can look this up from the working node or if it is down, from the Cluster registry.
Go to the following key which will contain the list of all print queues that are installed, to your surprise you should be able to see the print queues that are missing.
HKLMClusterResources<Resource GUID>ParametersPrinters
Once inside the print queue of interest, look for a value named “Print Processor” which will tell you the name of the Print processor in use. You can also find the driver being used by the printer in the “Printer Driver” value data.
Go to the following key which will contain the list of all print queues that are installed, to your surprise you should be able to see the print queues that are missing.
HKLMClusterResources<Resource GUID>ParametersPrinters
Once inside the print queue of interest, look for a value named “Print Processor” which will tell you the name of the Print processor in use. You can also find the driver being used by the printer in the “Printer Driver” value data.
Are other printers that are missing using the same print processor?
If yes, look inside the following key for an x86 based print driver:
HKLMClusterResources< GUID>ParametersEnvironmentsWindows NT x86Print Processors
Is the Printer Processor listed here? If not then we have a missing print processor entry or an invalid print processor for what so ever reason.
HKLMClusterResources< GUID>ParametersEnvironmentsWindows NT x86Print Processors
Is the Printer Processor listed here? If not then we have a missing print processor entry or an invalid print processor for what so ever reason.
First thing you can try is reinstalling the driver or upgrading to a newer version of the driver if available.
You can check if it is a missing registry issue by verifying it with the working node in which case the missing registry entry can be imported or you can set the print queue to use the default print processor – 'Winprint' by setting the “PrintProcessor” value for the queue to ='Winprint'.
If the registry entry is in place, we need to check if it is a missing DLL issue. How do we do that?
Inside the Print processor registry key, you’ll find the print processor “Driver” entry which will point to the Print Processor DLL.
Verify if it is existent under the correct path, which is: C:windowssystem32spooldrivers<GUID>DriversPRTPROCS
If it is missing, copy the DLL from the working node.
Verify if it is existent under the correct path, which is: C:windowssystem32spooldrivers<GUID>DriversPRTPROCS
If it is missing, copy the DLL from the working node.
Setting the print queue to use 'Winprint' as above will also relieve the printer of the dependency on the OEM print processor.
The Silver Bullet:
• Compare the contents of the C:windowssystem32spooldrivers<GUID>DriversPRTPROCS folder on a working cluster node with the failing node. You should have the same number of DLLs in there; else you will probably miss some print queues.
Solution: Copy it over from the working node.
Solution: Copy it over from the working node.
• Compare the following registry key with that of a working node, if anything is missing you will probably miss some of your print queues.
HKLMClusterResources< GUID>ParametersEnvironmentsWindows NT x86Print Processors
Solution: Import the missing print processor registry keys from the working node
HKLMClusterResources< GUID>ParametersEnvironmentsWindows NT x86Print Processors
Solution: Import the missing print processor registry keys from the working node
• Easiest and recommended way is to force all the print queues to use the default Print Processor-WinPrint.
You can either set it from the printer properties or you can use WMIC or the SetPrinter utility,
Use the following command to set all printers to WinPrint on a XP/2003 box:
wmic printer set PrintProcessor = WinPrint
You can either set it from the printer properties or you can use WMIC or the SetPrinter utility,
Use the following command to set all printers to WinPrint on a XP/2003 box:
wmic printer set PrintProcessor = WinPrint
On windows 2000/2003/XP boxes you can also use the setprinter.exe utility to set printers to winprint.
SetPrinter.exe Servername 2 pPrintProcessor='Winprint'
SetPrinter.exe Servername 2 pPrintProcessor='Winprint'
Missing Print Monitor Registry entries
Unlike the Print Processors, Language Monitors are set on a per driver basis rather than on a per print queue basis.
So first find out the driver that the printer is using from the “Driver” value of the affected print queue.
So first find out the driver that the printer is using from the “Driver” value of the affected print queue.
With this information go to the appropriate driver under
HKLMClusterResources< GUID>ParametersEnvironmentsWindows NT x86DriversVersion-3
And note down the monitor listed in the “Monitor” value.
HKLMClusterResources< GUID>ParametersEnvironmentsWindows NT x86DriversVersion-3
And note down the monitor listed in the “Monitor” value.
The default language monitors are PJL Language Monitor and BJ Language Monitor.
If the driver is using some other 3rd party monitor, you can safely modify the data for “Monitor” to NULL or no value (blank).
If the driver is using some other 3rd party monitor, you can safely modify the data for “Monitor” to NULL or no value (blank).
In this scenario you might see printers using different drivers fail to load when they use the same monitor. Again reinstalling or using a newer version of the driver is something that you can always try first.
Missing Driver Files / Corrupt Driver Files
If the missing print queues are using the same printer driver and everything else look fine, there might be something wrong with the driver.
Test by using a Generic driver, you can also try reinstalling the affected driver or try a newer version of the affected driver if available.
Test by using a Generic driver, you can also try reinstalling the affected driver or try a newer version of the affected driver if available.
Compare the size of the GUID folder: C:windowssystem32spooldrivers<GUID> on each node of the print cluster,
The size of the folders should match on all nodes of the cluster after a successful failover. Many a times a small difference is tolerable however huge difference definitely needs to be looked into.
The size of the folders should match on all nodes of the cluster after a successful failover. Many a times a small difference is tolerable however huge difference definitely needs to be looked into.
If the GUID folder on one of the Cluster nodes is corrupt, there are several options, The recommended methods to recover from this state are:
Restore the GUID folder from a Tape Backup.
Remove and re-add the problematic node from the “Possible Owners” list. This cause the Spooler Resource to re-create the drivers on the local node.
Remove and re-add the problematic node from the “Possible Owners” list. This cause the Spooler Resource to re-create the drivers on the local node.
Silver Bullet:
After you have confirmed a driver corruption, rename the existing GUID folder and copy the GUID folder from a working node. Simple aint it!
Quorum Replication and missing print queues:
Sometimes after you add a lot of printers and fail over to the secondary node, not all printers seem to replicate as expected; here is something that you should know:
Printer information is replicated to all nodes in the cluster by means of the cluster registry.
As you already know the cluster registry is located at HKEY_LOCAL_MACHINECluster. It is instantiated in each node in a file called ClusDB under the %systemroot%Cluster directory.
As you already know the cluster registry is located at HKEY_LOCAL_MACHINECluster. It is instantiated in each node in a file called ClusDB under the %systemroot%Cluster directory.
Updates to the cluster registry are replicated from the local ClusDB to a checkpoint file (chkxxx.tmp) and quorum log file (quolog.log) in the MSCS directory on the quorum disk.
If there are a large number of changes to the ClusDB (for example, adding a large number of printers), it is possible that the quorum log may wrap and changes will be lost on failover if its log size is set too small.
![Pjl Language Monitor Pjl Language Monitor](/uploads/1/1/8/1/118166847/145645952.png)
A common outcome is that after failover, printer queues or ports may be lost.
Because clustered print servers store a large amount of information in the cluster registry, it is important that the quorum log change size is larger than the ClusDB. To do this, view the file size of %SystemRoot%ClusterClusDB, and within Cluster Administrator ensure that the Reset Quorum log at value is larger than the ClusDB.
Because clustered print servers store a large amount of information in the cluster registry, it is important that the quorum log change size is larger than the ClusDB. To do this, view the file size of %SystemRoot%ClusterClusDB, and within Cluster Administrator ensure that the Reset Quorum log at value is larger than the ClusDB.
By default, the quorum log change size in Windows Server 2003 is 4096 KB. But if you have a large print server with hundreds of print queues, this is one maintenance task that should be checked periodically.
BEST PRACTICES:
Disable Printer Redirection on the print server to avoid inadvertent driver installation –Whenever an admin logs in from another box, the drivers for the redirected printers are automatically installed,
Exclude the SPOOL folder from AV scanning
Exclude the Quorum from AV scanning
Use only Version-3 user mode drivers
Exclude the SPOOL folder from AV scanning
Exclude the Quorum from AV scanning
Use only Version-3 user mode drivers
Try to use an Inbox user mode driver wherever possible: The preference should be:
Inbox PostScript Driver
Inbox PCL 6 Driver
Inbox PCL 5E/C Driver
VISTA/Longhorn server compatible Driver
OEM Universal driver
OEM mini driver
OEM PostScript, OEM PCL 6, OEM PCL 5E/C, OEM PCL 5
Use a Unidrv based driver wherever possible.
Avoid Version 2 or version 0 drivers, they run in the kernel mode.
Inbox PostScript Driver
Inbox PCL 6 Driver
Inbox PCL 5E/C Driver
VISTA/Longhorn server compatible Driver
OEM Universal driver
OEM mini driver
OEM PostScript, OEM PCL 6, OEM PCL 5E/C, OEM PCL 5
Use a Unidrv based driver wherever possible.
Avoid Version 2 or version 0 drivers, they run in the kernel mode.
Use the WinPrint print processor for your printer as much as possible unless you have specific printing needs like watermark printing etc.
Some printers get some additional functionality from these; however the default print processors and monitors are sufficient for normal printing functionality.
Some printers get some additional functionality from these; however the default print processors and monitors are sufficient for normal printing functionality.
Last but not the least, some of the steps given above may be used as a quick workaround to bring the server back up, however once you identify a driver as the cause of the issue, you should report it to the appropriate vendor. Only if you report the bug will they be able to track and fix it.
I guess this is good amount of information for a day folks! Thanks for taking the time to read through this.
Until next time, Good Bye…..
References:
Creating and Configuring a Highly Available Print Server
http://download.microsoft.com/download/2/a/9/2a9c5a6b-472a-40b0-942f-3ba50240ccd9/ConfiguringAHighlyAvailablePrintServer.doc
Creating and Configuring a Highly Available Print Server
http://download.microsoft.com/download/2/a/9/2a9c5a6b-472a-40b0-942f-3ba50240ccd9/ConfiguringAHighlyAvailablePrintServer.doc
Choosing the Right Printer Drivers
http://www.microsoft.com/downloads/details.aspx?familyid=D8EA9B96-EF8F-4B0D-95D0-073754A2DB31&displaylang=en
http://www.microsoft.com/downloads/details.aspx?familyid=D8EA9B96-EF8F-4B0D-95D0-073754A2DB31&displaylang=en
How to Troubleshoot Printing Issues on a Windows Server 2003 Cluster
http://support.microsoft.com/kb/302539
http://support.microsoft.com/kb/302539
MSCS printer shares may not come online if quorum log is too small
http://support.microsoft.com/kb/257897
http://support.microsoft.com/kb/257897
-Sumesh P