[BACK]Return to README.ss CVS log [TXT][DIR] Up to [local] / sys / scsi

Annotation of sys/scsi/README.ss, Revision 1.1.1.1

1.1       nbrk        1: $OpenBSD: README.ss,v 1.6 1997/03/11 15:46:01 kstailey Exp $
                      2:
                      3: If you think SCSI tape drives are quirky you haven't seen anything.
                      4:
                      5: There are many SCSI scanners that don't use the SCSI Scanner protocol with
                      6: CDB's like SET_WINDOW.  Instead they send Esc-code sequences over the SCSI
                      7: bus using the READ and WRITE operations.  True brain death at its finest.
                      8: The HP ScanJet, the Sharp JX-600S and the Epson ES-300C are among these.
                      9:
                     10: Ricoh, UMAX, Mustek, Fujitsu, Microtek on the other hand all try to use the
                     11: SCSI scanner protocol, but scanning, unlike reading a block from a disk, is
                     12: a multi-step operation.  Certain steps must be performed in sequence and
                     13: the protocol does not define this.  In addition vendors are permitted by
                     14: the SCSI spec. to have unique additional features that the spec. does not
                     15: fully define.  Last but not least vendors make mistakes in implementing the
                     16: spec.
                     17:
                     18: My SCSI scanner driver architecture is designed to support scanners
                     19: two ways.
                     20:
                     21: The first way is used if a scanner uses CDB's like SET_WINDOW. The driver
                     22: code should be in ss.c and quirk tables and sequence strings etc. can
                     23: battle it out.  This part is not fully implemented yet.  Work is being done
                     24: on it from time to time.
                     25:
                     26: The other way is used when the driver is used with an Esc-code-over-SCSI
                     27: case like a ScanJet it installs an "operations switch" so that parts of the
                     28: code in ss.c can be bypassed.  This feature is implemented for ScanJets.
                     29: Currently some Mustek scanners use this approach, as the Mustek scanners
                     30: use MODE_SELECT and not SET_WINDOW to send parameter data.  However it is
                     31: possible that too much code was farmed out to ss_mustek.c; it may be that
                     32: common code for ssread() in ss.c could be used.
                     33:
                     34: Other Considerations
                     35:
                     36: SCSI disconnect is missing from many scanners.  Sucks huh?  A slow
                     37: peripheral that also monopolizes the bus.  This means that if your
                     38: scanner does not support disconnect you need a second SCSI controller
                     39: for it since access of the controller by any other devices will be
                     40: locked out while you are scanning.  Scanners that do this include
                     41: MUSTEK flatbed scanners MFS 06000CX and MFS 12000CX, UMAX UC-630 &
                     42: UG-630.  Over time, as multi-tasking becomes more important to
                     43: commoners^H^H^H^H^H^H^H^H^HWindoze users, scanner vendors often supply
                     44: new ROMs that can do disconnect.
                     45:
                     46: The image data from the scanner driver is currently supposed to resemble
                     47: headerless PBM "rawbits".  Depending on this is probably a bad idea
                     48: especially because it cannot always be attained.  The Fujutisu M3096G
                     49: grayscale data is photo-negative with repect to PBM and this cannot be
                     50: changed.  It would be better to extend the ioctl() interface to be able
                     51: to describe the kind of data that is available.
                     52:
                     53: Halftone control of scanners is missing, save for one pre-defined
                     54: selection.  This also should be in the ioctl() interface.
                     55:
                     56: Basic workflow for scanning
                     57:
                     58: 1. Open driver.
                     59: 2. ioctl to get parameters (this fills in default values and generally makes
                     60:    step 3 easier.)
                     61: 3. Modify parameters.
                     62: 4. ioctl to set parameters.
                     63: 5. ioctl to get data size (same as step 2, but values will be different if
                     64:    the image size, resolution, or image data type was set.)
                     65: 6. Read data based on size from scanner retrieved in step 5 (the driver
                     66:    delivers an EOF if you overread.)
                     67: 7. Close driver (or use ioctl to reset it so you can scan again.)

CVSweb