hpscanpbm(1)

hpscanpbm1

User-level scsi hp scanjet driver

Usage

hpscanpbm [-dpi dpi] [-xdpi dpi] [-ydpi dpi] [-xres pixels] [-yres pixels] [{-in | -cm | -mm}] [-x pos] [-y pos] [-width size] [-height size] [-bright adj] [-cont adj] [-dev dev] [-o, -out file] [-quiet] [-load file] [-save file] [-format format] [-help]

Overview

hpscanpbm captures an image from a Hewlett-Packard ScanJet series scanner attached to a SCSI card, and produces a portable pixmap file as output. It can easily be used as part of a pipeline or with a "real" scanning application.

Options

-dpi DPI

sets both X and Y scan resolution in dots per inch

-xdpi DPI

sets X scan resolution only (default is 100 dpi)

-ydpi DPI

sets y scan resolution only (default is 100 dpi)

-xres PIXELS

adjusts xdpi to produce desired number of pixels per row in output image

-yres PIXELS

adjusts ydpi to produce desired number of pixels per column in output image

-in

scan region is being specified in inches (the default)

-cm

scan region is being specified in centimeters

-mm

scan region is being specified in millimeters

-x POS

position of left edge of scan region (default is 0)

-y POS

position of top edge of scan region (default is 0)

-width SIZE

width of scan region (default is 8.5 inches)

-height SIZE

height of scan region (default is 11.0 inches)

-bright ADJUSTMENT

brightness adjustment (-1.0 to 1.0, default is 0.0)

-cont ADJUSTMENT

contrast adjustment (-1.0 to 1.0, default is 0.0)

-dev DEVICE

SCSI generic device of scanner (default is a non-intrusive autoprobe)

-o, -out FILE

output file (default is print to stdout)

-quiet

turn off informational messages

-format FORMAT

select pixel format: thresholded, dithered, greyscale, or color

-load FILE

read parameter settings from file, then continue processing options

-save FILE

save current parameter settings to file (this should probably be the last option, if used)

-help

print a usage message and exit, successfully

Examples

The save-options feature allows you to do things like this:

hpscanpbm -xres 1280 -yres 1280 -cm -width 12 -height 12 -format color -s cdcover.hps > sample.LPm

Which will scan an image and save the parameters to cdcover.hps, which can be used later as:

hpscanpbm -l cdcover.hps > sample2.LPm

This is suitable for scanning audio CD covers.

This program can also be called from within another application. To do this, fork, redirect stdout and stderr, then exec hpscanpbm with the -quiet switch. On termination, if you got anything from stderr, issue it as a diagnostic; otherwise, interpret stdout as a PBM file.

Linux notes

This is NOT a device driver. Your ScanJet must be connected to a SCSI adapter that is supported by Linux.

While the chipsets used on the boards supplied with the IIc and IIcx (NCR 53C400 and 53C800) do seem to have some support under Linux, these exact board configurations are not supported yet. I've had good luck with a Future Domain TMC-850. Performance of this 8-bit card isn't amazing but it definitely works.

This program uses the generic SCSI interface. Therefore, you must have generic SCSI enabled in your kernel, and you should have a series of generic SCSI devices set up:

/dev/sga -- major 21, minor 0 (mknod /dev/sga c 21 0)
/dev/sgb -- major 21, minor 1 (mknod /dev/sgb c 21 1)

SCSI generic devices should be character devices, not block devices. Furthermore, even devices that are already assigned to other names (like /dev/sda, /dev/scd0) also get a generic entry point. This means that you need at least as many SCSI generic device entries as you have SCSI devices.

If you're paranoid, clear all permissions on all generic devices except the scanner. Figuring out in advance which generic device ends up being your scanner can get a little tricky. If you only have one SCSI bus, they're allocated in order of SCSI ID. In my case, I've got two SCSI controllers, one for my internal stuff and one for my scanner; I've got three devices on the first bus so my scanner ends up being on /dev/sgd. (I've got the wrong kind of cable to hook everything onto a single bus). Unless the program is given the -quiet or -dev options, it will tell you where it found the scanner. The scanner's device must have both read and write permission.

If you're running anthing older than about 1.1.74, you'll probably also need to patch /usr/src/linux/drivers/scsi/scsi.c near line 370. In a switch statement containing the lines: (the first line is a bit different as of kernel 1.1.73)

switch (type = scsi_result[0])
{
      case TYPE_TAPE :
      case TYPE_DISK :
      case TYPE_MOD :
        ** add this: **
      case 3 :
        SDpnt->writeable = 1;
        break;

You'll need to add "case 3:" as indicated above; you'll also need to add the HP scanner to the SCSI blacklist near the top of the file:

static struct blist blacklist[] =
{
        :       :         :
        : lots of entries :
        {"HP", "C1750A", "3226"},
        {"HP", "C2500A", "????"},
        {"HP", "C2570A", "3406"},
        {NULL, NULL, NULL}};
}

The program is smart enough to autoprobe for your Scanjet and won't try, for example, to read your disk drive.

Generic SCSI got broken in the late 1.1.70's and didn't get fixed again until the late .80's. All of the patches listed above are in the current kernel (as of 1.1.94) *except* for the "C2570A" blacklist entry which is for the ScanJet 3p.

Hpux notes

On the 700 series, use the following command:

mknod /dev/scanner c 105 0x201<N>00
(where N is the SCSI #)

You might also want to do a 'chmod 666 /dev/scanner' to allow everyone to access the scanner.

Compile with this command:

cc +O3 -Aa -D_HPUX_SOURCE hpscanpbm.c

(Please direct HPUX questions to John Fehr.)

Credits

HPUX Port by John Fehr ([email protected])

Little hacks by Steve Enns ([email protected]), including the -xres, -yres, -s, and -l options.

Thanks to Les Johnson ([email protected]) for suggesting some Linux documentation clarifications.

Manual page written by Johnie Ingram ([email protected]).

Releases

6 releases since Debian 1.2 (Rex); the text changed 1 time.

  1. 1.2
  2. 1.3–3.0

Availability

The most recent released version of hpscanpbm is available for anonymous FTP from ftp.debian.org in the directory /debian/unstable/source/graphics. Binaries compiled for a number of Linux architectures are also available from this site.

From hpscanpbm 0.3a-11 in Debian 3.0 (Woody). Parsed by carta from the page's man source.