Installing Xerox printers on Linux

2016-05-20 - Louis-Philippe Véronneau


Ok, so you want to install the big fat Xerox Workcenter you use at your job on those beautiful Linux clients you maintain. Well, it's doable and works just fine when you know what to do, but getting it right is hard.

It's hard mainly because Xerox kinda sucks and has near zero documentation for Linux. Step up your game, Xerox.

Lucky for you and me, my employer pays for Xerox tech support and I was lucky enough to fall on someone nice enough to answer to my numerous emails (hi Brian!) and forward the ones he couldn't answer to the engineering team.

You mainly have two options: either you fiddle with CUPS directly, providing it the IP address of the machine & some Windows PPDs, or you use the Xerox driver package.

CUPS may seem like a viable option, but sadly if your printer does neat things like folding, punching holes and stapling, you will need the Xerox driver to use these functionalities.


I am using Debian GNU/Linux. This post will surely help you if you are on another distribution (the driver is also packaged as a RPM), but I will not take you by the hand.

As of version 5.20.558.3113, the Linux driver supports these models only:

  • Xerox WorkCentre 5325
  • Xerox WorkCentre 5330
  • Xerox WorkCentre 5335
  • Xerox Phaser 6600N
  • Xerox Phaser 6600DN
  • Xerox WorkCentre 6605N
  • Xerox WorkCentre 6605DN
  • Xerox Phaser 7100N
  • Xerox Phaser 7100DN
  • Xerox WorkCentre 5845
  • Xerox WorkCentre 5855
  • Xerox WorkCentre 5865
  • Xerox WorkCentre 5875
  • Xerox WorkCentre 5890
  • Xerox WorkCentre 7830
  • Xerox WorkCentre 7835
  • Xerox WorkCentre 7845
  • Xerox WorkCentre 7855
  • Xerox D95 Copier-Printer
  • Xerox D110 Copier-Printer
  • Xerox D125 Copier-Printer
  • Xerox WorkCentre 7220
  • Xerox WorkCentre 7225
  • Xerox ColorQube 9301
  • Xerox ColorQube 9302
  • Xerox ColorQube 9303
  • Xerox ColorQube 8700S
  • Xerox ColorQube 8700X
  • Xerox ColorQube 8700XF
  • Xerox ColorQube 8900X
  • Xerox ColorQube 8900S
  • Xerox Color 550 XC
  • Xerox Color 560 XC
  • Xerox Color 570 XC
  • Xerox Phaser 3610N
  • Xerox Phaser 3610DN
  • Xerox WorkCentre 3615DN
  • Xerox D136 Copier-Printer
  • Xerox Office Standard Driver
  • Xerox Phaser 4622
  • Xerox WorkCentre 5945
  • Xerox WorkCentre 5955
  • Xerox Color C60
  • Xerox Color C70
  • Xerox WorkCentre 7970
  • Xerox WorkCentre 3655S
  • Xerox WorkCentre 3655X
  • Xerox WorkCentre 6655
  • Xerox ColorQube 8580N
  • Xerox ColorQube 8580DN
  • Xerox ColorQube 8880DN
  • Xerox WorkCentre 4265

Installing the driver

First thing first, you need to download the driver. Xerox's website has gotten better and you should be able to find it pretty easily on the Xerox support page. Once you found your model, click "Drivers & Downloads" and choose "Linux" in the OS dropdown menu. Tadaaa! you'll get a page full of drivers.

If your clients are somewhat recent, the "Linux Intel Driver .DEB x86_64" is what you should download.

To install the package, use dpkg this way:

$ dpkg -i /path/to/the/.deb

This will install four utilities on you system:

  • xeroxlogmgr
  • xeroxprint
  • xeroxprtmgr
  • xeroxquemgr

We'll use only the last two directly. It also create a bunch of files in /opt/Xerox/prtsys.

Creating a new printer manually

Creating a printer

Before using the heavy guns and directly using CLI commands, it's good to test everything at least once and familiarise yourself with the cute GUI provided by Xerox to create new printers.

Let's open the GUI:

$ sudo xeroxprtmgr

The interface is pretty intuitive. To add a new printer, click on the "double arrow pointing downwards" button. It will pop up a new window.

Hopefully, your printer is automatically recognised and is listed below. If not, you can add it by clicking on the menu-like "three-horizontal-bars" button and then choosing "Manual installation". Yet another window will pop up and you will be able to specify the printer's model and IP address, as well as the name it show up as.

BAM! You now have a working printer (\o/), but let us not rejoice too soon as this is just the beginning.

When installing a new printer Xerox actually creates two printers, a Print Queue that you will use for printing and a Job Queue that will be used as a "backend" for the Print Queue.

Both printers will be seen by the user, the Print Queue with the name you chose when you installed the printer and the Job Queue with the name _xeroxtq[0-9]_. It is thus very important to choose a clear name for your printer or to have nice little posters around your workplace, or else people will use the wrong one. Personally, I am a fan of "This is the printer you should click on".

Configure the printer

Ok, so now you can print. Try it. You'll see that when printing, a pop-up window appears1 and lets you select your printing options. That's great, but if you pay attention, you won't see the stapling/punching/folding options you crave so much. Sad face :(

To get that face happy again, you'll have to configure the printer. Open up the GUI again (sudo xeroxprtmgr), select your printer and click on the menu-like "three-horizontal-bars" button. You'll see two options:

  • Queue Preferences
  • Queue Settings

You already played with the "Queue Settings" when you created the printer and there are only one option you can modify there: "Disable User Interface". Selecting this ... disables the User Interface pop-up. You don't want this.

The other option is "Queue Preferences" and all the shiny options lie there. This window looks exactly like the window that pops up when you print something and there is a reason for that. All the modifications made in that windows will be the default ones.

You can choose whatever parameter you like, but let us focus on some neat things that are not obvious at first glance. There are some pretty good chances that you will not see the stapling/punching/folding options yet. To enable them, go in the "Configurations" tab. You can the click on the "Installable Options" button and play with all the different options you wish to enable, or click on "Bi-Directional Setup", input the IP of the printer and select "On" to have it done for you. You should now see the stapling/punching/folding options. Yay!

If you are a smarty pants, you've certainly seen the big "Load" and "Save" buttons on the bottom of the window. They don't really work though. Only part of the config is actually saved, and that part does not include the stapling/punching/folding options. Let me save you the trouble of filling out a bug report with Xerox support and give you their answer:

"The finisher configuration is not stored/saved in XCP. This is per its design."

So yeah, boo Xerox. More on how to fix that in the automated install part below2.

So there it is. You have manually installed & configured your printer. It's not perfect, but meh, it works fine enough. If you have a very small number of clients you can go around and repeat theses steps. If you have a lot of clients or wish to have an automated structure, read on!

Creating printers with the command-line

GUIs are nice, but it's not convenient for sysadmins. I know you. You want to install that printer of the 2K linux clients you manage with you automated configuration manager (be it Puppet, Ansible or even you very own shell scripts). Anyway, I know I do.

So here comes our second utility: xeroxquemgr. With it, you can create queues with the command-line interface. Its usage is pretty straightforward, but the man page can be somewhat unclear on a few things.

Here is the final command I run to create a new printer:

$ xeroxquemgr <printer_name> -oid <oid> -uri lpd://<THE_PRINTERS_IP_ADDRESS>/lp -featuresettings <settings> -uienable -defaultq

Let's go through it parameter by parameter.

The first parameter you should pass is the name of your printer (<printer_name>). This will be the name of the Print Queue.

The second parameter - -oid - is the Object ID of the printer and looks like this: This tells xeroxquemgr what model of printer you are using. You can find your printer's oid by running:

$ xeroxquemgr -prtsupport

The third parameter - -uri - is the Uniform Resource Identifier of your printer. Basically, it tells the driver to use the LPD protocol at a certain IP address to reach your printer. For example, my URI is lpd://

Ok, now it gets juicy. Remember that setting file you could not really save since it would only save part of if by design? Well we can somehow circumvent that. First of all, you need to create a printer with the GUI and configure it as much as you want to. We will use this printer as a model.

Once this is done, run this command:

$ xeroxquemgr <printer_name> -queueprops

This will output a few infos on you printer, such as you URI or the Job Queue. Most importantly, it also tells you your settings have been saved in /opt/Xerox/prtsys/.settings. Yes, all of them. You should rename this file to something else (what about real_settings?) and push it to all your clients.

This is the file you will specify when using the -featuresettings parameter.

Last but not least, the -uienable and the -defaultq parameters respectively enable the user UI and make the printer the default one. It's a good idea to use them.

Voilà! xeroxprtdrv has no more secrets for you. If you wish, I even wrote a neat Puppet module to manage all of this.


As nice this driver can be once it's installed correctly, there are still bugs that Xerox refuses to fix.

The most annoying bug is if you use a desktop manager like GNOME3 or KDE and have the multi-user support enabled. When opening the pop-up menu, the driver does not set the Display setting and thus always use :0. This means when more than one user are logged in simultaneously, the driver pop-up menu will show only in the first logged-in user's session (on :0), making it impossible to print for other users (on :1 or other displays).

After contacting Xerox support and bugging them for a few weeks on this, they basically told me they would not fix it themselves, but they could bill for it, the IT equivalent of a big "Fuck You".

Thanks Xerox!

1 - If this is not the case, you have forgotten to enable the user interface in the Queue Settings.