Slow Printing on Linux?
sciguy125 asks: "I switched to Linux a few months ago and the biggest problem that I've had is with my printer. I've got a Canon S520 and Red Hat 9. It prints painfully slow. If I want to print word documents that are more than 5 pages, it's faster to reboot into Windows and print from there. I've scoured the Internet and found that many people are having this problem, but nobody has a satisfactory solution. The most common suggestion is to get a faster computer, thinking that GhostScript is running slow. I'm fairly sure that isn't my problem because the processor is only at about half load when printing. I'm not exactly sure how wide spread this problem is, but I do know that there is at least a decent sized handful of people struggling with it. At first, I was considering dropping Linux because this printing problem is a serious issue with me, but now I just leave a good chunk of my printing until after 2am." Has anyone run into the problem before? What could make a print job spool at unusually slow rates to the printer?
Maybe your printer is on fire, you should go check it. This is a known problem in some versions of Linux.
If your driver is pretty generic, it may just be sending a raw bitmap to the printer, rather than a compressed or vector image. Whereas the windows driver would have been written specifically for that printer taking advantage of all its features. If you have it connected to a parallel port, try USB since that's much faster. Also try printing at a lower DPI. And try different encoding options if they're offered.
If you're using a printer hooked up to a parallel port, do you have an interrupt enabled on that port? Also, make sure that you have a DMA channel setup for it. IIRC, you can pass these options in with the parport module.
I know it's not completely free, but you can download a trial version. turboprint. Furthermore, if it works, paying for the full version will run you about the cost of one ink cartridge. WRT the Canon s520, this person had luck.
Best slashdot comment
I ran into this some time back... exactly as you describe - painfully slow printing with little CPU impact.
After some searching I found a hint that it might be related to my USB driver.
Try switching from uhci to usb-uhci (or vise-versa) and see if that makes a difference.
If they're built into your kernel, you'll have to configure them as modules both and rebuild it.
My disposable toy-printer (Lexmark Z35) now works great _and_fast_ in Linux.
- Preferences: Solaris 10 (servers), Ubuntu (desktops), Solaris 11 (personal servers) -
I've noticed a similar problem using Gimp-Print+ESP GhostScript drivers for my old Apple LaserWriter over the network. In my case, it seems the problem really is that espgs generates very inefficient Level 1 PostScript, and the old drivers were much better. Unfortunately they aren't supported in OS X.
Why won't slashdot let me change my terrible username
Ghostscript is painfully slow under some situations.
9
Check this out:
http://bugs.ghostscript.com/show_bug.cgi?id=68691
They are improving it, however.
David
(So basically, from my testing, it looks like ghostscript makes HUGE postscript files which it then sends to the printer, and takes much longer because the files are so huge).
stuff
Have you checked to see if there are any kernel updates from RedHat? That might be part of the issue, especially if it's USB. I'm guessing it's a driver issue.
I know when I had RedHat, I had an issue with UDMA/66 not working on my VIA chipset. It was a 686A soutbridge and the driver didn't let UDMA transfer rates go beyond UDMA/33. I had to download a driver from VIA to compile into the kernel to get UDMA/66 transfers.
In my case gs-esp generates such a inefficient postscript sometimes (pages with images is the best example) that it seems that not raw bandwidth over parallel/usb is not the problem but printer's slow processor is unable to build in-memory image quickly. And so sometimes happens that printing from Windows takes 2 minutes for a PDF but from linux machine it can take half an hour.
A lot of people complain about slow print speeds in OS X, specially when they have it hooked up to a windows computer at the same time.
People don't realize that most consumer based printers in OS X go through a crazy amount of processing.
For example, If I'm printing a document from MS word, that gets converted into a PDF, then to PS, then to the native printers language, and finally out!
Crazy!
Now when you convert that to the windows, or OS 9 world,
PS straight to the native printers language, to the USB port.
Thats quick!
If you want a real test in linux to see if its spooling, or the pipe to the printer, "stop" the print queue, the job will spool, and then restart the queue.
When the queue starts, the files already spooled, and it just needs to be sent!
good luck
I'm a big retard who forgot to log out of Slashdot on Mike's computer! LOOK AT ME.
OK, I feel your pain but this is just one more symptom of a greater problem. Printing under Linux is a mess and it needs to be fixed. I run a Brother 1250 and in order to get it to work I need to do the following:
Windows
Run the setup program. This installs an applet in the Control Panel along with the driver. The printer is detected on the USB port the first time I turn it on. Sharing is done in about five seconds with a right-click and a couple of selections.
Linux
Install Foomatic, install CUPS, install Ghostscript, fart around for thirty minutes making sure that they can all talk to each other. The total installation size for all of this is well over 50Mb and don't even talk to me about sharing the printer over my network, it isn't going to happen.
Wake up and smell the coffee guys !! We are now well into the 21st Century and Linux is still using a printing system that appears to have been written in the 1960's. This needs fixing with a solution that is small, fast and easy to use.
OK, rant over, feel better now.
Ed Almos
Budapest, Hungary
The more corrupt the state, the more numerous the laws. - Tacitus, 56-120 A.D.
But it's Canon in Japan http://cweb.canon.jp/drv-upd/bj/bjlinux201.html#pa rmition
It's the S500. It might work.
I bought an inexpensive network printer spooler (which had wireless internet to boot). The name of this device is "Apple iMac".
It saved me a lot of hassle. And now Unicode characters print correctly, which is nice too.
It's not worth tweaking it on Linux, get another OS to do the dirty work. My opinion of course.
What earthly difference does your operating system make? Printing is in no way related to ones kernel. Printer "drivers" under Linux are not in the kernel (not generally) and only touch it in the rudamentary way that any parallel- or USB-interacting programs would.
Printing isn't related to your kernel? Tell that to this guy (in this same discussion) who had to recompile his kernel--Linux, of course--in order to print at reasonable speeds. More generally, your choice of operating system directly affects the range of software available to you. If you masochistically choose to run Linux, you're going to be stuck with mediocre printing software. It's really that simple.
I've set up a Brother 1440 on Fedora and it was as simple as installing CUPS ticking the approrpriate options in starting the fedora print tool, saying next a few times and ticking share this printer. It even spotted what printer it was on the parallel port. Works fine and even Windows machines can print to it using IPP (so no it doesn't turn up as samba share and magically send the right drivers to the remote machine but it does work). It wasn't always like that but reporting the hiccups I had when sharing printers led to a few bugs being fixed.
.002% of the space. I'm sure you can think of 100 things you'd rather have fixed in your distro over 40M on CUPS.
As for why CUPS is so huge, well that's because it tries to support lots of printers in one go. Due to the way Linux distros set it up, it's not modular in the sense that only the modules you need are installed. However it's the same for most distro's kernels and for the pain it would cause to implement your suggestion compared to the saving in disk space it really isn't worth it. It's hard to buy disk drives smaller than 20Gbytes and on such a drive CUPS is taking up
Does CUPS work smoothly every time? Nope. Is it usually as smooth as installing a printer on Windows? Probably not. Will posting on Slashdot make it better? Doubt it. If you had a problem, the best thing to do is sit down and carefully make your way through the steps and report it back to your distro manufacturer. What distro were you using btw?
I know I'm replying to a troll, but I'd just like to point out that Mac OS X uses exactly the same printing system you'll find in most Linux distros: CUPS with Gimpprint drivers. It can be just as painfully slow, even when printing through a Windows server.
The problem is that while Windows gets drivers made by the printer manufacturer, Linux and Mac get drivers that don't take full advantage of all the features of the printers. Of course, this has little to do with the OS.
My Epson C41UX prints flat strap (such as it is) at a few percent CPU useage, and it hasn't caught fire or even gotten warm yet.
CUPS 1.1.20 on Mandrake 10.0 on an Athlon 2000.
Perhaps Epson haven't implemented the Halt and Catch Fire opcode?
Got time? Spend some of it coding or testing
Got time? Spend some of it coding or testing
It is good, the vast majority of printers install without a hassle and you can do all manner of tricks which are hard work and extra software under MS-Windows, BUT when CUPS breaks, the error logging is often opaque, very obscure or nonexistent (as in the case of the default action for "binary" files containing Epson (impact dotmatrix) printer control codes from an app being to silently throw away the file on the assumption that the user had doen something dense like print an executable).
Got time? Spend some of it coding or testing
Works just as well for networked printers and printers attached to MS-Windows boxes (might need a username/password for an MS-Window box set up to require that), other CUPS printers are 100% automatic unless you tell CUPS not to.
Got time? Spend some of it coding or testing
It has everything to do with the OS, you whining Linux apologist. When Apple gets complaints that a printer driver is unusably slow on OS X, they'll go out of their way to fix it--no company, not even Apple, can afford to take its paying customers for granted. If you email the Gimp-Print developers to ask about the slowness, on the other hand, more likely than not they'll tell you to fuck off.
So I suppose you're right, in that Linux's mediocrity doesn't stem from the OS per se but rather from the "free as in RMS's body odor" development process and associated ideology.
With a PS printer, there is no complex setup involving filters and GhostScript and other stuff. You just send the PS documents straight to the printer. They print as fast as the computer can send the data, because the printer does all the rendering. It doesn't matter if you have a 386 or a P4 3.6, printing is at top speed.
Better yet, upgrade the printer with a print server and things get even easier. It looks just like a little computer on the LAN, it accepts jobs from others perfectly because it's running LPD (or something else). All your computers print!
I have fussed and fussed with printers over the years. It wasn't untill my brother got a Mac and we had to get a PostScript cartridge for my printer that I realized the wonders of PS. All my computers were printing faster because they weren't doing the rendering any more. And you should see how fast PDF files print in Windows because they are just passed on to the printer (since they are basically PS).
People complain about WinModems, where the CPU is forced to do all the labor. Why don't people complain about those $50 printers? They have no brains, it's up to your computer to do all the thinking, either with GhostScript or the driver in Windows. Get a REAL printer. Get a SMART printer. Get a PS printer and save yourself all the headaches.
Sorry if this sounds like an ad, I'm just a college student. But setting up my PS printer under Linux was a walk in the park. I've never gotten another printer set up well (with the exception of an old dot matrix, which didn't do graphics or anythign) because they are a pain. A printer with a brain (PS) is what we need.
PS: If there was another standard that worked like PS, I'd be fine with that. PCL is nice, but Linux prints using PS so with a PCL printer you still have to run GhostScript.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
I have the same problem. I print to a HP Laserjet 4100 at work connected via a jetdirect card, and an HP 6l connected via LPT at home. I use CUPS for both of them. I have basically two options, use one driver (the name of which I don't remember atm) and get very good print quality, at about 2 ppm; use another driver, and get mediocre to poor quality at about 10-15 ppm. It sucks. It's the one thing I always subconciously try to gloss over when talking to others about my setups because it is such a glaringly obvious weak point, and a silly one at that.
However, it is friggin awesome that when my Linux-using friends bring their PCs over that they plug into my network and can all instantly use the printer with zero setup. That is super nice.
I have had almost the opposite experience with a Brother HL-1240N (a "network" laser printer; the printer can be connected via ethernet in addition to parallel port and/or USB). I chose to use the ethernet option because that makes the printer available to my entire network without the need for a host computer. I might have chosen differently if I cared more about spooling.
Microsoft Windows 2000 had a lot of problems with the supplied drivers and I had I not used the printer's native ability to connect to the network via ethernet, I never would have gotten it working through Microsoft Windows. On a slight tangent: I don't think network printing is something most home users care about. ESR tried to make a similar point to yours in a complaint about the complexity of printing under GNU/Linux (using Fedora Core, if I recall correctly), but his fictional novice home user "Aunt Tillie" was trying to set up a network printer and that's where I knew he was doing something no ordinary home user would do. I don't doubt that network printing is valuable or that it should be easier, I doubt that most home users care about the functionality.
Getting back to my story, using the same printer (still on the ethernet interface) with CUPS in Fedora Core 1 and 2 is quite easy. Using my other printer, a color Epson inkjet connected locally via the parallel port, was even easier under Fedora Core 1 and 2. There were some silly prompts (I had to pick a driver even though the print panel knew the make and model of the printer by querying the printer), but it works.
The three improvements I would suggest are:
1. Printing should work from all applications all the time. For some reason, printing the same JPEG file from some programs fails. Worse yet, printing from different apps fails differently depending on the program (sometimes I get a text dump of PS output, sometimes I get jibberish). I don't know enough about how printing works on GNU/Linux to better assess the problem.
2. Most of ESR's suggestions are apropos -- the printer setup should be minimal, the LAN should be searched for printers, and if I connect a printer whose make and model can be discovered automatically, that should be enough to get going with the printer.
3. Let users change the resolution of their printing without needing the root password. I can't make my Epson inkjet print in its high resolution mode without changing the system-wide printer definition to high-res. But doing so means all users by default print in the slow high-res mode. I only want to change modes for a particular user's default and sometimes for one particular job.
What makes all of this worse for most users is how difficult it is to know who to talk to on this topic -- are feature ideas welcome? If so, where should they be sent? If not, is that because someone is waiting to be hired to develop this code? If so, whom should one hire?
Digital Citizen
I have a canon i850 -- the linux support is indeed very poor. But I have searched a little harder, and found a driver called 'turboprint'.
The driver is just working so well: Borderless printing, photos, anything. Gives you every feature you have from canon's windows driver and in some cases more.
Its also cups compatible, so you can share out your printer using this driver on your local network. There is a catch though, the driver costs $30. However its really full featured, and supports many printers, I found it worth every penny for me.
Anyway, shame on you Canon, its really about time they release drivers for their printer.
Turboprint can be found on: http://www.turboprint.de/english.html
In the pre-laser days, I once managed to set a printer -- a big network printer down the hall and around the corner -- on fire when I sent it a fat file at 3 a.m. or so. The paper jammed, but something inside kept on moving. Eventually, the friction set the paper ablaze. I didn't have a clue in the otherwise empty building until the alarm went off.
-- Slashdot: When Public Access TV Says "No"
They make network attached adapters for parallel/serial AND USB printers.. You can get them for a reasonable cost as well if you shop around.
.. makes it a pretty simple process...
That should simplify things greatly....
Oh, and use the KDE printing tools
---- Booth was a patriot ----
One would hope this is obvious -- not doing business with organizations that don't treat you well -- but I'm pleasantly surprised to see someone else echoing this concern.
I have an Epson Perfection 1260 and I've found that they are plug and play with Fedora Core GNU/Linux 1 and 2. I imagine any other free software OS will work well too. The only problems with this scanner:
Digital Citizen
My early experience with Macs, and with some
of the big name unixes convinced me that PS was
the only way to go. SGI, SUN, HP, Mac, Windows
all support Postscript, and especially networked
Postscript. A few will charge extra for drivers
that use resolutions greater than 600dpi, because
they figure you're working in a prepress shop
(and can afford the Hi-Res drivers). All will
make use of a human readable configuration file
called a PPD (Postscript Printer Definition) file.
With it, you can add a custom page size or
print quality. Postscript is a very well
documented printer interface (and programming
language) that was originally exclusively owned
by Adobe, but which now has alternative compatible
programs like Ghostscript. Postscript used to be
ubiquitous, but had an HP challenger called PCL.
None of the printer manufacturers liked paying
royalties to Adobe, which is why there is such a
mess with winprint printers today.
Got Fedora Core 2 recently and hooked it up to a lexmark optra E. I have never seen anything print so slowly. typically 5 miniutes after I hit the print button the first page begins to slide out. Heaven help you if you press the test button. you could be waiting 20+ minutes. No doubt folks will blame it on windrivers, MS and printer manufactures, but I suspect that CUPS may be to blame. I mean, what kind of a name is CUPS anyway
May the Maths Be with you!
If you do a "mount -t usbdevfs foo /proc/bus/usb" and then do an ls on /proc/bus/usb, you will also see the separate USB controllers.
I belive that is why you will have device drivers for both ehci and uhci loaded. I believe that the uhci driver will talk to USB 1.x device that you plug directly into your computer or through a USB-1.x-only external hub. The ehci driver will talk to any USB 2.x device that you plug in directly or any devices (including USB 1.x devices) that you plug in through a USB2 hub.
USB2 external hubs, by the way, must include USB2->USB1 translators on every port, so a USB2 external hub is enormously more complex than a USB1 external hub. I suppose it would be possible for someone to built a USB2 root hub controller using the same scheme, but I do not know if anyone does.
It's also worth noting that the distinction between 4mbps and 12mbps USB 1.x devices is handled in a different, simpler, way, but one which would have been a big bandwidth drain on 480mbps devices.
Yes, as I stated in my reply (to which you replied), I understand that the ehci would be needed for USB-2.0, and either ohci or uhci would be needed for USB-1.x.
My comment was about the fact that both ohci and uhci drivers were loaded.
Those two are for different chip designs.
- Preferences: Solaris 10 (servers), Ubuntu (desktops), Solaris 11 (personal servers) -
Yes, one if for the USB 1.x layer for the USB2 chip and the other is for the USB 1.x native chip. Most motherboards have both these days as adding some USB 1.x ports with an additional chip is cheap. I know my motherboard is like this, even under windows devices are redetected if I move them from a USB2 port to a USB 1.x port.
There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
Linux users don't have the luxury of each printer manufacturer doing them the liberty of writing their ink-spitting code for as a plugin to Ghostscript on a linux target while their debugging their windows drivers.
;P
We just do like everyone else does and pony up for a real Postscript pritner and be done with it.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
You're right. I didn't read your post closely enough before delivering an unnecessary lecuture about USB2, which I hope helped enlighten some other reader, because otherwise I just wasted a lot of my time. I apologize for wasting yours.
I see from the original poster's follow-up that it looks like he has a dedicated ohci usb-1.x controller in addition to the uhci controller(s) that his ehci uses. So it looks like he should have all three drivers loaded, so that is unlikely to be the source of his problems.
...seemed to have the same problem until I discovered that you can change the default resolution for the print out. I had it set to the highest quality because I usually print out photos. But, whenever I wanted to print out a document from OpenOffice or Mozilla that was just text, it was ungodly slow. I experimented a bit and found that if I set my default resolution to something more suitable for text, the printing was considerably faster. (ie. It worked normally) The only drawback is that I need to change my default printer settings every time I want to flip between text and photo print outs as the apps don't seem to have a way of doing that. Just for reference, I'm printing from a P II 266.
Un-news