Way back in the old days of Red Hat, printing was no more difficult than using the supplied RedHat config tool for setting up your LPRng queue. Since the arrival of CUPS, I’ve often felt it continues to be one of the most hateful things anyone has ever done to Linux users. I’m sure the developers and technicians love it, but only a precious few distros make it simple. Users of BSD generally learned long ago not to run unneeded LAN servers like CUPS, when you only plan to print from your own system. Thus, BSD still clings to Apsfilter. Given the presumption of most distros (“Why would anyone not love CUPS?”) you might have a real struggle on your hands switching to Apsfilter. For now, let’s concentrate on the shortest path, and note the RHEL series has been particularly painful.
Part of the problem remains the default kernel modules. For example, given how many articles are posted telling you it is necessary to blacklist usblp
, I am puzzled why so many distros don’t make it the default, or at least don’t script it. This obscure fact has caused the filling of many forums over why printing doesn’t just happen, as it could and should. Even more disturbing is the large number of “helpful hints” which never seem to bother with that kernel module. Apparently this is both obscure, yet a near universal problem.
So to get my Brother HL-2140 to work, it wasn’t enough the kernel recognized it immediately. It insisted on loading that blasted useless kernel module. Does that work with any printer in the known universe? Not where I’ve tried it. On your RHEL machine, before you bother to plug in any USB printer, always remove that module (as root: rmmod usblp
) and blacklist it. Edit /etc/modprobe.d/blacklist.conf
by adding this line at the end of the file: blacklist usblp
.
(Update: This problem appears less an issue in the full release of RHEL 6.0. Test your USB printer without changing the modprobe blacklist first. If it doesn’t work, then let that be your first check in diagnosing the problem.)
Now it’s okay to plug in your USB printer. It should be auto-configured immediately, if CUPS knows what it is. If you are using some model from HP, you are in for a rough ride, because Red Hat insists on using the oldest possible working version of HPLIP — 3.9.8. Aside from those nice, durable Lasterjets, almost any HP printer you can get today needs the current 3.10 series to even think of working with RHEL 6.
For RHEL 5/CentOS 5, you’ll have your hands full, but I’ve made it work once; see this page. For RHEL 6, you have two different ways to get there. I recommend you go to this helpful page and follow the instructions. Since I don’t plan to ever trust HP again, I can’t vouch for how it works on RHEL 6, but I’ll bet it’s close. The other option is simply upgrading using this SRPM and building it yourself for upgrade. It’s not precisely up to date, but closer than the bundled version.
Hmm… I’ve never had any trouble with CUPS — either back in the day when it first came to Linux, more recently on Ubuntu or on Mac OS X.
My experience has been mixed, but when I had problems, they were never simple to resolve. I suppose it matters that I’ve often been forced to use whatever clunky old printers I could get from thrift shops and flea markets. The few new printers I’ve bought didn’t always work, either. Ubuntu usually comes closest to getting it right the first try, and SUSE was usually tolerable. Once Red Hat want to EL, I’ve never had it easy. But since everything else about Red Hat seems to work better, I keep trying.
Still, I can’t see how everything Linux does absolutely must be networkable first and and foremost — the X server, CUPS, etc. I’d say the vast majority of Linux installations never, ever use that networking functionality. Open Source developers don’t have a clue about the average user. The rest of us are saddled with it. There is no OS which doesn’t suck, but it seems Linux is still tolerable, since I can’t get BSD to work on my hardware. š
Yes, getting it to work on your hardware is important!
Interestingly, while OS X rejects the Linux-y server model on a number of counts — e.g. Quartz is not network transparent, unlike X — it does use CUPS as a server. Part of that, though, I think, is the desire to make it very simple for Bonjour/ZeroConf networking to provide access to shared printers.
Of course, if you don’t need that…