Louis-Philippe Véronneau - printershttps://veronneau.org/2019-09-20T00:00:00-04:00Praise Be CUPS Driverless Printing2019-09-20T00:00:00-04:002019-09-20T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2019-09-20:/praise-be-cups-driverless-printing.html<p>Last Tuesday, I finally got to start updating $work's many desktop computers to
Debian Buster. I use Puppet to manage them remotely, so major upgrades
basically mean reinstalling machines from scratch and running Puppet.</p>
<p>Over the years, the main upgrade hurdle has always been making our very large
and very …</p><p>Last Tuesday, I finally got to start updating $work's many desktop computers to
Debian Buster. I use Puppet to manage them remotely, so major upgrades
basically mean reinstalling machines from scratch and running Puppet.</p>
<p>Over the years, the main upgrade hurdle has always been making our very large
and very complicated printers work on Debian. Unsurprisingly, <a href="/installing-xerox-printers-on-linux.html">the blog
posts</a> <a href="/installing-the-canon-imagerunner-advance-c5550i-on-debian.html">I have written</a> <a href="/xerox-printers-on-debian-an-update.html">on that topic</a> are very popular and get me a
few 'thank you' emails per month.</p>
<p>I'm very happy to say, thanks to <a href="https://wiki.debian.org/CUPSDriverlessPrinting">CUPS Driverless Printing</a> (CUPS
2.2.2+), all those trials and tribulations are finally over. Printing on Buster
<em>just works</em>. Yes yes, even color booklets printed on 11x17 paper folded in 3
stapled in the middle.</p>
<h2>Xerox Altalink C8045 and Canon imageRUNNER ADVANCE C5550i</h2>
<p>Although by default the Xerox Altalink C8045 comes with IPP Everywhere enabled,
I wasn't able to print in color until I enabled AirPrint. I also had to update
the printer to firmware version <code>101.002.008.27400</code><sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup> to make the folding
and stapling features more stable.</p>
<p>As for the Canon imageRUNNER ADVANCE C5550i, it seems it doesn't support IPP
Everywhere. After enabling AirPrint manually, everything worked perfectly.</p>
<p>Both printers now work wonderfully with all our computers, without the need to
resort to strange (and broken) proprietary drivers or aweful 32bit libraries.</p>
<p>Note that if you run a firewall locally, you will need to open port 5353 UDP for
machines to resolve <code>.local</code> addresses via mDNS. This had me bumped for a while.</p>
<h2>Praises</h2>
<p>Packaging CUPS and all the related CUPS bits for Debian isn't an easy task. I'm
so glad I don't have to touch that side of CUPS. Three cheers to Didier Raboud,
Till Kamppeter and to the Debian Printing Team.</p>
<p>Many, many thanks to <a href="https://wiki.debian.org/Brian%20Potkin">Brian Potkin</a> for the work he did to document CUPS
Driverless printing and <a href="https://wiki.debian.org/CUPSAirPrint">AirPrint</a> on the Debian wiki. If we ever
meet, I definitely owe you a pint.</p>
<p>Finally, well, thanks to Apple. (I never thought I'd ever say that)</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:1">
<p>That took me a few hours. Yes. <a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>Xerox printers on Debian - an update2018-02-15T00:00:00-05:002018-02-15T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2018-02-15:/xerox-printers-on-debian-an-update.html<p><em>This blog post is 90% rant and 10% update on how I made our new Xerox Altalink
printer work on Debian. Skip the rant by clicking <a href="#altalink">here</a></em>.</p>
<p>I think the lamest part of my current job is that we heavily rely on
multifunction printers. We need to print a high …</p><p><em>This blog post is 90% rant and 10% update on how I made our new Xerox Altalink
printer work on Debian. Skip the rant by clicking <a href="#altalink">here</a></em>.</p>
<p>I think the lamest part of my current job is that we heavily rely on
multifunction printers. We need to print a high volume of complicated documents
on demand. You know, 1500 copies of a color booklet printed on 11x17 paper
folded in 3 stapled in the middle kind of stuff.</p>
<p>Pardon my French, but printers suck big time. The printer market is an
oligopoly clusterfuck and it seems it keeps getting worse (looking at you,
<a href="https://www.news.xerox.com/news/FUJIFILM-Holdings-and-Xerox-announce-agreement-to-combine-Fuji-Xerox-Joint-Venture-with-Xerox">Fuji-Xerox merger</a>). None of the drivers support Linux properly,
all the printers are big piles of proprietary code and somehow the corporations
selling them keep adding features no one needs.</p>
<p><img src="/media/blog/2018-02-15/nope.gif" title="My reaction when I learnt we needed to replace our current printer" alt="My reaction when I learnt we needed to replace our current printer" height="30%" width="30%" style="float:right"></p>
<p>Good job <strike>Xerox</strike>Fuji Xerox, the new shiny printer you forced us
to rent<sup><a href="#note1">1</a></sup> comes with an app that lets you print directly
from Dropbox. I guess they expect people:</p>
<ul>
<li>not to use a password manager</li>
<li>not to use long randomly generated passwords</li>
<li>not to use 2FA</li>
<li>to use proprietary services like Dropbox</li>
</ul>
<p>Oh wait, I guess that's what people actually do. My bad.</p>
<p>As for fixing their <a href="/installing-xerox-printers-on-linux.html#x-bug">stupid</a> <a href="/installing-xerox-printers-on-linux.html#settings-bug">bugs</a>, try again.</p>
<h2>Xerox Altalink C8045<a name="altalink"></a></h2>
<p>Rant aside, here's a short follow-up on the blog post I wrote two years ago on
<a href="/installing-xerox-printers-on-linux.html">how to install Xerox printers on Debian</a>.</p>
<p>As far as I can see, the Xerox Altalink C8045 seems to be working properly with
the <code>x86_64-5.20.606.3946</code> version of the Xerox driver for Debian. Make sure
that you use the bi-directional setup or else you might have trouble. Sadly, all
the gimmicks I wrote about <a href="/installing-xerox-printers-on-linux.html">two years ago</a> still stand.</p>
<p>If you find that interesting, I also rewrote our <a href="https://gitlab.com/baldurmen/puppet-xerox">Puppet module</a> that
manages all of this for you to be compatible with Puppet 4. Yay?</p>
<hr>
<p style="font-size:95%;"><a name="note1">1</a> - Long story short, we used to
have a Xerox ColorQube printer that used wax instead of toner to print, but
Xerox doesn't support them anymore and bought back our support contract. E-waste
FTW.</p>Installing the Canon imageRUNNER ADVANCE C5550i on Debian2017-03-17T00:00:00-04:002017-03-17T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2017-03-17:/installing-the-canon-imagerunner-advance-c5550i-on-debian.html<p>Printers, eh? I have to say, dealing with /$%?&! printers are the worst part of
my job. We use our printers a lot (more than 300 000 pages printed in the last
2 years) and we have special needs. Our printers need to:</p>
<ul>
<li>support Debian Gnu/Linux well</li>
<li>print full color …</li></ul><p>Printers, eh? I have to say, dealing with /$%?&! printers are the worst part of
my job. We use our printers a lot (more than 300 000 pages printed in the last
2 years) and we have special needs. Our printers need to:</p>
<ul>
<li>support Debian Gnu/Linux well</li>
<li>print full color on up to 11x17 pages</li>
<li>have an automatic scanner feeder</li>
<li>support either webDAV or SFTP scanning</li>
</ul>
<p>We used Xerox printers for years and years with
<a href="/installing-xerox-printers-on-linux.html">relative success</a> but long story short, the customer service
was really bad and we decided to drop them.</p>
<p>Finding another printer model that fulfilled all our needs proved to be quite
hard, but after testing a lot of different machines and talking to way too much
printer saleswoman and salesman, we decided to go with the Canon imageRUNNER
ADVANCE C5550i, a rather new model.</p>
<h1>Some thoughts on the C5550i</h1>
<p>The printer itself is quite nice. Apart from driver issues (more on that below),
the only complaint I have regarding that model is that the UI is not as good as
Xerox's. The WebUI won't let you configure everything on the printer, so you
have to do some configuration on the printer's touch screen UI directly.</p>
<p>The touch screen UI is also not as good as Xerox's. It's more customisable, but
ends up being way harder to configure and is not as simple to use for end-users.</p>
<p>If connecting you printer to a SMTP server is important for you, make sure you
run it on port 465. Our mail provider uses port 587 and sadly I couldn't link
our printer to it.</p>
<p>The STMPS port is in fact hard-coded at 465 in the machine and even though you
can theoretically modify it by going into the low-level configuration mode of
the printer (which I did), I wasn't able to make it work. That feature was not
very important to us anyway, but that whole experience was not nice.</p>
<h1>Drivers!</h1>
<p>Right of the bat, if you are looking for drivers for this printer model you
won't find them on Canon North-America's website. It's hard to understand such
things, but support on Linux seems to be available only in Europe...</p>
<p>Anyway, you can find the drivers <a href="https://www.canon-europe.com/support/products/imagerunner/imagerunner-advance-c5550i.aspx">here</a>. They have DEBs and RPMs
already built but also propose <code>.tar.gz</code> archives if you prefer to go that way.</p>
<p>On their website, Canon proposes two different ways to install drivers for the
C5550i, either through CQue (PS, PCL and PXL drivers) or by using their
UFR II driver package.</p>
<h2>CQue</h2>
<p>It seems Canon outsourced some of it's Linux driver distribution to a Swiss
company called <a href="http://mv-informatique.com/">MV-Informatique</a>. That company
develops a program called CQue that aims to be "a tool to create and manage
printer queues on Linux platforms.". If you ever install CQue and try to run it,
you'll see it's not something you actually want to use.</p>
<p>The GUI is cluttered, a lot of buttons don't seem to work and you can do all the
thing it does through CUPS much more easily.</p>
<p>Installing the CQue package from Canon also installs all the PPDs we want to
use, so if you plan to use either PS or PCL drivers you can get them by
installing the CQue package and then install the printer through CUPS.</p>
<h3>PostScript (PS) drivers</h3>
<p>PostScript is the language most commonly used to interface with printers. As
such, it was my first choice (often PS drivers offer more functionalities and
have less bugs).</p>
<p>Sadly, Canon's PS driver for the C5550i is buggy. At first is seemed to work
quite well, but some large multi-page documents failed to print correctly. For a
reason I could not understand, some PDF were sent to the printers as PS files
sometime as large as 1 GB, even though the original PDF was under 1 MB.</p>
<p>This made the printer freeze on that task and the only way out was to reboot
the machine.</p>
<p>Printing the same PDF either through the WebUI or a USB key worked just fine, so
I'm pretty sure it's a driver issue.</p>
<p>This issue was hard to diagnosticate since I was not able to understand why some
files failed to print where other printed just fine. I ended up giving up on the
PS drivers to try something else.</p>
<h3>Printer Command Language (PCL & PXL) drivers</h3>
<p>Since I couldn't get the PS driver to behave as I wanted, I decided to give the
PCL drivers a go. PCL stands for Printer Command Language and is a HP thing. PXL
is the PLC version 6 iteration and I couldn't see any difference between the
PCL and PXL drivers.</p>
<p>The PCL driver worked very well for everything ... but 11x17 documents. It
simply would not print documents that size, rasterising the document on 8,5x11
instead.</p>
<p>I toyed for a moment with the idea of displaying 2 separate printer queues, one
using the PS driver for 11x17 and another using PCL for everything else, but
it would have been too complicated for our users.</p>
<h2>Ultra Fast Render (UFR II) driver</h2>
<p>After the failures of every driver provided by the CQue package, I decided to
try the UFR II driver provided by that driver package. Inside the <code>.tar.gz</code> UFR
II file provided by Canon, you can actually find DEBs and RPMs.</p>
<p>The Ultra Fast Renderer (UFR) is a proprietary rendering engine that is
functionally similar to PS and PCL. Canon claims it's faster than those two
other solutions.</p>
<p>To get the driver installed, you need to install the <code>cndrvcups-common</code> package
first and then the <code>cndrvcups-ufr2-xx</code> package.</p>
<p>The UFR II driver needs a bunch of 32-bit libraries to work properly. On Debian
Jessie you can run:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>libc6-i386<span class="w"> </span>libxml2:i386<span class="w"> </span>lib32z1<span class="w"> </span>libjpeg62-turbo:i386<span class="w"> </span>libstdc++6:i386
</code></pre></div>
<p>There is also a somewhat outdated Debian wiki <a href="https://wiki.debian.org/PrinterDriver/Canon/UFR-II">entry</a> on how to install
the UFR II driver.</p>
<p>It seems that this driver works fine, but I've had a few instances of 11x17
pages printing on 8,5x11 paper.</p>
<h1>Installing the printer through CUPS</h1>
<p>Once you got the drivers you want installed (I recommend going with the UFR II
since it's the only one that seems to work well enough), the best way to install
your printer queue is going through CUPS.</p>
<h2>CUPS WebUI</h2>
<p>The most simple way to install a printer with CUPS is to use the WebUI. Make
sure CUPS is running and then go to http://localhost:631/admin to access the
admin interface. Adding a printer is as simple as clicking on the "Add printer"
button, selecting your printer's IP address, its model and the right PPD.</p>
<p>You may need to add the user you want to login with to the <code>lpadmin</code> unix group.</p>
<h2>CUPS CLI</h2>
<p>Installing a printer using CUPS's command-line interface is a tad more
complicated but is very useful if you manage computers with a configuration
management system like Puppet.</p>
<p>To add a new printer, run this command:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>lpadmin<span class="w"> </span>-p<span class="w"> </span><span class="nv">$queue_name</span><span class="w"> </span>-E<span class="w"> </span>-v<span class="w"> </span>socket://<span class="nv">$ip</span><span class="w"> </span>-P<span class="w"> </span><span class="nv">$ppd_file</span>
</code></pre></div>
<p>To get the PPD file you want, you can either rummage through the driver files
Canon provides or install a printer through CUPS's WebUI and then snatch the
PPD used in <code>/etc/cups/ppd/</code>.</p>Installing Xerox printers on Linux2016-05-20T00:00:00-04:002016-05-20T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2016-05-20:/installing-xerox-printers-on-linux.html<h2>Introduction</h2>
<p>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.</p>
<p>It's hard mainly because Xerox kinda sucks …</p><h2>Introduction</h2>
<p>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.</p>
<p>It's hard mainly because Xerox kinda sucks and has <em>near zero</em> documentation
for Linux. Step up your game, Xerox.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p><strong>DISCLAIMER(S)</strong></p>
<p>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.</p>
<p>As of version 5.20.558.3113, the Linux driver supports these models only:</p>
<ul>
<li>Xerox WorkCentre 5325</li>
<li>Xerox WorkCentre 5330</li>
<li>Xerox WorkCentre 5335</li>
<li>Xerox Phaser 6600N</li>
<li>Xerox Phaser 6600DN</li>
<li>Xerox WorkCentre 6605N</li>
<li>Xerox WorkCentre 6605DN</li>
<li>Xerox Phaser 7100N</li>
<li>Xerox Phaser 7100DN</li>
<li>Xerox WorkCentre 5845</li>
<li>Xerox WorkCentre 5855</li>
<li>Xerox WorkCentre 5865</li>
<li>Xerox WorkCentre 5875</li>
<li>Xerox WorkCentre 5890</li>
<li>Xerox WorkCentre 7830</li>
<li>Xerox WorkCentre 7835</li>
<li>Xerox WorkCentre 7845</li>
<li>Xerox WorkCentre 7855</li>
<li>Xerox D95 Copier-Printer</li>
<li>Xerox D110 Copier-Printer</li>
<li>Xerox D125 Copier-Printer</li>
<li>Xerox WorkCentre 7220</li>
<li>Xerox WorkCentre 7225</li>
<li>Xerox ColorQube 9301</li>
<li>Xerox ColorQube 9302</li>
<li>Xerox ColorQube 9303</li>
<li>Xerox ColorQube 8700S</li>
<li>Xerox ColorQube 8700X</li>
<li>Xerox ColorQube 8700XF</li>
<li>Xerox ColorQube 8900X</li>
<li>Xerox ColorQube 8900S</li>
<li>Xerox Color 550 XC</li>
<li>Xerox Color 560 XC</li>
<li>Xerox Color 570 XC</li>
<li>Xerox Phaser 3610N</li>
<li>Xerox Phaser 3610DN</li>
<li>Xerox WorkCentre 3615DN</li>
<li>Xerox D136 Copier-Printer</li>
<li>Xerox Office Standard Driver</li>
<li>Xerox Phaser 4622</li>
<li>Xerox WorkCentre 5945</li>
<li>Xerox WorkCentre 5955</li>
<li>Xerox Color C60</li>
<li>Xerox Color C70</li>
<li>Xerox WorkCentre 7970</li>
<li>Xerox WorkCentre 3655S</li>
<li>Xerox WorkCentre 3655X</li>
<li>Xerox WorkCentre 6655</li>
<li>Xerox ColorQube 8580N</li>
<li>Xerox ColorQube 8580DN</li>
<li>Xerox ColorQube 8880DN</li>
<li>Xerox WorkCentre 4265</li>
</ul>
<h2>Installing the driver</h2>
<p>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 <a href="http://www.support.xerox.com/support/enus.html">Xerox support
page</a>. 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.</p>
<p>If your clients are somewhat recent, the "Linux Intel Driver .DEB x86_64" is
what you should download.</p>
<p>To install the package, use <code>dpkg</code> this way:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>dpkg<span class="w"> </span>-i<span class="w"> </span>/path/to/the/.deb
</code></pre></div>
<p>This will install four utilities on you system:</p>
<ul>
<li>xeroxlogmgr</li>
<li>xeroxprint</li>
<li>xeroxprtmgr</li>
<li>xeroxquemgr</li>
</ul>
<p>We'll use only the last two directly. It also create a bunch of files in
<code>/opt/Xerox/prtsys</code>.</p>
<h2>Creating a new printer manually</h2>
<h3>Creating a printer</h3>
<p>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.</p>
<p>Let's open the GUI:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>xeroxprtmgr
</code></pre></div>
<p>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.</p>
<p>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.</p>
<p>BAM! You now have a working printer (\o/), but let us not rejoice too soon as
this is just the beginning.</p>
<p>When installing a new printer Xerox actually creates <em>two</em> printers, a
<strong>Print Queue</strong> that you will use for printing and a <strong>Job Queue</strong> that will be
used as a "backend" for the Print Queue.</p>
<p>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 <em>very</em> important to choose a clear name for your printer or to have
nice little posters around your workplace, or else people <em>will</em> use the wrong
one. Personally, I am a fan of "This is the printer you should click on".</p>
<h3>Configure the printer</h3>
<p>Ok, so now you can print. Try it. You'll see that when printing, a pop-up window
appears<sup><a href="#note1">1</a></sup> 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 :(</p>
<p>To get that face happy again, you'll have to configure the printer. Open up the
GUI again (<code>sudo xeroxprtmgr</code>), select your printer and click on the menu-like
"three-horizontal-bars" button. You'll see two options:</p>
<ul>
<li>Queue Preferences</li>
<li>Queue Settings</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>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!</p>
<p><a name="settings-bug"></a>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:</p>
<p>"The finisher configuration is not stored/saved in XCP. This is per its design."</p>
<p>So yeah, boo Xerox. More on how to fix that in the automated install part
below<sup><a href="#cli">2</a></sup>.</p>
<p>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!</p>
<h2>Creating printers with the command-line<a name="cli"></a></h2>
<p>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 <strong>I</strong> do.</p>
<p>So here comes our second utility: <code>xeroxquemgr</code>. 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.</p>
<p>Here is the final command I run to create a new printer:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>xeroxquemgr<span class="w"> </span><printer_name><span class="w"> </span>-oid<span class="w"> </span><oid><span class="w"> </span>-uri<span class="w"> </span>lpd://<THE_PRINTERS_IP_ADDRESS>/lp<span class="w"> </span>-featuresettings<span class="w"> </span><settings><span class="w"> </span>-uienable<span class="w"> </span>-defaultq
</code></pre></div>
<p>Let's go through it parameter by parameter.</p>
<p>The first parameter you should pass is the name of your printer (<code><printer_name></code>).
This will be the name of the Print Queue.</p>
<p>The second parameter - <code>-oid</code> - is the Object ID of the printer and looks
like this: <code>1.3.6.1.4.1.253.8.62.1.24.4.3</code>. This tells <code>xeroxquemgr</code> what model
of printer you are using. You can find your printer's oid by running:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>xeroxquemgr<span class="w"> </span>-prtsupport
</code></pre></div>
<p>The third parameter - <code>-uri</code> - 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
<code>lpd://192.168.1.123/lp</code>.</p>
<p>Ok, now it gets juicy. Remember that setting file you could not really save since
it would only save part of if <em>by design</em>? 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.</p>
<p>Once this is done, run this command:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>xeroxquemgr<span class="w"> </span><printer_name><span class="w"> </span>-queueprops
</code></pre></div>
<p>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
<code>/opt/Xerox/prtsys/.settings</code>. Yes, <em>all of them</em>. You should rename this file
to something else (what about <code>real_settings</code>?) and push it to all your
clients.</p>
<p>This is the file you will specify when using the <code>-featuresettings</code> parameter.</p>
<p>Last but not least, the <code>-uienable</code> and the <code>-defaultq</code> parameters respectively
enable the user UI and make the printer the default one. It's a good idea
to use them.</p>
<p>Voilà! <code>xeroxprtdrv</code> has no more secrets for you. If you wish, I even wrote a
neat <a href="https://gitlab.com/baldurmen/puppet-xerox">Puppet module</a> to manage all of this.</p>
<h2>Bugs<a name="x-bug"></a></h2>
<p>As nice this driver can be once it's installed correctly, there are still bugs
that Xerox refuses to fix.</p>
<p>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 <code>Display</code> setting and thus always use <code>:0</code>. 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 <code>:0</code>), making it impossible
to print for other users (on <code>:1</code> or other displays).</p>
<p>After contacting Xerox support and bugging them for a few weeks on this, they
basically told me they <em>would not</em> fix it themselves, but they could bill for
it, the IT equivalent of a big "Fuck You".</p>
<p>Thanks Xerox!</p>
<hr>
<p style="font-size:95%;"><a name="note1">1</a> - If this is not the case, you
have forgotten to enable the user interface in the Queue Settings.</p>