| | 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 | }}} |