[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Tackling a shared USB printer (linux -> WXP)

Brion Swanson wrote:

It seems to me that the printer is hooked up to a single machine - i.e.
presumably a machine that only runs one operating system at a time - or it's
hooked up to a hardware print server.  In either case, the interface through
which the printer receives its data should be of one type.  In other words,
when I - as the software printing driver - talk to the physical printer, I
use only one language to talk to that printer -- the most appropriate common
language.  All other devices that want to talk through the printer must go
through the printer driver -- a single printer driver.
The concept here is that window refuses to queue a file before it is processed thru the driver for that printer. If spooled raw it will not print properly, EVER.

If I set up a printer in Windows and shared it, I don't believe I'd need to
set up multiple versions of the same printer, one for each different OS that
uses it.  Windows would configure one printer, with one driver (the Canon
driver in my case) and then other computers would talk to Windows to print,
not to the printer directly.  In which case, I only need the driver that
works with windows to be loaded and possibly some translation software to
convert, say, a stream of bytes into something the printer will understand.
This is wrong in concept but right in queueing.

If you have a printer on an XP machine and are sharing it with a 98 machine they both have their own version of the driver for that printer (for many printers) and each sends the file preformatted to the print queue.

The biggest difference is when the file gets queued. By default a file to be printed on linux is spooled. Then when it is despooled for printing it is handed off to the printer driver for the formatting that is printer specific and streamed to the printer. This means the queue is set up specifically for each printer because the queue config knows what driver to hand the job to for formatting And if I want, I can use different drivers for the same printer -- postscript, non postscript, PCL, or otherwise depending on the abilities of the printer and my wants. I just set up a different print queue for each type handling I want.

On Windows, the file is formatted (and binary) before it is spooled to the queue (raw on Windows as well as on Linux).

With these differences it is important that the linux queue knows what type file it is receiving. Preformatted or Raw.

I agree it's logical to have one queue for each device that needs a
different driver, but managing 'n' number of queues for a single printer
because I have 'n' number of different OSes, each of which talk to the
printer in a different language is, if not difficult at least annoying.
Think of the linux print queue as doing the job the windows print drivers do before spooling. The file spooled is raw, usually much smaller than the formatted file, (and often saves a lot of space) as well as making a single point in time where the formatting occurs (exactly when needed). After the driver manages the formatting the file is now binary and streamed to the printer.

I want to set up the printer locally in linux, then tell the rest of the
world, "Hey! I have a printer you can use if you want to talk to it through
me!" and have that be it.  It doesn't seem like such a difficult task.
Other operating systems do it - why not this one?
If you change the way linux spools the print files so they are preformatted before spooling then ALL print sources would be able to use a raw print queue. In the present setup, the printer drivers do not even touch the file until it is despooled for printing.

The raw print queue is functionally identical to the print queue in Windows. It receives a (binary) file to be spooled and sends it to the printer without doing any other processing.

Sorry this turned into a little rant, but it just bugs me that this
"thousand-queue" solution is the best thing linux has to offer when sharing
a USB printer with other operating systems.

This is not difficult. When sharing with linux machines you have a choice on the sending machine of preformatting and sending to a raw queue or sending it raw an using a printer specific queue on the print server. The same choices are (theoretically) available whether you are providing services for Linux workstations or Windows (except Windows does NOT allow the choice. It MUST be sent to a raw print queue).

OTOH, the concept of the print queue providing the driver formatting on *nix goes a little deeper. It not only saves space in a print queue, but it also meens the workstations being served do NOT have to even install a printer driver and do not care what printer their job is sent to. (I know, this is a carry-over from when workstations were dumb and drive space was at a premium; But the idea is still sound)

----- Original Message ----- From: "Jeff Vian" <jvian10 charter net>
Why does it seem wrong.??

The os being used to print (windows), preformats the printer output so
it is correctly printed.  Thus it needs to be streamed to the printer
via a "RAW" queue that gets no further processing.

Linux also needs to format its output for the printer, so it cannot use
the raw queue but needs a different path that does process the output
and prepares it for the printer.

This seems very logical to me.

BOTTOM LINE: flexibility. Windows is not, Linux is almost limitless. Tailor it as you see fit. A few seconds spent in planning and configuration provides a lot of later flexibility.

If you do not like the flexibility options of windows why not get a network print server appliance and remove the printing from Linux totally? Then every station would have to send files to the printer exactly the same - preformatted and all.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]