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:
- support Debian Gnu/Linux well
- print full color on up to 11x17 pages
- have an automatic scanner feeder
- support either webDAV or SFTP scanning
We used Xerox printers for years and years with relative success but long story short, the customer service was really bad and we decided to drop them.
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.
Some thoughts on the C5550i
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.
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.
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.
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.
Drivers!
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...
Anyway, you can find the drivers here. They have DEBs and RPMs
already built but also propose .tar.gz
archives if you prefer to go that way.
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.
CQue
It seems Canon outsourced some of it's Linux driver distribution to a Swiss company called MV-Informatique. 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.
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.
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.
PostScript (PS) drivers
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).
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.
This made the printer freeze on that task and the only way out was to reboot the machine.
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.
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.
Printer Command Language (PCL & PXL) drivers
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.
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.
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.
Ultra Fast Render (UFR II) driver
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 .tar.gz
UFR
II file provided by Canon, you can actually find DEBs and RPMs.
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.
To get the driver installed, you need to install the cndrvcups-common
package
first and then the cndrvcups-ufr2-xx
package.
The UFR II driver needs a bunch of 32-bit libraries to work properly. On Debian Jessie you can run:
$ apt install libc6-i386 libxml2:i386 lib32z1 libjpeg62-turbo:i386 libstdc++6:i386
There is also a somewhat outdated Debian wiki entry on how to install the UFR II driver.
It seems that this driver works fine, but I've had a few instances of 11x17 pages printing on 8,5x11 paper.
Installing the printer through CUPS
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.
CUPS WebUI
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.
You may need to add the user you want to login with to the lpadmin
unix group.
CUPS CLI
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.
To add a new printer, run this command:
$ lpadmin -p $queue_name -E -v socket://$ip -P $ppd_file
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 /etc/cups/ppd/
.