Why do printers require drivers?
I've always wondered why I need a 500+ MB printer driver installed on my computer every time I set up a new printer. Why can't computers simply send the file that needs to be printed to a printer and have the printer do all the necessary processing?
Admittedly, I know nothing about printers. I am assuming that the printer driver is unique to each printer which converts some standard format file into specific instructions sent to the printer. Rather than forcing each computer to download this specific driver, does it not make more sense for this driver to reside solely on the printer itself and have the printer take in a standard file format?
Even in Apple's new patent application, they still talk about having the printer driver either in the cloud or on the device itself. Understandably, if the printer driver is in the cloud, the local PC would need to download it in order to use it. However, in the second case when the driver is stored on the device itself, why would the computer need to transfer the printer driver to the local PC and only then send the print job? Why can't it just send the file to print and have the printer take that file and use the printer driver (which is already installed on the printer itself) to print the document without any processing needed to be done on the PC?
Is it because printers don't have any processing capability? I find this one hard to believe because today's printers seem to be getting more and more sophisticated with things such as mini displays on them and they have the wifi built in and the ability to insert a memory card and print directly from it without a computer.
Simple answer, they don't require 500 MB, or 50 MB, or even 5 MB of drivers. A PCL (what most inkjets speak) driver is in the hundreds of KB. Likewise, a postscript driver is equally tiny.
In Windows you can, in fact, install and use most printers using a built-in driver, even if it's not the "right" driver. You would be astounded at how many printers will work just fine with the hp-laserjet-4
driver for instance.
All that extra space is help files, graphics, updater, a silly application to let you order more ink online, clipart, etc. Mostly, all the extra space is junk.
Err, that didn't answer the question did it.
The answer is, the driver just needs to speak the language of the printer. Even if the printer read in a raw bitmap, you'd need a driver that took the page you're printing, and turned it into, say, a PPM file. That would be incredibly inefficient though, so they have languages like HPGL for plotters, PS for good printers, and PCL for OK printers and inkjets.
If your OS or software speaks a printer's language, it doesn't need a driver.
I think it's a relic of history.
On the PC side printers have evolved from the character-by-character bunch (so, you send ASCII to them, they type it out as though they were a typewriter) through the Epson FX80 era (which is ASCII + control codes) into pixels. I think the level of competition and the fact that they were building up from devices that didn't really do graphics meant that, at each new generation of technology, it was just cheaper for the printer manufacturers to add the processing burden on at the driver side.
On the Mac side, the first big splash was the Laserjet, which used Postscript. Postscript is much what you describe —— it's a means to describe a page in text and have it rasterised by whatever interprets the Postscript. It's actually a complete programming language, PDF having been developed sort of as a compiled form, providing the same primitives but (initially, before they started throwing the kitchen sink at it) no programming language. To process Postscript, the original Laserjet had a 68000 just like the Mac it was attached to, though the original Macs were very short on RAM and it probably would have been unrealistic to expect them to be able to render graphics at the scale needed to print within a reasonable time frame.
The legacy of Postscript as the way to communicate with a printer lives on in Linux where Ghostscript, a software Postscript renderer, was the standard printer driver for a long time before CUPS (which is still heavily connected to Postscript) became the thing.
I think the cost advantages of not including a Postscript rasteriser are the reason that the PC way won the market, especially as computer power has increased. Apple's new patent looks like a step back from the air print stuff in iOS, which appears to vest a lot of logic back into the printer. I think if we're going to see any progress, it'll be because of the wireless angle where consumers really want to be able to walk up with any of their devices and just hit print.
Do you really need a 500-MB driver to just print?
Chances are you don't. My HP Officejet 6210 has an included CD that has about ~400 MB worth of software, but in reality it has much more than just printing support, among them:
- Scanning
- OCR
- Photo editor
- Photo manager
- Faxing
- etc.
Yes, I agree that they're still bloated, but that's not all for printing. The printer driver isn't that big -- in fact, it's included with Windows 7, and I don't think I've ever seen an included driver be more than a few megabytes big.
So I really doubt that you have a 500-MB driver, but rather 500-MB worth of bundled software.
The short answer is that printer don't know about every document format in the world, nor do they speak every protocol in the world.
You need some software to
- convert the format used by FooBar v1.3 to the format understood by a BazJet 3000, which often existed in two parts
- A bit that converted the FooBar format to the internal format used by the OS (which lived in FooBar).
- A bit that converted from the operating system's internal format to the format used by the printer. This was one part of the printer driver.
- convert operating system abstraction in to bits on a wire that the printer could understand. This was another part of the printer driver.
Now, there are several things that you can do to simplify this situation:
-
You can settle on one or a small group of formats for the printer to use. The long standing example here is postscript printer---by sending generic postscript you could print to just about any PS printer without a format converter.
The problem with that from the home user's perspective has always been that it made the printer more expensive because it needed to have a non-trivial processor and a significant amount of memory in the printer (i.e. the printer is another computer).
-
You can use a one or a small group of (1) physical connectors and (2) protocols to talk to the printer. These days this means (1) ethernet, WiFi, or bluetooth and (2) ipp (say).
Again, the limitation has always been that it drives up the cost of the hardware.
The good news is that Moore's has been working for long enough that the added cost is becoming trivial.