Changes between Initial Version and Version 1 of CupsFaq


Ignore:
Timestamp:
Sep 2, 2010, 3:12:27 PM (14 years ago)
Author:
Alex Taylor
Comment:

Initial version

Legend:

Unmodified
Added
Removed
Modified
  • CupsFaq

    v1 v1  
     1{{{
     2#!html
     3<h1>eCups Frequently Asked Questions</h1>
     4
     5<p><a href="#1_0">1.  General Information</a>
     6<ul style="list-style-type: none;">
     7<li><a href="#1_1">1.1.  What is eCups?</a>
     8<li><a href="#1_2">1.2.  All right then, what is CUPS?</a>
     9<li><a href="#1_3">1.3.  Another spooler?  Doesn't OS/2 already have a print spooler?</a>
     10<li><a href="#1_4">1.4.  How does CUPS work?</a>
     11<li><a href="#1_5">1.5.  How does CUPS fit into OS/2?</a>
     12<li><a href="#1_6">1.6.  What limitations does eCups have?</a>
     13<li><a href="#1_7">1.7.  Are there any known problems with eCups?</a>
     14</ul></p>
     15
     16<p><a href="#2_0">2.  Configuration &amp; Use</a>
     17<ul style="list-style-type: none;">
     18<li><a href="#2_1">2.1.  How do I set up eCups on my system?</a>
     19<li><a href="#2_2">2.2.  What printers are supported?</a>
     20<li><a href="#2_3">2.3.  How do I install support for a printer which isn't listed?</a>
     21<li><a href="#2_4">2.4.  Where can I find PPD files?</a>
     22<li><a href="#2_5">2.5.  I can't import my PPD into ECUPS.DRV, what should I do?</a>
     23<li><a href="#2_6">2.6.  What's the difference between all these network device types (<em>ipp://</em>, <em>lpd://</em>, <em>socket://</em>, etc.)?</a>
     24<li><a href="#2_7">2.7.  What are the "Simplified" printer drivers for?</a>
     25<li><a href="#2_8">2.8.  Why do I need to create <em>both</em> a CUPS printer <em>and</em> an OS/2 printer object?</a>
     26<li><a href="#2_9">2.9.  Where should I define the printer settings: in the OS/2 printer properties, or in CUPS?</a>
     27</ul></p>
     28<p><a href="#3_0">3.  Troubleshooting</a>
     29<ul style="list-style-type: none;">
     30<li><a name="1_0"></a>
     31</ul></p>
     32
     33
     34<h2>1.  General Information</h2>
     35
     36<a name="1_1"></a>
     37<h3>1.1.  What is eCups?</h3>
     38
     39<p>eCups is complete printing framework which is designed to allow the support of
     40modern printers which lack &#x2018;native&#x2019; OS/2 print drivers.
     41
     42<p>eCups includes the following components:
     43
     44<ul>
     45<li>CUPS (ported by Paul Smedley)
     46<li>GhostScript (ported by Paul Smedley)
     47<li>Print driver packages such as Gutenprint, Splix, & HPLIP (ported by Paul Smedley)
     48<li>eCups port driver (various authors; based on LPR32 by Serge Sterck)
     49<li>eCups PostScript driver (various authors; based on modified IBM PSCRIPT.DRV)
     50<li>foomatic-rip filter (ported by Alex Taylor and Paul Smedley)
     51</ul>
     52
     53<p>Although the terms are sometimes used interchangeably, there is a distinction
     54between eCups and CUPS.  eCups is basically a framework of related products and
     55tools for integrating the CUPS product into OS/2 and eComStation.
     56
     57
     58<a name="1_2"></a>
     59<h3>1.2.  All right then, what is CUPS?</h3>
     60
     61<p>CUPS stands for <em>Common Unix Printing System</em>.  As the name implies,
     62it was originally designed to be a generic framework for printer support under
     63various UNIX systems.  Since then, it has been adopted as the main printing
     64engine under Linux and MacOS X as well.
     65
     66<p>It is important to keep in mind that CUPS is not a printer driver.  At its
     67most fundamental level, CUPS is essentially a print spooler plus a collection of
     68data conversion modules.
     69
     70<p>The actual printer &#x2018;drivers&#x2019; are located in addon packages like Gutenprint.
     71CUPS itself does have a few built-in generic drivers, but generally you need at
     72least one driver package installed in addition to CUPS itself.
     73
     74
     75<a name="1_3"></a>
     76<h3>1.3.  Another spooler?  Doesn't OS/2 already have a print spooler?</h3>
     77
     78<p>Yes, it does... but the OS/2 spooler is only capable of receiving print jobs
     79sent by various applications, converting them with a native OS/2 printer driver,
     80and then sending them straight to the printer port (plus logic for managing the
     81job queue, of course).
     82
     83<p>The CUPS spooler, by contrast, is able to perform a number of vital additional
     84tasks during the process of sending a job to the printer.  These tasks are what
     85allow CUPS to support such a vast range of printers.
     86
     87
     88<a name="1_4"></a>
     89<h3>1.4.  How does CUPS work?</h3>
     90
     91<p>First of all, CUPS makes extensive use of PostScript, which is an open and
     92widely-used standard for data formatting.  A basic understanding of how
     93PostScript normally works with regards to printing is needed in order to
     94properly explain how CUPS works.  Refer to the box below for a brief summary,
     95or just skip past it if you already know this.
     96
     97<div style="font-size: smaller; background: #e0e0e0; padding-left: 1em; padding-right: 1em; border: thin solid black;">
     98<p><b>PostScript and Printing</b></p>
     99
     100<p>Different printers require the data they receive for printing to be in a
     101particular format or printer &#x2018;language&#x2019;.  Naturally, printers from
     102any given manufacturer typically use that manufacturer's own proprietary printer
     103language.  But even different printers from the same manufacturer often use
     104slightly (or occasionally even radically) different variations of these languages.
     105This is, of course, why we need specific drivers for our printers in the first
     106place.
     107
     108<p>Some printers, however, (especially higher-end laser printers) are <em>PostScript</em>
     109printers, meaning that they use PostScript as their printer language.  (Often,
     110it must be said, in addition to the manufacturer's proprietary language.)
     111Because PostScript is an open, mature, and fully standardized language, this
     112generally means that <em>any</em> printer driver which outputs generic PostScript
     113data can print to any PostScript printer.
     114
     115<p>In this case, the individual capabilities of the printer (such as paper size,
     116DPI, number and type of trays, duplexing, etc.) are provided by the manufacturer
     117in standardized format via an ASCII file called a PostScript Printer Description
     118(PPD).
     119
     120<p>The standard OS/2 PostScript printer driver includes a utility called PIN which
     121allows these PPDs to be imported, thereby adding printer-specific support for
     122the model in question without the need for new drivers.
     123
     124<p>Of course, since PostScript is a standardized language, it should also be
     125possible to print to any PostScript printer using only generic settings (the
     126PostScript driver includes a definition called "Generic PostScript Printer" for
     127this purpose).  As you would expect, however, using a generic printer definition
     128does not let you take advantage of printer-specific features.
     129
     130<p>Given the above, there is rarely a problem with using any model of PostScript
     131printer under OS/2, as long as a PPD for that printer is available.  Where we
     132need something like CUPS is for non-PostScript printers (of which, regrettably,
     133there are many).
     134</div>
     135
     136<p>Basically, what CUPS does is add a PostScript emulation layer on top of all
     137printers.  That is to say, from the perspective of the operating system and
     138applications, CUPS turns every printer into a PostScript printer.  It
     139accomplishes this emulation through a complex system of conversion utilities.
     140
     141<p>Because CUPS presents all printers as PostScript, it expects to receive
     142incoming printer jobs in PostScript format.  Generally, this is the
     143responsibility of whatever passes the print job to CUPS in the first place,
     144although CUPS is capable of converting a few specific file formats into
     145PostScript on its own (such as plain text, PDF, or certain image formats).
     146
     147<p>CUPS takes each printer job it receives through the following steps:
     148
     149<ol style="list-style-type: upper-alpha; font-size: smaller;">
     150<li>Receives the printer job data as a PostScript file.  If the file CUPS
     151    receives is not PostScript, but is in another supported format, it calls
     152    one of a number of &#x2018;pre-filter&#x2018; utilities to convert it
     153    into PostScript.
     154
     155    <p>(Some types of image file can be converted directly to CUPS-Raster format
     156    (see step C) when printing to a non-PostScript printer; in this case, CUPS
     157    skips step B and the first part of step C.)</p>
     158
     159<li>Uses the configured printer settings (defined via PPD and configured in the
     160    CUPS administration GUI and/or the desktop printer object) to add printer-
     161    and job-specific options to the PostScript data.
     162
     163    <p>If printing to a genuine PostScript printer, this data is then sent directly
     164    to the backend for printing (step D).  Otherwise, it proceeds to step C.</p>
     165
     166<li>Passes the data to a program, or series of programs, for final processing.
     167    These programs are known as &#x2018;filters&#x2018;, and are responsible for
     168    converting the PostScript data into the printer's native language.
     169
     170    <p>The first filter, in most configurations, is "pstoraster", which uses
     171    GhostScript to convert the PostScript data into an intermediate format
     172    called  "CUPS-Raster".  (This format is supported by GhostScript as one
     173    of its available output formats.)</p>
     174
     175    <p>The CUPS-Raster data is then passed to another program which knows how to
     176    convert it into printer-specific data.  (This latter program can thus, in
     177    a sense, be considered the actual printer &#x2018;driver&#x2019;.)  CUPS has a few built-
     178    in programs for some common printer languages (generic support only), but
     179    more commonly an external driver package will be used.  The largest such
     180    driver package is called "Gutenprint" (formerly called "gimp-print", as it
     181    was originally developed for The GIMP), which provides support for a large
     182    number of (mostly inkjet) printers.  Other packages include HPLIP and Splix.</p>
     183
     184    <p>As it happens, GhostScript itself includes a number of printer drivers which
     185    aren't available in other packages like Gutenprint.  In this case, the
     186    PostScript data can be converted directly to printer-specific format, rather
     187    than going through the process of CUPS-Raster --> external driver package.
     188    In cases like this, an alternative filter called "foomatic-rip" (or simply
     189    "Foomatic") gets called instead of pstoraster.  Using instructions in the
     190    PPD file, Foomatic calls GhostScript in order to convert the PostScript data
     191    &mdash; not into CUPS-Raster format, but directly into the printer's native
     192    format instead.  The usual second step of calling an external driver package
     193    is thus omitted.  (Note that printers which use Foomatic for their drivers
     194    require a special PPD file with the required instructions.)</p>
     195
     196    <p>Whatever filters are called, at the end of this phase, CUPS should have a
     197    printer data file which is now in the printer's own native format, ready for
     198    actual printing.</p>
     199
     200<li>Passes the printer data to the &#x2018;backend&#x2018;.  This is the term used
     201    for CUPS's internal equivalent of a port driver: it controls the physical
     202    communication with the printer.  Available backends include:
     203    <ul>
     204     <li>USB, for USB-connected printers.
     205     <li>IPP, for network printers on a TCP/IP network.
     206     <li>SMB, for network printers being managed by a CIFS server like Samba.
     207    </ul><p>
     208
     209<li>The backend passes the data to the printer, and the job is finally printed.
     210</ol>
     211
     212<p>A flowchart showing the various steps in more detail can be seen
     213<a href="http://www.linuxfoundation.org/sites/main/files/static/cups-system-ascii.html">here</a>.
     214
     215<p>See below for a more simplified flowchart which shows how these steps fit into
     216the eCups framework under OS/2.
     217
     218
     219<a name="1_5"></a>
     220<h3>1.5.  How does CUPS fit into OS/2?</h3>
     221
     222<p>All CUPS printers are managed by the CUPS daemon, which is responsible for the
     223whole process between receiving the initial job (in PostScript format), through
     224all the filters and converters, to the backend whence it is passed off to the
     225actual printer.
     226
     227<p>Once a printer is configured in CUPS, it is possible to print test pages from
     228the CUPS administration GUI, as well as send files (or at least those in one of
     229the supported formats) directly to the CUPS printer from a command line using
     230the cupslpr utility.
     231
     232<p>To print from OS/2 applications, however, it is necessary to create a normal
     233OS/2 printer object.
     234
     235<p>Wait! you ask.  If we can already print files to the CUPS printer, why is it
     236necessary to create an OS/2 printer as well?
     237
     238<p>Well, we can print using CUPS's own internal tools.  The OS/2 printer object
     239will be needed for the more general case.  Basically, normal OS/2 (Presentation
     240Manager) applications only know how to print to an OS/2 printer queue.  They
     241know nothing about any CUPS printers.  So all our programs will be printing to
     242our standard OS/2 printer object, and that gets sent on to CUPS.
     243
     244<p>How does that work?  Well, we can redirect the jobs that get sent to an OS/2
     245printer so they end up going through CUPS.  The OS/2 printing subsystem actually
     246provides a mechanism for doing this, via a custom port driver.  Instead of
     247configuring the printer for LPTx or COMx, eCups includes a port driver,
     248CUPS.PDR, which passes all jobs on to the CUPS daemon.
     249
     250<p>There's more; remember that CUPS needs the print jobs it receives to be in
     251PostScript format before it can process them.  CUPS does know how to convert a
     252few specific file types into PostScript on its own, but it's not designed to
     253handle the GPI format generated by most OS/2 applications.  Happily, the OS/2
     254printer drivers are specifically designed to handle GPI data... and the
     255PostScript printer driver in particular generates &mdash; naturally &mdash; a
     256PostScript file, which then gets handed off to the printer.  So, we just pass
     257that file along to CUPS.
     258
     259<p>It's certainly possible to use the standard OS/2 PostScript driver for this.
     260However, the eCups team has provided an updated PostScript driver called
     261ECUPS.DRV; this is actually based on the standard PostScript driver, but with
     262various fixes and other improvements to make it work with CUPS more smoothly.
     263
     264<p>The general flow of operation thus looks something like the following (greatly
     265simplified, of course):
     266
     267<pre>
     268+-------------+
     269| Application |
     270+-------------+
     271       |
     272       | (OS/2-GPI printer format)
     273       |
     274*======|=================== OS/2 PRINTER OBJECT =============================*
     275#      |                                                                     #
     276#      v                                                                     #
     277#   +---------------------------------------+                                #
     278#   | PostScript printer driver (ECUPS.DRV) |                                #
     279#   +---------------------------------------+                                #
     280#                                    |                                       #
     281#                                    | (PostScript data)                     #
     282#                                    v                                       #
     283#                      +-----------------------------+                       #
     284#                      | CUPS port driver (CUPS.PDR) |                       #
     285#                      +-----------------------------+                       #
     286#                                    |                                       #
     287*====================================|=======================================*
     288                                     |
     289*======================= CUPS =======|=======================================*
     290#                                    |                                       #
     291#                                    | (Incoming PostScript data) (A)        #
     292#                                    v                                       #
     293#                            +---------------+                               #
     294#                            | 'pstops' (B)  |                               #
     295#                            +---------------+                               #
     296#                                    |                                       #
     297#                                    | (Printer-specific PostScript data)    #
     298#                                    |                                       #
     299#                                    |                                       #
     300#      PostScript printer?           |       Built in GhostScript driver?    #
     301#          +------------------------< >---------------------+                #
     302#          |                         |                      |                #
     303#          |       CUPS or 3rd-party | driver module?       |                #
     304#          |                         |                      v                #
     305#          |                         v                +--------------------+ #
     306#          |                +------------------+      | 'foomatic-rip' (C) | #
     307#          |                | 'pstoraster' (C) |      +--------------------+ #
     308#          |                +------------------+                   |         #
     309#          |                         |                             |         #
     310#          |                         | (CUPS-Raster format)        |         #
     311#          |                         v                             |         #
     312#          |           +-----------------------------+             |         #
     313#          |           | Printer-specific driver (C) |             |         #
     314#          |           +-----------------------------+             |         #
     315#          |                         |                             |         #
     316#          | (PostScript)            | <-(Printer-native format)-> |         #
     317#          |                         |                             |         #
     318#          v                         v                             v         #
     319#    +------------------------------------------------------------------+    #
     320#    | CUPS backend (parallel/serial/USB/IPP/LPD/SMB/AppleTalk/etc. (D) |    #
     321#    +------------------------------------------------------------------+    #
     322#                                    |                                       #
     323*====================================|=======================================*
     324                                     |
     325                                     V
     326                              +-------------+
     327                              | PRINTER (E) |
     328                              +-------------+
     329</pre>
     330
     331<p>The box labelled "CUPS" indicates components which are part of the cross-
     332platform CUPS system.  The whole diagram, with the exception of the application
     333at the top and the printer at the bottom, comprises the eCups framework.
     334
     335
     336<a name="1_6"></a>
     337<h3>1.6.  What limitations does eCups have?</h3>
     338
     339<p>CUPS involves a long and exceedingly complex chain of interlocking stages, many
     340of which consist of separate programs.  If something goes wrong somewhere along
     341the line, it can be very difficult to pinpoint the failing component.
     342
     343<p>At the moment, installing and configuring eCups is a lengthy and sometimes
     344difficult process.
     345
     346<p>Due to the lack of properly-integrated OS/2 tools, configuring and managing
     347CUPS is also awkward.  Simply creating a new printer, for example, is tedious and
     348often confusing.
     349
     350
     351<a name="1_7"></a>
     352<h3>1.7.  Are there any known problems with eCups?</h3>
     353
     354<ul>
     355<li>Importing certain (mostly Foomatic) PPD files into ECUPS.DRV can cause the
     356OS/2 spooler to crash when printing.  Until a fix is found, you should be able
     357to use the Generic PostScript Printer driver.<p>
     358
     359<li>Printing to printers which use Foomatic may result in the job aborting about
     36099% of the way through (resulting in the last few words/characters being cut
     361off).
     362
     363<p>This problem is currently under investigation.  In the meantime, it does not
     364seem to occur when printing files which are already in either PS or PDF format;
     365therefore, one workaround is to print to a PostScript file first (by selecting
     366"output to file" on the output port page of the OS/2 printer object's
     367properties), and then print the file manually using <em>cupslpr</em> or
     368<a href="http://pages.cs.wisc.edu/~ghost/gsview/">gsview</a>.
     369
     370<p>(Similarly, in programs like OpenOffice, which have the option of exporting
     371directly to PDF, you can generate a PDF file which can be printed from
     372<em>cupslpr</em> or Lucide.)
     373</ul>
     374
     375
     376<a name="2_0"></a>
     377<h2>2.  Configuration &amp; Use</h2>
     378
     379
     380<a name="2_1"></a>
     381<h3>2.1.  How do I set up eCups on my system?</h3>
     382
     383<p>Check out the <a href="http://svn.netlabs.org/ecups/wiki/HowTo">eCups HOWTO</a>,
     384which provides detailed instructions, including screenshots.
     385
     386
     387<a name="2_2"></a>
     388<h3>2.2.  What printers are supported?</h3>
     389
     390<p>When you go to add a new printer in the CUPS web interface, you will see a list
     391of supported printer models, arranged by manufacturer.  CUPS gets this list from
     392all the driver packages which you have installed (like Gutenprint), plus the small
     393number of generic drivers which CUPS includes natively.
     394
     395<p>Of course, some printers may be supported by driver packages which you don't
     396currently have installed, in which case you won't see it in CUPS (until you install
     397the required software).  A good way to check for support for a particular printer
     398model is to check the <a href="http://www.openprinting.org/printers?action=search">OpenPrinting
     399Database</a>.  Keep in mind, though, that not all of the CUPS driver packages out
     400there have been ported to OS/2 (and not all of them are open source in any case.)
     401</p>
     402
     403
     404<a name="2_3"></a>
     405<h3>2.3.  How do I install support for a printer which isn't listed?</h3>
     406
     407<p>First, you need to find out if a CUPS driver for your printer (or a compatible
     408model) actually exists.  The best place to find out is by looking through the
     409printer list on the <a href="http://www.openprinting.org/printers?action=search">OpenPrinting</a>
     410web site.
     411
     412<p>If you've determined that your printer is supported, you will need make sure
     413that the driver package required is installed.  Currently, the following driver
     414packages are available for eCups:
     415<ul>
     416<li>Gutenprint
     417<li>Splix
     418<li>HPLIP
     419<li>Foomatic/Ghostscript built-in <em>(only partially working at the moment)</em>
     420</ul>
     421<p>Go to the <a href="http://svn.netlabs.org/ecups/wiki/CupsPort">CupsPort</a>
     422page to download them.
     423
     424<p>You may also need to download the appropriate CUPS PPD file, if the support
     425hasn't been included in the driver package already.  The OpenPrinting site (see
     426link above) is your place to go for these.
     427
     428<p>Finally, you have to install the support for your printer in CUPS and OS/2.  In
     429general terms, you need to do the following:
     430<ol>
     431  <li>Install the driver package; consult its documentation for details.
     432  <li>Create a new printer in CUPS.  Either select your printer if it's listed,
     433      or import the PPD file if not.
     434  <li>If the printer isn't listed in the eCups printer driver, you will also need
     435      to import the PPD into ECUPS.DRV using the PIN utility.
     436  <li>Create an OS/2 printer object using the newly-added printer driver.
     437  <li>Create a new CUPS port which points to the new printer in CUPS, and select
     438      it as the output port in the OS/2 printer object.
     439</ol>
     440<p>The <a href="http://svn.netlabs.org/ecups/wiki/HowTo">eCups HOWTO</a> describes
     441these steps in more detail.
     442
     443
     444<a name="2_4"></a>
     445<h3>2.4.  Where can I find PPD files?</h3>
     446
     447<p>Browse the printer list on the <a href="http://www.openprinting.org/printers?action=search">OpenPrinting</a>
     448web site.
     449
     450
     451<a name="2_5"></a>
     452<h3>2.5.  I can't import my PPD into ECUPS.DRV, what should I do?</h3>
     453
     454<p>One may occasionally encounter a PPD file which can be imported into CUPS
     455without problems, but which the OS/2 printer driver (ECUPS.DRV) chokes on.
     456
     457<p>If this happens to you, you can simply use the "Generic PostScript Printer"
     458driver for the OS/2 printer object.  Since CUPS is designed to operate on
     459generic PostScript files, this should work just fine, as long as CUPS itself is
     460properly configured to support your printer.
     461
     462<p>The main disadvantage of doing it this way is that you will be unable to set
     463any printer-specific options in the OS/2 printer object or from the standard
     464OS/2 job properties dialog.  If you need to change the printer options, you will
     465have to do so from the CUPS administration GUI.
     466
     467
     468<a name="2_6"></a>
     469<h3>2.6.  What's the difference between all these network device types (<em>ipp://</em>, <em>lpd://</em>, <em>socket://</em>, etc.)?</h3>
     470
     471<p>CUPS supports several different types of network connection to a printer.
     472Basically, you should choose whichever one your printer (or the print server
     473it's connected to) supports best.
     474
     475<dl>
     476<dt><tt>ipp://</tt>
     477<dd>IPP or Internet Printing Protocol.  This is a modern TCP/IP protocol for
     478networking printers which was designed to replace the much older LPD.  It
     479supports many features which the LPD and AppSocket do not, including encryption,
     480authentication, and job control.  Not all print servers may support it, however.<p>
     481<dt><tt>lpd://</tt>
     482<dd>This is the venerable TCP/IP Line Printing Daemon protocol.  Virtually all
     483TCP/IP network printers and print servers should support it.<p>
     484<dt><tt>socket://</tt>
     485<dd>AppSocket (or "JetDirect") protocol over TCP/IP.  Originally developed by HP
     486but supported by many network printers as well as hardware print servers.<p>
     487<dt><tt>smb://</tt>
     488<dd>SMB protocol, as used by Windows Networking, OS/2 Peer and LAN Server, and
     489Samba.
     490</dl>
     491
     492<p>If your printer is being shared by a Windows, OS/2 Peer, LAN Server, or Samba
     493file/print server, then you will probably need to use SMB.  Otherwise, choose
     494whichever of the TCP/IP-based protocols your printer (or its print server)
     495supports best.
     496
     497<p>Of course, it's quite likely that more than one of them is supported.  In
     498this case, you may want to consult the documentation that came with your
     499printer/server (or ask your network administrator) to see if any of them is
     500recommended specifically.
     501
     502<p>In general, IPP supports the most features, AppSocket/JetDirect has the best
     503performance, and LPD is the most widely available.
     504
     505
     506<a name="2_7"></a>
     507<h3>2.7.  What are the "Simplified" printer drivers for?</h3>
     508
     509<p>Gutenprint provides many of its printer drivers (through its included PPD
     510files) in both normal and "Simplified" versions.
     511
     512<p>The Gutenprint user's manual explains the difference:
     513<blockquote>The "simplified" PPD files offer a basic set of options only, for
     514selecting printer options, standard paper sizes, and basic quality settings.
     515The PPD files that are not "simplified" offer a much broader set of controls,
     516giving the user extensive control over quality and color adjustment.<br>
     517&#x2014; Gutenprint 5.<i>x</i> user's manual
     518</blockquote>
     519
     520<p>The Simplified drivers should be adequate for most peoples' needs.
     521
     522
     523<a name="2_8"></a>
     524<h3>2.8.  Why do I need to create <em>both</em> a CUPS printer <em>and</em> an OS/2 printer object?</h3>
     525
     526<p>OS/2 Presentation Manager programs only know how to print to an
     527OS/2 printer object (or rather, to an OS/2 print queue, which is what the printer
     528object defines).  They know nothing about CUPS printers.
     529
     530<p>(Obviously, you can print directly to the CUPS printer using CUPS-specific tools
     531like <em>cupslpr</em> or the CUPS web interface.  But that doesn't help us with
     532the general case.)
     533
     534<p>Creating an OS/2 printer object gives applications somewhere to send their
     535print jobs.  What we do in this case is configure that printer object to redirect
     536all its jobs to CUPS.  This is done by setting the printer output port to a CUPS<i>x</i>
     537port, which you must configure with the name of the corresponding printer defined
     538in CUPS.
     539
     540<p>To put it more simply: OS/2 printer objects know how to receive print jobs from
     541applications.  CUPS knows how to send that data to the actual printer.  So they
     542have to work together in tandem in order for printing to work.
     543
     544<p>In an ideal world, a corresponding OS/2 printer object would be created for you
     545automatically whenever you created a new printer in CUPS.  Unfortunately, there is
     546no way to do this just at the moment, so you have to create them both separately
     547yourself.
     548
     549
     550<a name="2_9"></a>
     551<h3>2.9.  Where should I define the printer settings: in the OS/2 printer properties, or in CUPS?</h3>
     552
     553<p>In principle, you can set your preferred printer settings in either the OS/2
     554printer object or in CUPS itself.
     555
     556<p>When you configure options in the OS/2 printer object, the resulting
     557PostScript file which gets sent on to CUPS will have those settings defined.
     558In this case, CUPS should respect them.
     559
     560<p>The settings in CUPS itself (which you can configure through the web
     561administration GUI) can be thought of as fall-back defaults.  Any options which
     562you set in the OS/2 printer object (or in the job properties dialog which most
     563applications will offer you before printing) should take priority.  Options
     564which were not set in the printer object (and which are thus not defined in
     565the PostScript file which CUPS receives) will fall back to the CUPS-configured
     566defaults.
     567
     568<p>Just to avoid confusion, it's a good idea to keep both the printer object
     569defaults and the internal CUPS defaults synchronized with each other.
     570
     571
     572<a name="3_0"></a>
     573<h2>3.  Troubleshooting</h2>
     574
     575<p>TODO
     576}}}