[lug] Inexpensive Laser Printer (a quick review)
Ferdinand Schmid
fschmid at archenergy.com
Mon Oct 1 12:06:32 MDT 2001
I hope you don't see this as off topic... - but have any of you looked at cups (
http://www.cups.org/ )? It is unfortunately semi-commercial but they have tried
to address a lot of these issues. And I have been using it for a while now with
decent success. CUPS is certainly not perfect yet but it can eliminate many
printing issues.
Just food for thought,
Ferdinand
J. Wayde Allen wrote:
> On Sun, 30 Sep 2001, Rob Riggs wrote:
>
>
>>Installing this printer gave me a glimpse of one of the uglier aspects
>>of Linux (and Unix in general). There is no standard printing subsystem.
>>
>
> Printing under *nix always seems to be an issue. I have to admit that it
> took me several days to figure out printing under Linux the first time
> around. The problem is that I'm not sure what should be done, if
> anything. So ... this seems like a really valid topic for discussion.
>
> Not intending to be too pedantic, I know that Rob probably knows more
> about this than I, I'm thinking it might be worth digging back into the
> design philosophy for Unix. Rather than me typing a lot here, it would
> probably be instructive to refer everyone to the "newbie" columns I was
> writing several years back. These can be found at
> <http://lug.boulder.co.us/docs.html>.
>
> The key issue has always been that *nix has tried NOT to embed hardware
> specific code into the general OS software. Designers have always striven
> to keep hardware specific features at the kernel level and the kernel is
> supposed to allow each device to be accessible to the higher level OS
> structure as simple files. File contents are handled by the higher level
> programs. The idea has been to minimize the coding required to adapt a
> new piece of hardware to the system. After all, Unix was invented at a
> time when computer hardware was far less standard than it is today.
>
> The printing subsystem, if I understand what is meant here, would then be
> the lpr command. This allowed one to specify the low level printer
> characteristics such as where the printer is located (parallel, serial, or
> network port), its name, and how to talk to it. You'd then send print
> jobs to the printer of your choice using:
>
> lpr -Pprinter_name file_to_print
>
> You could also send a print job to the printer directly by typing
>
> cp file_to_print /dev/printer
>
> ,but the lpr command in concert with lpd was designed to handle print
> spooling etc.. This subsystem provides the mechanism and logistics for
> getting the file you want to print to the appropriate printer, and since
> it doesn't care about the file contents should work for any kind of
> printer you'd care to use. It was left up to the user, and/or the program
> creating the print file to create a file of the type that the printer
> could understand (ASCII, PCL, Postscript, etc.) My guess is that it is
> this last point where most of the problems lie. You can't just send a
> binary file to the printer without first converting to a format the
> printer understands.
>
> Here is where things get a bit sticky. In MSDOS/MSWindows you have the
> so-called device driver. This is philosophically a bit different that a
> kernel module in Linux since the driver contains both the hardware
> interface code, and often the data conversion code. In Linux the idea
> with the lpr command is to use data "filters". Filters are supposed to be
> the code that converts one specialize file format into the language that
> the printer recognizes. You can write your own, and/or find these filters
> on the net. The lpr command has a series of filter identifiers
> (c,d,f,g,l,n,p,t,v) that specify which filter should be used. Some of
> these may be hard coded in the lpr specification, but as memory serves you
> have to specify the path to the filter location associated with each of
> these letters in the /etc/printcap file along with the printer
> description. I think that lpr is "old" in the sense that there are only a
> limited number of printer filter identifies. However, there has been a
> solution.
>
> When building the printer description in the /etc/printcap file one
> specifies the default filter to be used when no filter option is
> specified. Then what has typically been done is to write this default
> filter so that it can read the magic numbers out of the printer files and
> decide what if any conversion needs to be done. These filters are usually
> called "magic filters" and eliminate the need for the user to know what
> kind of file conversion needs to be done.
>
> The advantage in this kind of world is that programs that want to print
> somewhere don't need to know anything about the printers. They simply
> need to create a file that is understood by the magic filter and to send
> their output through the lpr print subsystem.
>
>
>>Samsung has to provide seperate packages and give seperate instructions
>>for every major distribution. There is no way to distribute a seperate
>>ghostscript driver (ghostscript device drivers are all compiled into a
>>monolithic program). These problems have to be addressed if we are to
>>ever see better printer support under Linux.
>>
>
> This is unfortunate, and I wonder if it is caused by approaching this as a
> printer "driver" problem? If they used the *nix philosophy it should be
> relatively simple to create a kernel module with the minimum code needed
> to talk to the device. Then they'd only need to build a magic filter
> designed to print standard file formats (ASCII, JPEG, TIFF, Postscript,
> PCL, etc.).
>
> My guess is that there are actually several issues:
>
> - Misunderstanding the *nix design philosophy and treating this as
> MSWindows style driver
>
> - Use of non-standard, proprietary printer languages
>
> - Confusion about just where these files should go in a distribution
>
> Of course, I may also have just completely missed the point. In any case,
> printing is a common topic with some serious stumbling blocks that should
> probably be discussed.
>
> - Wayde
> (wallen at lug.boulder.co.us)
>
> _______________________________________________
> Web Page: http://lug.boulder.co.us
> Mailing List: http://lists.lug.boulder.co.us/mailman/listinfo/lug
>
--
Ferdinand Schmid
http://www.archenergy.com
303-444-4149 x231
More information about the LUG
mailing list