Printing in Linux: Still Waaaay Harder Than It Has To Be

Longtime readers (I know you exist) will note that it’s been a good few months since I posted about how I’d started tinkering with replacing Windows with Ubuntu Linux on my PC at home.

“So?” ask the Longtime Readers. (I hear your voices in my head. At least I assume it’s your voices…) “How’s it going?”

So far, it’s been very positive. I’ve gotten Ubuntu to do everything Windows 2000 was doing — except games, I’d resigned myself to that — and for the most part it was very easy to set up and get running.

Except for one thing: printing. Something as simple as setting up an inkjet printer turned out instead to be an epic adventure in frustration, fraught with danger, intrigue, and dialog boxes containing the words “pig fuckers”.

(Well, that last bit isn’t true, really. There were no dialog boxes containing the words “pig fuckers”. But believe it or not, they would have improved the experience.)

Printing support is one of the acknowledged Here There Be Dragons areas of the Linux desktop. Open Source guru Eric Raymond ranted memorably on the subject last year:

GUI tools and voluminous manuals are not enough. You have to think about what the actual user experiences when he or she sits down to do actual stuff, and you have to think about it from the user’s point of view. The [Common Unix Printing System] people, despite good intentions, have utterly failed at this.

You would think that a year after one of the most prominent figures in the OSS movement blasted Linux printing as unusable, someone would have fixed it. But apparently not.

My printer at home is a Lexmark Z43 inkjet. This is a fairly common variety of inexpensive inkjet of the species known technically as inkcartridgus insatiabilis, on which Lexmark profits by selling you overpriced ink cartridges.

When I set up Ubuntu, I noticed there was an applet under “Administration” called “Printers”. I ran the applet and it found my Z43 hooked up to the computer via USB right away:

Add Printer wizard in Ubuntu

Look ma! It found my printer all automagically!

A couple more clicks and Ubuntu reported my printer as ready to go.

Except… it wasn’t.

See, the thing was, I couldn’t actually print anything on the damn thing. I could “send documents to the printer” all the live long day, and Ubuntu happily reported each one printed successfully. But nothing came out of the printer.

Undaunted — with Linux, sometimes you have to be willing to roll up your sleeves — I dove into the Ubuntu Forums looking for help. I found lots of responses to printer questions being answered with the reply that the questioner should check out LinuxPrinting.org, so I bopped over there next, seeking enlightenment.

Here’s what I found instead:

Ok. Wow. Um, I mean… wow.

Beyond my first reaction (that “works Partially” probably wasn’t good), I had no idea where to go from here. The page recommends the use of a print driver called drv_z42 for best results — but according to the Ubuntu printer wizard, that was the driver I was using. So that’s not particularly helpful.

“So, use another driver,” you say? Holy moley. Read down that page and see if you can keep up with the lingo:

IMPORTANT: Always use the Foomatic data and/or PPD files of the Gimp-Print version which you are actually using! Remove and re-create your print queues after every update of Gimp-Print. If you are using the Gimp-Print package of your Linux distribution, it is possible that the Foomatic data and/or the PPD files can be in separate packages. Make sure you install them and that they are of the version corresponding to your Gimp-Print package.

Holy crap, I think my head just exploded.

After spending way too much time trying to figure out the relationship between “Foomatic“, “gimp-print“, “CUPS“, and a ream of other geekery, I eventually gave up. My printer still does not print.

After I clicked around a little more, I eventually found a reason why all this is so. Lexmark, you see, are a bunch of pig fuckers, and they won’t release open-source drivers for the Z43 — or even document the interface between the computer and the printer, so someone else could write those drivers — so people have to resort to reverse engineering the drivers, which is slow and error prone.

See, though, here’s the thing. I understand that explanation. I’d even be willing to consider buying a printer that wasn’t made by pig fuckers and throwing the Z43 away (it’s nothing special) if it would make this easier. But Ubuntu never told me I needed to do that. Instead, it cheerily threw up a new printer icon that didn’t work — even knowing that the Z43 is apparently very flaky with Linux. Then I spent hours digging through the Web trying to figure out why a seemingly successful setup wasn’t working.

The whole problem could have been solved by a single dialog box from the printer wizard when it noticed I was plugging in a printer from Lexmark:

Don't buy printers from pig fuckers

… and then I could have said “Oh, OK” and gone out and bought a printer not made by pig fuckers, saving myself a ton of time.

So, the moral(s) of the story?

  • Don’t make things seem super easy unless you do the work to take care of all the complicated stuff behind the scenes.
  • Lexmark are a bunch of non-open-source-supporting pig fuckers.
  • Our Favorite Geek is too dumb to understand the rich and nuanced subject that is Linux printing. Since Our Favorite Geek is a colossal geek, this is another data point to support Eric Raymond’s contention that Linux printing needs serious attention before it’s ready for normal human beings.

If you’ve got suggestions on how to make the damn Z43 work — or, hell, if you can just explain in clear English what “Foomatic” is, which is more than the documentation is able to pull off — show off in the comments. (Oh, and thanks to user-interface god Steven Garrity for taking the time to put together a great comparison of dialog boxes from various GNOME apps so I could take one and scrawl “pig fuckers” on it.)

UPDATE: A solution! Huzzah! A commenter was nice enough to suggest a way to get my printer working that actually worked. See the comments to this post for details.


Comments

Oscar Merida

August 23, 2005
9:46 am

Hate to tell you this but you’re ranting up the wrong tree. How is it Linux’s fault that you don’t have a compatible printer because Lexmark won’t release drivers or use a standard interface? I know, I know, you’re spoiled because in Windows at least everything had the shiny logo on the front which means it would most likely work most of the time 🙂
Linux hinges on open standards to work well with peripherals and unfortunately, printer makers can get away with making their own crazy interfaces and drivers if they want to (isntead of using Postscript or something like that). On the other hand, you probably won’t run into similar issues with a digital camera, a flashdrive, or external usb drive since those use more documented standards (USB Mass Storage or PTP).
If you had, say a Laserjet like we use at work or a Samsung ML1750 or a Canon printer you’d already be printing in Linux. BTW, scanners are also in this same situation – not all supported.
Oh, and thanks for supporting a printer maker that tried to use the DMCA to protect their inkjet refills market… 🙂

Jason Lefkowitz

August 23, 2005
9:54 am

“How is it Linux’s fault that you don’t have a compatible printer because Lexmark won’t release drivers or use a standard interface?”
Did you read the whole thing?
I didn’t say _that_ was Linux’s fault. (In fact I called Lexmark pig fuckers for doing that.)
What IS Linux’s fault — or, more precisely, fault spread somewhere between Ubuntu, CUPS, Foomatic, and God knows who else — is that the OS TOLD me the printer was working, even though it was not.
I’m not saying the printer should work in Linux. What i’m saying is that Linux should correctly tell me the status of the printer — or warn me copiously if I try to use a marginally-supported printer — rather than making it look like everything is hunky dory when it is not.
It’s better to say “I can’t do that” than to say “I did it!” when you didn’t. Expectations Management 101.

Mike

August 31, 2005
1:57 pm

All you have to do is select the “Lexmark Z43” instead of the default “Z43” driver when going thru the setup (have to scroll up a bit) This selects the gimp-print driver (which is already installed in Ubuntu) and works great.

Jason Lefkowitz

August 31, 2005
10:10 pm

Thanks Mike — I’m away from my Ubuntu box for a few days but I’ll give it a spin when I get back.

Jason Lefkowitz

December 13, 2005
8:48 pm

Well, umpty-ump months later and I finally got around to trying Mike’s suggestion.
IT WORKS! Huzzah! Thanks Mike!

dan

January 2, 2006
10:11 am

well thank God for this post. Thought I would never get that printer working.
In my case I had to go off the lexmark73 and its default selection of z42 driver.
Scroll up the list and select Lexmark Z_42 then The gimp print thing worked and something actually came out.
Only thing I can figure is the other ones are there just in case they ever do reverse engineer it.

amanda

May 23, 2006
10:34 am

I just want to echo your actual point, which is that it is slightly bogus that Ubuntu is all “Cool, cool, your printer is good to go” and then it isn’t.
I am navigating a similar problem, trying to share a networked printer and it is a pain in the ass. I was prepared for it to be a pain in the ass, but I wasn’t prepated for the Ubuntu print utility to be sitting here saying “problem? what problem?” while every time I try to print from Ubuntu what I actually do is jam the print queue on my boss’s Windows machine.
A few proposed solutions are buried in the Ubuntu Forums, which is cool, but Ubuntu needs to either work as expected or say “This is open source software and it just so happens that a lot of times Network Printing requires you to jump through flaming hoops, so don’t get your hopes up or let some uber geek friend tell you that it is going to be ‘easy’.”