Blog / News

Monthly Archives: December 2015

Weatherproofing your print server

While I was a member of the Windows print spooler test team at Microsoft, one of my side tasks was to support Microsoft IT with their deployment of prerelease operating systems that hosted the print infrastructure at the main campus in Redmond. I provided support for IT when it came to printing at Microsoft and during this time, learned many lessons.

Many of the guidelines I learned should help you to make your infrastructure reliable and simplify the print experience for the end users printing through your environment. The following information is primarily intended for Windows print server administrators.


Setting up the machine to be the print server

Before adding printers to a server, you should:

  • Disable printer redirection on any dedicated print server. This will cause a failure in the spooler service when print drivers not written for enterprise environments get installed due to printer redirection.  Follow the guidance from Microsoft below regarding this configuration on the machine.
  • Move the spool directory so it is not under Windows. If you have another physical or virtual disk on the system, move spool files to this location so large spool files do not reside on the same disk as the operating system’s page file. For more information, see
  • Enable print driver isolation in shared mode for all Type 3 print drivers.
  • Add the Print and Document Services role. Adding this role sets up the remote endpoint for sharing printers and adds the tools you will use to administer the printers on the machine.

If you do not want to add the Print and Document Services role, you should at least install print management tools. The following command run in an elevated command window installs PrintManagement and PrintBrm printer migration utility:

Dism /online /enable-feature /featurename:Printing-AdminTools-Collection


Printer setup

Proceeding through the Add Network Printer Wizard, you should take the following into consideration:

  • Using WSD ports in enterprise scenarios can be problematic. In a DHCP environment, I have found that it is harder to determine the root cause of issues due to the limited methods to determine the actual IP of the device.

In the Add Network Printer Wizard, select the “Add a TCP/IP or Web Services Printer by IP address or hostname”, then “TCP/IP Device”


  • I like Windows Update for print drivers. There are specific test requirements to have drivers posted to Windows Update that are not required for drivers from the print vendor site. I am sure vendors test their print drivers more thoroughly when they are released to any external source.
  • Avoid setup.exe installers. These setup programs sometimes install other components that are not needed on a machine hosting an organization’s print infrastructure. If you have a relationship with a hardware vendor, ask for an INF based installer.
  • Sometimes the vendor provides only a setup.exe or some other self-extracting executable. Typically, setup installers unpack the files to the user’s %temp% path.  I generally copy these files to a network share, which I use for installing the driver using Have Disk in the Add Printer Driver Wizard or the Add Network Printer Wizard.
  • Simplify your printer naming convention. Try to plan this in accordance with what makes sense for your organization. I avoid printer names with spaces, but I understand the need for this in many configurations. Attempt to keep the share names as one word, particularly in organizations with operating systems other than Windows.
  • After you have set up your printers, disable language monitor software. Language monitors are loaded by the print spooler service. Any failures in this software can cause a failure in the print spooler service, which will affect all printing on the machine. In most cases, you can disable language monitors by clearing the Enable bidirectional support check box on the Printer Properties, Port tab.


Maintaining a healthy print server

After you have set up your print server and given it life, as time rolls on and changes occur in your environment, you will need to periodically make sure it stays healthy. Some of the tips I have learned are:

  • Limit the number of print drivers. Clean up any unused print driver packages. Deleting the print driver removes the driver from the print spooler. Removing the print driver package also removes the driver from Windows DriverStore directory. Be careful not to inadvertently remove 32-bit drivers.
  • Delete unused ports as the spooler service will perform an SNMP query to the IP for device status. When the IP no longer points to a device, the spooler retains the port in the list and will query the device, then timeout before continuing to the next port.
  • Test the print drivers with the applications used in your organization. If you uncover problematic documents, keep these if the content is acceptable, so they can be used to test the next print driver version or operating system.
  • When deploying 64 bit and 32 bit print drivers, use the same driver versions (for example, PCL 6 version 4.2.3  for both drivers).
  • Client load can be a limiting scalability factor for a print server.

Thanks for taking the time to review my brief wordings on Print Management.  Some of these suggestions may already be utilized in your environment and I hope the information presented is clear.  My goal is to help you configure a durable Windows print infrastructure.  Establishing a solid print foundation prior to installing PaperCut is always a best approach.

Posted in General, PaperCut Tips | Tagged , | 4 Comments

Posted on by jason

Diagnosing a slow print

It was a dark and stormy night when the phone rang.

Ok, maybe not, but Melbourne, Australia isn’t known for it’s great weather!

The phone did ring and I did pick it up. It was Frank* from one of our educational customers who was looking for support. He was able to quickly summarise that the issue was “The print popup is very slow to show on one teachers laptop.”

My first thought is that slowness is a subjective thing and there are many places in the print process that can contribute to things being slow.

The process includes, but is not limited to:

  1. The user selects File -> Print or presses Ctrl+P
    1. In some environments, the status of the printer can impact on how quickly the dialogue box shows. If it’s offline, that may cause issues. If there is a corrupted driver, that might slow things. If the print server is under load, that might slow things down.
  2. The user then selects their printer
    1. Again, this can be slow depending on the printer status, server status, latency etc.
  3. Assuming that there are no further changes, the user clicks Print or OK
  4. The program then does its own work to render the print job into something the printer can understand.
    1. This can include rendering complex documents with many layers into a simple graphic for the printer. Imagine a PDF with 700 layers on a single page, that needs to be down-converts into something simple.
    2. This process is reliant on the speed of the users machine. Laptops might have power saving features on. Maybe the machine is low on free memory?
  5. Once the job is sent off to the local print spooler.
    1. The print job may need to be re-rendered again into a print language that is understood by the printer. In some situations this is done on the users workstation, it might be done on the server. This can often be an intensive process.
  6. The users machine then transmits job to either the printer or the print server.
    1. The speed at which this happens is generally limited to the network speed. Is the user connected wirelessly? How congested is the wireless access point? What about the LAN, is it 100mbit, 1gbit, 10gbit? Are we transmitting over a VPN? A Wide-Area-Network?
    2. How big is the spool file? The same 10 page print job with one driver might be 200KB, another driver might generate a 10MB spool file.
    3. How fast are the hard drives involved? 5400 rpm hard drive in a laptop?
  7. The server then handles the spool file and makes any final changes
    1. This may include re-rendering it into the print language the printer understands
  8. The spool file is then sent off to the printer
    1. The same limitations from step 6 apply here, including the speed of the network card on the printer as well as it’s hard drive.
  9. With the spool file now on the printer, the printer turns it into dots on a page
    1. Again, this may require re-rendering into something that the printer can use to put dots on a page, CPU and hard drive speed play a role here.
  10. At this point, even if only 1 or two pages have rendered, the printer will be getting itself mechanically ready to print.
    1. If the printer was sleeping, this includes warming up the fuser
    2. Some printers will do various checks to ensure that the paper path is clear, output bins are ready
  11. Depending on how quick the printer is, the first page out of the printer might be a few seconds or might be longer.
    1. If the printer doesn’t have much memory, the rendering from spool file into dots-on-page might be a slow process as it has to swap out to disk or even wait for the first page to complete before it starts rendering the second
  12. At this point the printer will be working its quickest to get the print job done
    1. Print job complexity here will play a role again. Is it duplex? Is it colour? Is it high quality? What about draft quality? Do you need to staple, hole punch, booklet mode? All of these features will have an impact on the advertised speed of the printer.
  13. If there is a second print job to be done, the print server may be sending that to the printer at this point, however the printer needs to have sufficient resources to deal with it at that time. It might be low on memory, hard drive space etc.

Then you can add PaperCut into the mix. We have a very simple approach to this process in that the PaperCut Print Provider interfaces with the Windows Print Spooler (or CUPS and iPrint) and we use the Print Spoolers APIs to manage the jobs.

We will monitor the system for any new print jobs and as soon as we know about them we take action. This action will often happen well before the print job has finished transmitting to the print server. This allows us to present a user with the Account Selection Popup  as soon as possible, usually within a second or two of the user printing. Once the print job has finished spooling, we’ll update the popup with new details .

Frank’s situation was that the user was reporting that the popup was showing up quickly but the complete job details wasn’t filling out quickly. I asked him to compare the description of what he was seeing with one of our KB articles. It matched.

I asked Frank if he had the teachers laptop and if we could try reproducing it and the good news was the he did and was happy to work through this over the phone.

Frank new the document that was a problem, knew the printer queue on the server that was being printed to and knew where that printer was.

We proceeded to open the same document and print it to the same queue.

Frank coughed. “That.. that was fine, that was really quick.”

Could it be something that was cached? A reboot and test again resulted in the same quick process.

Maybe it was the wireless? Frank unplugged the laptop from the ethernet and the results didn’t change.

At this point Frank was happy to go back to the teacher and get them to reproduce it in front of him.

I was happy to go make a coffee before my next ticket!

About an hour later I get a message from one of my team. Frank was on the phone call and he needed my help again. He could reproduce it now. The call was transferred to me.

“Hi Frank, it’s Jason again, where are you at?”

“Well. I’m sitting at the teachers desk, plugged into the ethernet cable we give them and well, it’s slowed down!”

“Ok, this is strange.” I say. “I think this is a bandwidth issue between the laptop and the print server. Are you familiar with ‘iperf’?”

“To be honest Jason” says Frank “No I’m not.”

“Not a problem, it’s a fairly simple bandwidth measurement tool. It should show us how fast the network is between the laptop and the server.”

We won’t bore you with downloading the Windows version of iperf tool in this blog but we quickly found that the bandwidth between the laptop and the print server was measured in kilobits per second. As in 250kbit/s.

“That’s not right!”

Frank sent me a copy/paste of the output:

C:\Temp\>iperf -c print-01


Client connecting to print-01, TCP port 5001

TCP window size: 63.0 KByte (default)


[  3] local port 56217 connected with port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec   306 KBytes   257 Kbits/sec

“Frank, that sounds like a really bad WiFi signal.”

“It does, but I’m plugged in.. Wait.. The IP address there is a Wireless address! Let me check something.”

A couple of moments later Frank comes back to me. “Ahh! It is using Wireless! The Adapter Connection order had the Wireless first. So Windows was preferencing that. I changed it and now I get great speeds.”

Frank send me another copy/paste.

C:\Temp\>iperf -c print-01


Client connecting to print-01, TCP port 5001

TCP window size: 63.0 KByte (default)


[  3] local port 56217 connected with port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec   840 MBytes   704 Mbits/sec

I said to Frank “Hey, that’s awesome. I assume the printing is much better?”

“Let me check…” A couple of clicks later and it was confirmed. The Popup is quick, the details are shown in the popup nice and quickly.

“Jason, thanks very much for that. We’ve got that sorted out!”

“Hang on, one last thing, 250Kbit really isn’t great. Is that to be expected?”

“No, mine’s fine here.” Frank states matter-of-factly.

“Yours is fine?” I ask?

“Yeah, my laptop is on the teachers desk, I just ran iperf and the wireless is running acceptably at 26Mbit.”

“Humour me on this. Can you move the teachers laptop to the other side of the desk?”

“Uh, sure. HEY! That’s worked! How did you know?”

“My background is in education, I’ve worked in schools as a Systems Administrator for several years. Wireless is a great technology, but sometimes it has issues. Something as simple as location in a room can cause interference or just plain old dead spots. I’ve dealt with this one before.”

“That explains a few things! Thanks for your help. I’ll let you go.”

“Not a problem. I have a coffee calling my name.”

Long story short, PaperCut believes that our support team needs to be able to assist not only with the PaperCut product but the environment that its in. Our support team has the real world experience to make printing less of the migraine inducing pain point that we all know it can be.


Posted in General, PaperCut Tips | Tagged | Leave a comment

How to: Release Manager Roles

Many customers use PaperCut for the secure release of print jobs using release stations or Find-Me printing.

Some organizations need authorized staff to release print jobs on behalf of other print users. Think Teachers for Students, Clerks for Lawyers, Librarians for Patrons.

For as long as PaperCut has been around, we’ve had the ability for users to be able to control the release of print jobs from a Release Station. Typically these were old PCs that were one step away from being left on the sidewalk; rebirthed into a station, left next to a printer that would only run the PaperCut Release Station software.

Papers-Top-View on Printer

Over time though, the need for a ‘higher level’ of authorized release became apparent. Librarians were asking for a way to be able to control the release of jobs currently on hold without needing to move from behind their desk. Teachers were looking for ways to be able to control the release of Student print jobs on hold, and possibly pay for it themselves if it was a reprint for any reason. Print room operators were requesting a way to release jobs using an application that didn’t consume the whole machine in the way the traditional release does.

So, we added the Release Station Manager concept, which allowed a chosen set of users to release jobs from the web interface of PaperCut. This feature allowed these Managers to control the release of print jobs from any machine, using a browser that doesn’t require local software installed or take over the machine to act as a release station.

Over the years, we have received a number of requests for us to make a change to this solution that does makes a lot of sense. The Release Manager interface didn’t restrict what jobs a user was able to release;

  • A Staff member that was a Release Manager would be able to release the jobs of a Student, but also the jobs of the Principal, not great for sensitive information.
  • The Librarian was able to release the print jobs on hold in the Library, but also jobs that were on hold for printers in labs they’re not concerned with.

PaperCut v15.3 improved on this, allowing a Release Manager to have their view of releasable jobs constrained to a group of users, or a group of printers. This gives an administrator of the PaperCut system complete flexibility and control over which Release Managers are able to control the release of what jobs. Adding an extra layer of security for Release Manager Roles.

Release Manager Roles

The Release Manager web interface with two different Release Manager Roles

Some of our examples are Education based, however the requests we’ve had over the years haven’t been uniquely from this sector. This feature has been well loved by all industries including legal; so we’re keen to hear some examples of how this change has helped you. Let us know in the comments below.

Posted in General, PaperCut Tips | Tagged | 1 Comment

Blog Categories & Archives