| 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 & 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 |
| 40 | modern printers which lack ‘native’ 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 |
| 54 | between eCups and CUPS. eCups is basically a framework of related products and |
| 55 | tools 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, |
| 62 | it was originally designed to be a generic framework for printer support under |
| 63 | various UNIX systems. Since then, it has been adopted as the main printing |
| 64 | engine 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 |
| 67 | most fundamental level, CUPS is essentially a print spooler plus a collection of |
| 68 | data conversion modules. |
| 69 | |
| 70 | <p>The actual printer ‘drivers’ are located in addon packages like Gutenprint. |
| 71 | CUPS itself does have a few built-in generic drivers, but generally you need at |
| 72 | least 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 |
| 79 | sent by various applications, converting them with a native OS/2 printer driver, |
| 80 | and then sending them straight to the printer port (plus logic for managing the |
| 81 | job queue, of course). |
| 82 | |
| 83 | <p>The CUPS spooler, by contrast, is able to perform a number of vital additional |
| 84 | tasks during the process of sending a job to the printer. These tasks are what |
| 85 | allow 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 |
| 92 | widely-used standard for data formatting. A basic understanding of how |
| 93 | PostScript normally works with regards to printing is needed in order to |
| 94 | properly explain how CUPS works. Refer to the box below for a brief summary, |
| 95 | or 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 |
| 101 | particular format or printer ‘language’. Naturally, printers from |
| 102 | any given manufacturer typically use that manufacturer's own proprietary printer |
| 103 | language. But even different printers from the same manufacturer often use |
| 104 | slightly (or occasionally even radically) different variations of these languages. |
| 105 | This is, of course, why we need specific drivers for our printers in the first |
| 106 | place. |
| 107 | |
| 108 | <p>Some printers, however, (especially higher-end laser printers) are <em>PostScript</em> |
| 109 | printers, meaning that they use PostScript as their printer language. (Often, |
| 110 | it must be said, in addition to the manufacturer's proprietary language.) |
| 111 | Because PostScript is an open, mature, and fully standardized language, this |
| 112 | generally means that <em>any</em> printer driver which outputs generic PostScript |
| 113 | data can print to any PostScript printer. |
| 114 | |
| 115 | <p>In this case, the individual capabilities of the printer (such as paper size, |
| 116 | DPI, number and type of trays, duplexing, etc.) are provided by the manufacturer |
| 117 | in 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 |
| 121 | allows these PPDs to be imported, thereby adding printer-specific support for |
| 122 | the model in question without the need for new drivers. |
| 123 | |
| 124 | <p>Of course, since PostScript is a standardized language, it should also be |
| 125 | possible to print to any PostScript printer using only generic settings (the |
| 126 | PostScript driver includes a definition called "Generic PostScript Printer" for |
| 127 | this purpose). As you would expect, however, using a generic printer definition |
| 128 | does 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 |
| 131 | printer under OS/2, as long as a PPD for that printer is available. Where we |
| 132 | need something like CUPS is for non-PostScript printers (of which, regrettably, |
| 133 | there are many). |
| 134 | </div> |
| 135 | |
| 136 | <p>Basically, what CUPS does is add a PostScript emulation layer on top of all |
| 137 | printers. That is to say, from the perspective of the operating system and |
| 138 | applications, CUPS turns every printer into a PostScript printer. It |
| 139 | accomplishes this emulation through a complex system of conversion utilities. |
| 140 | |
| 141 | <p>Because CUPS presents all printers as PostScript, it expects to receive |
| 142 | incoming printer jobs in PostScript format. Generally, this is the |
| 143 | responsibility of whatever passes the print job to CUPS in the first place, |
| 144 | although CUPS is capable of converting a few specific file formats into |
| 145 | PostScript 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 ‘pre-filter‘ 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 ‘filters‘, 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 ‘driver’.) 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 | — 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 ‘backend‘. 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 |
| 216 | the 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 |
| 223 | whole process between receiving the initial job (in PostScript format), through |
| 224 | all the filters and converters, to the backend whence it is passed off to the |
| 225 | actual printer. |
| 226 | |
| 227 | <p>Once a printer is configured in CUPS, it is possible to print test pages from |
| 228 | the CUPS administration GUI, as well as send files (or at least those in one of |
| 229 | the supported formats) directly to the CUPS printer from a command line using |
| 230 | the cupslpr utility. |
| 231 | |
| 232 | <p>To print from OS/2 applications, however, it is necessary to create a normal |
| 233 | OS/2 printer object. |
| 234 | |
| 235 | <p>Wait! you ask. If we can already print files to the CUPS printer, why is it |
| 236 | necessary 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 |
| 239 | will be needed for the more general case. Basically, normal OS/2 (Presentation |
| 240 | Manager) applications only know how to print to an OS/2 printer queue. They |
| 241 | know nothing about any CUPS printers. So all our programs will be printing to |
| 242 | our 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 |
| 245 | printer so they end up going through CUPS. The OS/2 printing subsystem actually |
| 246 | provides a mechanism for doing this, via a custom port driver. Instead of |
| 247 | configuring the printer for LPTx or COMx, eCups includes a port driver, |
| 248 | CUPS.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 |
| 251 | PostScript format before it can process them. CUPS does know how to convert a |
| 252 | few specific file types into PostScript on its own, but it's not designed to |
| 253 | handle the GPI format generated by most OS/2 applications. Happily, the OS/2 |
| 254 | printer drivers are specifically designed to handle GPI data... and the |
| 255 | PostScript printer driver in particular generates — naturally — a |
| 256 | PostScript file, which then gets handed off to the printer. So, we just pass |
| 257 | that file along to CUPS. |
| 258 | |
| 259 | <p>It's certainly possible to use the standard OS/2 PostScript driver for this. |
| 260 | However, the eCups team has provided an updated PostScript driver called |
| 261 | ECUPS.DRV; this is actually based on the standard PostScript driver, but with |
| 262 | various 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 |
| 265 | simplified, 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- |
| 332 | platform CUPS system. The whole diagram, with the exception of the application |
| 333 | at 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 |
| 340 | of which consist of separate programs. If something goes wrong somewhere along |
| 341 | the 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 |
| 344 | difficult process. |
| 345 | |
| 346 | <p>Due to the lack of properly-integrated OS/2 tools, configuring and managing |
| 347 | CUPS is also awkward. Simply creating a new printer, for example, is tedious and |
| 348 | often 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 |
| 356 | OS/2 spooler to crash when printing. Until a fix is found, you should be able |
| 357 | to use the Generic PostScript Printer driver.<p> |
| 358 | |
| 359 | <li>Printing to printers which use Foomatic may result in the job aborting about |
| 360 | 99% of the way through (resulting in the last few words/characters being cut |
| 361 | off). |
| 362 | |
| 363 | <p>This problem is currently under investigation. In the meantime, it does not |
| 364 | seem to occur when printing files which are already in either PS or PDF format; |
| 365 | therefore, 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 |
| 367 | properties), 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 |
| 371 | directly 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 & 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>, |
| 384 | which 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 |
| 391 | of supported printer models, arranged by manufacturer. CUPS gets this list from |
| 392 | all the driver packages which you have installed (like Gutenprint), plus the small |
| 393 | number of generic drivers which CUPS includes natively. |
| 394 | |
| 395 | <p>Of course, some printers may be supported by driver packages which you don't |
| 396 | currently have installed, in which case you won't see it in CUPS (until you install |
| 397 | the required software). A good way to check for support for a particular printer |
| 398 | model is to check the <a href="http://www.openprinting.org/printers?action=search">OpenPrinting |
| 399 | Database</a>. Keep in mind, though, that not all of the CUPS driver packages out |
| 400 | there 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 |
| 408 | model) actually exists. The best place to find out is by looking through the |
| 409 | printer list on the <a href="http://www.openprinting.org/printers?action=search">OpenPrinting</a> |
| 410 | web site. |
| 411 | |
| 412 | <p>If you've determined that your printer is supported, you will need make sure |
| 413 | that the driver package required is installed. Currently, the following driver |
| 414 | packages 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> |
| 422 | page to download them. |
| 423 | |
| 424 | <p>You may also need to download the appropriate CUPS PPD file, if the support |
| 425 | hasn't been included in the driver package already. The OpenPrinting site (see |
| 426 | link 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 |
| 429 | general 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 |
| 441 | these 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> |
| 448 | web 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 |
| 455 | without 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" |
| 458 | driver for the OS/2 printer object. Since CUPS is designed to operate on |
| 459 | generic PostScript files, this should work just fine, as long as CUPS itself is |
| 460 | properly configured to support your printer. |
| 461 | |
| 462 | <p>The main disadvantage of doing it this way is that you will be unable to set |
| 463 | any printer-specific options in the OS/2 printer object or from the standard |
| 464 | OS/2 job properties dialog. If you need to change the printer options, you will |
| 465 | have 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. |
| 472 | Basically, you should choose whichever one your printer (or the print server |
| 473 | it'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 |
| 478 | networking printers which was designed to replace the much older LPD. It |
| 479 | supports many features which the LPD and AppSocket do not, including encryption, |
| 480 | authentication, 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 |
| 483 | TCP/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 |
| 486 | but 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 |
| 489 | Samba. |
| 490 | </dl> |
| 491 | |
| 492 | <p>If your printer is being shared by a Windows, OS/2 Peer, LAN Server, or Samba |
| 493 | file/print server, then you will probably need to use SMB. Otherwise, choose |
| 494 | whichever of the TCP/IP-based protocols your printer (or its print server) |
| 495 | supports best. |
| 496 | |
| 497 | <p>Of course, it's quite likely that more than one of them is supported. In |
| 498 | this case, you may want to consult the documentation that came with your |
| 499 | printer/server (or ask your network administrator) to see if any of them is |
| 500 | recommended specifically. |
| 501 | |
| 502 | <p>In general, IPP supports the most features, AppSocket/JetDirect has the best |
| 503 | performance, 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 |
| 510 | files) 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 |
| 514 | selecting printer options, standard paper sizes, and basic quality settings. |
| 515 | The PPD files that are not "simplified" offer a much broader set of controls, |
| 516 | giving the user extensive control over quality and color adjustment.<br> |
| 517 | — 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 |
| 527 | OS/2 printer object (or rather, to an OS/2 print queue, which is what the printer |
| 528 | object defines). They know nothing about CUPS printers. |
| 529 | |
| 530 | <p>(Obviously, you can print directly to the CUPS printer using CUPS-specific tools |
| 531 | like <em>cupslpr</em> or the CUPS web interface. But that doesn't help us with |
| 532 | the general case.) |
| 533 | |
| 534 | <p>Creating an OS/2 printer object gives applications somewhere to send their |
| 535 | print jobs. What we do in this case is configure that printer object to redirect |
| 536 | all its jobs to CUPS. This is done by setting the printer output port to a CUPS<i>x</i> |
| 537 | port, which you must configure with the name of the corresponding printer defined |
| 538 | in CUPS. |
| 539 | |
| 540 | <p>To put it more simply: OS/2 printer objects know how to receive print jobs from |
| 541 | applications. CUPS knows how to send that data to the actual printer. So they |
| 542 | have 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 |
| 545 | automatically whenever you created a new printer in CUPS. Unfortunately, there is |
| 546 | no way to do this just at the moment, so you have to create them both separately |
| 547 | yourself. |
| 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 |
| 554 | printer object or in CUPS itself. |
| 555 | |
| 556 | <p>When you configure options in the OS/2 printer object, the resulting |
| 557 | PostScript file which gets sent on to CUPS will have those settings defined. |
| 558 | In this case, CUPS should respect them. |
| 559 | |
| 560 | <p>The settings in CUPS itself (which you can configure through the web |
| 561 | administration GUI) can be thought of as fall-back defaults. Any options which |
| 562 | you set in the OS/2 printer object (or in the job properties dialog which most |
| 563 | applications will offer you before printing) should take priority. Options |
| 564 | which were not set in the printer object (and which are thus not defined in |
| 565 | the PostScript file which CUPS receives) will fall back to the CUPS-configured |
| 566 | defaults. |
| 567 | |
| 568 | <p>Just to avoid confusion, it's a good idea to keep both the printer object |
| 569 | defaults 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 | }}} |