This tiny program snoops accesses to devices and prints the device commands
as well as the answers of the device over the serial port. Its outputs can
be made visible either by an external terminal, connected to the serial port
at 9600 baud, 8 bit, 1 stop bit, or by the standard tool Sushi or its re-
SCSISnoop mainly useful to debug hardware drivers and filing systems; it
is mainly intended to make SCSI device commands visible, even though it
knows all standard scsi.device and the TD64 and NSD commands as well.
If a SCSI command is issued, SCSISnoop prints the full command name if
available, even though it does not yet attempt to make its parameters
Changes made for 1.08:
- Many SCSI commands are now decoded by name.
- For read type commands, it prints now the number
of received bytes, not the number of requested
- In case the output is truncated, SCSISnoop prints
now the total number of bytes received.
Changes made for 1.05:
- Added the ADRMASK, LENMASK and MINLEN options to filter out only
interesting IO transfers.
- Added the PLAINIO switch to disable snooping all enhanced device
features like SCSI direct IO.
- SCSISnoop does no longer print the IO data in case MAXDUMP is set
- SCSISnoop forgot to print the IO data for some commands as TD_READ64.
- SCSISnoop haven't kept NSD apart from TD64, and printed both as TD64
- SCSISnoop did not snoop some of the 64 bit read commands.
Thanks to Niels for the suggestions!
Changes made for 1.01:
- The maximal size of the dumped data is now adjustable by the MAXDUMP
- SCSISnoop prints now an ellipsis "..." in case the data is longer than
the size selected by MAXDUMP and SCSISnoop cut the data size down.
SCSIONLY If this switch is given, SCSISnoop prints only HD_SCSICMDs
and the device replies; standard exec commands are not
FILTERRW If set, SCSISnoop filters the SCSI READ(6/10), WRITE(6/10)
WRITE_AND_VERIFY(6/10) commands out, they are not snooped.
DEVICE This specifies the name of the exec device to be snooped,
UNIT The unit number to snoop. This is in most cases the SCSI
ID of the device to be snooped.
FLAGS A flags value for opening the device. This defaults to zero
and should be left alone in most cases.
MAXDUMP The maximal number of bytes SCSISnoop dumps over the line,
defaults to 64.
ADRMASK Dumps the IO transfer only if the base address of the buffer
and-ed with this mask is non-null. Hence, you may log
transfers to odd addresses only by setting this mask to 1.
Defaults to -1, i.e. log all addresses.
LENMASK Dumps the IO transfer only if the transfer lenght of the
request and-ed with this mask is non-null. Defaults to -1.
MINLEN Dumps the IO transfer only if the lenght of the request is
larger than this size. Defaults to 0, i.e. dump everything.
PLAINIO Dump only standard IO request and leave all extensions like
SCSI DIRECT alone. Only exec requests like READ and WRITE and
their 64 bit extensions are logged. MOTOR or SEEK commands,
and SCSI DIRECT commands are ignored.
The THOR-Software Licence (v2, 24th June 1998)
This License applies to the computer programs known as "SCSISnoop".
The "Program", below, refers to such program. The "Archive" refers to
the package of distribution, as prepared by the author of the Program,
Thomas Richter. Each licensee is addressed as "you".
The Program and the data in the archive are freely distributable
under the restrictions stated below, but are also Copyright (c)
Distribution of the Program, the Archive and the data in the Archive by a
commercial organization without written permission from the author to any
third party is prohibited if any payment is made in connection with such
distribution, whether directly (as in payment for a copy of the Program) or
indirectly (as in payment for some service related to the Program, or
payment for some product or service that includes a copy of the Program
"without charge"; these are only examples, and not an exhaustive enumeration
of prohibited activities).
However, the following methods of distribution
involving payment shall not in and of themselves be a violation of this
(i) Posting the Program on a public access information storage and
retrieval service for which a fee is received for retrieving information
(such as an on-line service), provided that the fee is not
content-dependent (i.e., the fee would be the same for retrieving the same
volume of information consisting of random data).
(ii) Distributing the Program on a CD-ROM, provided that
a) the Archive is reproduced entirely and verbatim on such CD-ROM, including
especially this licence agreement;
b) the CD-ROM is made available to the public for a nominal fee only,
c) a copy of the CD is made available to the author for free except for
shipment costs, and
d) provided further that all information on such CD-ROM is redistributable
for non-commercial purposes without charge.
Redistribution of a modified version of the Archive, the Program or the
contents of the Archive is prohibited in any way, by any organization,
regardless whether commercial or non-commercial. Everything must be kept
together, in original and unmodified form.
THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO
WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
IF YOU DO NOT ACCEPT THIS LICENCE, YOU MUST DELETE THE PROGRAM, THE ARCHIVE
AND ALL DATA OF THIS ARCHIVE FROM YOUR STORAGE SYSTEM. YOU ACCEPT THIS
LICENCE BY USING OR REDISTRIBUTING THE PROGRAM.
Thomas Richter (April 2018)