******************************************************************************* File: @(#)$Id: how-to-report.txt,v 1.13 2001/08/01 05:36:37 Martin Rel $ Contents: How to report bugs and hardware compatibility for pcl3 Author: Martin Lottermoser, Greifswaldstrasse 28, 38124 Braunschweig, Germany. E-mail: Martin.Lottermoser@t-online.de. ******************************************************************************* * * * Copyright (C) 2000, 2001 by Martin Lottermoser * * All rights reserved * * * ******************************************************************************* Bugs and Failures ***************** This document distinguishes between "bugs" and "failures". A bug is incorrect behaviour on the part of pcl3, a failure is described by a set of hardware-relevant parameter values which are not accepted by a particular printer. Most often a failure is due to hardware limitations in the printer, not to a problem in pcl3, although it might be difficult to find out which is the case. For the user, this distinction is fortunately irrelevant. Bugs **** The basic rule is that it's a bug if there is disagreement between the behaviour and the documentation (the bug might be in the documentation, though). For example, if the documentation states that pcl3 produces a core dump under certain circumstances, this is by definition not a bug, which means that you should not report it (I'll have to fix it nevertheless, of course). If your printer has a specific subdevice in pcl3 (e.g., if you have a Hewlett-Packard DeskJet 540, this is the "hpdj540" subdevice) and the result when using this subdevice is not accepted by the printer or there is printer functionality you cannot access through this subdevice, this is a bug. If you find a bug in pcl3, please report it. The format of your message is irrelevant, but the content should be sufficiently detailed that I can reproduce the behaviour. You should always specify the versions of gs and pcl3 you used. Please make sure that the behaviour is due to pcl3 and not to other causes. In particular, if nothing seems to work and you are on a UNIX system, do the following: - Generate the PCL file by calling gs yourself, and print through a "raw"/"transparent" queue which does not modify the file. - If spooled printing fails, log in as root and try to send the file directly to the device file. If it works, the problem is in the spooler. - If even that fails, send a line of text (still as superuser) directly to the device, followed by a form feed: printf 'Hello!\r\n\f' > /dev/... If this also does not work, you very likely have a kernel or hardware problem. I am writing this because there have been cases where people complained that my driver wasn't working at all and where the cause turned out to be, e.g., a misconfiguration of the spooler. Please don't bother me with problems of this kind; I have enough to do correcting my own mistakes. However, I only demand that you take reasonable steps to ensure that it isn't you who has created the problem. If you can't decide which component is at fault, by all means contact me -- just don't expect a quick answer and don't start by telling me that my driver doesn't work :-). Hardware compatibility reports ****************************** The pcl3 driver is intended to support a large number of printers. Because the PCL-3 documentation supplied by Hewlett-Packard is incomplete and occasionally wrong (sometimes obviously so because of inconsistencies), tests must be made on various printers in order to discover whether the driver can really be used for a particular printer model and which parameter values one should specify. As I do not have access to a complete range of PCL-3 printers, I must rely on others to do this for me. If you have a PCL-3 printer and are using pcl3, please check the file reports.txt whether there is already an entry for your printer or not. If there is none or if the hardware-relevant parameters listed are different from the ones you used, please compose a report in the format described below and send it to me. You need not cover all possible combinations; in fact, this might be too confusing for others anyway. Even a single success report, however, can help someone else with less knowledge or experience to get started. This is a service *you* can provide to the community of pcl3 users. Guidelines for testing ====================== - Read the documentation. Please. :-) - As test files, use publicly available PostScript files, preferably those included in the ghostscript or pcl3 distributions. The file levels-test.ps in the latter is a good starting point. - Keep in mind that some environment variables influence ghostscript's behaviour and make sure their values are as intended. - If you have access to a manufacturer-endorsed driver for your printer, use it to generate some test files with various settings, analyse them with pcl3opts, and try the suggested option combinations first. - The basic hardware parameters to test are colour model, resolution, and the number of intensity levels. - Colour model: The interesting models are Gray, CMY, and CMY+K/CMYK, depending on your printer. You need not bother with CMY for a CMY+K or CMYK printer unless you discover that the CMY cartridge supports a higher resolution than the black cartridge. - Resolution: Check your printer's documentation first. It should at least list the highest supported resolution, possibly separately for black and colour printing. If you don't have access to the documentation, a good set to test with is {300, 600x300, 600, 1200}. Smaller resolutions ({75, 100, 150}) are sometimes also supported but they are uninteresting for serious printing. Resolution tests are best made with a file where only the top left corner of the sheet is used. It should contain some structure of known extension. If a resolution is not accepted, the printer usually prints the picture anyway, but at a supported resolution, leading to magnified or reduced output. - Intensity levels: Test this only if your printer's documentation claims that some kind of Resolution Enhancement (e.g., C-REt) is supported or pcl3opts tells you that an official driver generates files with this property. Unless pcl3opts tells you differently, start with 300 ppi and 4 levels for all colorants used. Whether a particular value for a parameter is supported often depends on the values for other parameters. In some cases, even the print quality is important. If in doubt, test with "presentation". - If your printer has special hardware functionality, tests for that are also interesting (duplex printing, banner printing, different input or output trays). If you are using "unspec" or "unspecold", you should also always try compression method 9 unless the pcl3 documentation states that it is not supported by your printer. General rules for reports ========================= - You can use all characters in ISO 8859-1, plus HT and NL/LF. - Please keep to the following syntactic rules which simplify converting the information into other formats: - The report consists of a sequence of fields, each occupying an integral number of lines. - Each field begins with a field name, starting in column 1 and ending with the first following colon (':') in the same line. - The content of a field may be continued over several lines provided all continuation lines are either empty or indented with blanks (SP or HT). Trailing empty lines are ignored. - With the exception of "Success" and "Failure", every field may appear at most once in a report. If it appears a second time in a file, a new report is assumed to start at this point. - Make your report sufficiently detailed to be reproducible but don't tell us your life story. Special remarks for individual fields ===================================== - "Name": Supply your full name here. I don't accept anonymous or obviously nickname-signed reports. - "E-mail address" (optional): choose a stable one, your information might be used for several years. Omit this field if you do not wish your e-mail address to be disclosed to other users of pcl3. - "Date": I prefer the internationally standardized notation, YYYY-MM-DD. - "Printer": Be as precise as possible in identifying the printer. Ideally, I should like to have the following kind of information (as an example I'm giving some values for a DJ 850C): - printer name ("HP DeskJet 850C") - manufacturer's model identification ("C2145A") - firmware revision ("9.20 02/14/95") At least some of Hewlett-Packard's printers issue this information when you print a diagnostic or self test. If your printer's manual doesn't tell you how to generate such a test, try sending the command "ESC z" to the printer (on a UNIX system, you can use "printf '\x1bz'" to generate it). - pcl3opts (optional): Use this field to describe pcl3opts's output if you ran pcl3opts on files generated by manufacturer-endorsed drivers and you have obtained interesting information. You should always describe the driver you used. Interesting information is for example that the official driver generated files with certain settings for which pcl3opts did not give a warning but nevertheless you were not able to print such a file with pcl3. Expect me to ask you for a copy of such a file. - "Media configuration file" (optional): If you used a media configuration file and its content was relevant for the test or you wish to make the file available to other users, include it or a reference to it here. You must state where the information came from, so it can be verified in case of discrepancies. - "Remarks" (optional): Use this, if needed, for global information applying to a number of tests (perhaps a summary) or any other relevant information. - "Success:" and "Failure": These are intended for describing the result of using a single option combination and may be repeated any number of times (including zero). Each report should be independent of the others so they can be sorted differently if needed. Keep in mind that the key purpose of a report is to find out which hardware parameters work and which don't. It is therefore a success if the driver is at least able to correctly tell the printer how to paint shapes at the level of the printer's hardware capabilities (resolution, colorants and intensities). A good test file is levels-test.ps which has been designed for this purpose. I don't count it a failure when the result of printing a photograph or a similarly demanding document is not as aesthetically pleasing as it should be or when a problem is due to a bug in ghostscript. Use comments for such statements if desired. However, the decision whether an entry is a success or a failure remains yours to make, not mine. These fields should start with the list of options given to ghostscript via the command line, including the "-sDEVICE" option. You should omit options which are obviously irrelevant for the outcome of the test (like "-dNOPAUSE" or "-sOutputFile"), but otherwise the option list must be complete. If you wish to add a comment (and for a failure you must always do that), terminate this list with a period followed by a newline and add the comment after that. Here's an example: Failure: -sDEVICE=pcl3 -r1200 -sColourModel=CMYK -sPrintQuality=best -sMedium=transparency. Printed at twice the size intended. The option list terminates immediately after "transparency" in this case. Note that you don't need backslashes here if you break the command line into several text lines. If you did something interesting in the PostScript file (like setting page device parameters to unusual values), append the PostScript code in the comment part or in the "Remarks" field. ****************************************************** Name: [your full name] E-mail address: [optional] Date: [YYYY-MM-DD] Printer: [at least manufacturer and model] Ghostscript version: [GNU or AFPL, version number] pcl3 version: [version number] pcl3opts: [optional; information on printer capabilities obtained by running pcl3opts on other drivers' output files] Media configuration file: [optional] Remarks: [optional; use, e.g., for global comments or a summary] Success: [options used, repeat any number of times] Failure: [options used, repeat any number of times. Don't forget to give your reason for classifying this as a failure (after terminating the options with a period followed by a newline).]