252 lines
8.1 KiB
Groff
252 lines
8.1 KiB
Groff
.\"
|
|
.\" Written By Julian ELischer
|
|
.\" Copyright julian Elischer 1993.
|
|
.\" Permission is granted to use or redistribute this file in any way as long
|
|
.\" as this notice remains. Julian Elischer does not guarantee that this file
|
|
.\" is totally correct for any given task and users of this file must
|
|
.\" accept responsibility for any damage that occurs from the application of this
|
|
.\" file.
|
|
.\"
|
|
.\" (julian@tfs.com julian@dialix.oz.au)
|
|
.\" User SCSI hooks added by Peter Dufault:
|
|
.\"
|
|
.\" Copyright (c) 1994 HD Associates
|
|
.\" (contact: dufault@hda.com)
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. The name of HD Associates
|
|
.\" may not be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\"
|
|
.\" $Id$
|
|
.\"
|
|
.Dd October 11, 1993
|
|
.Dt SCSI 8
|
|
.Os BSD 4
|
|
.Sh NAME
|
|
.Nm scsi
|
|
.Nd program to assist with scsi devices.
|
|
.Sh SYNOPSIS
|
|
.Bd -literal -offset
|
|
Usage:
|
|
scsi -f device -d debug_level # To set debug level
|
|
scsi -f device [-v] -z seconds # To freeze bus
|
|
scsi -f device -m page [-P pc] [-e] # To read mode pages
|
|
scsi -f device -p [-b bus] [-l lun] # To probe all devices
|
|
scsi -f device -r [-b bus] [-t targ] [-l lun] # To reprobe a device
|
|
scsi -f device [-v] [-s seconds] -c cmd_fmt [arg0 ... argn] # A command...
|
|
-o count out_fmt [arg0 ... argn] # EITHER (for data out)
|
|
-i count in_fmt # OR (for data in)
|
|
.Pp
|
|
"out_fmt" can be "-" to read output data from stdin;
|
|
"in_fmt" can be "-" to write input data to stdout;
|
|
.Pp
|
|
If debugging is not compiled in the kernel, "-d" will have no effect
|
|
.Ed
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm scsi
|
|
program is used to send commands to a scsi device. It is also
|
|
a sample usage of the user level SCSI commands.
|
|
.Pp
|
|
The
|
|
.Fr -d
|
|
option sets the SCSI kernel debug level. The kernel must have been compiled
|
|
with the
|
|
.Em SCSIDEBUG
|
|
option. See
|
|
.Fr /sys/scsi/scsi_debug.h
|
|
to figure out what to set the kernel debug level to.
|
|
.Pp
|
|
The
|
|
.Fr -z
|
|
option freezes all activity on all SCSI busses for a given number of
|
|
seconds. If
|
|
.Fr -v
|
|
is also specified then a BEL character is sent to the standard
|
|
output at the start and finish of the bus freeze.
|
|
This requires that the kernel be built with the SCSI_FREEZE kernel option.
|
|
This kernel code is not committed yet.
|
|
.Pp
|
|
The
|
|
.Fr -m
|
|
option is used to read a device mode page. The file
|
|
.Fr /usr/share/misc/scsi_modes
|
|
is read to look at for how to interpret the mode data. The environment
|
|
variable SCSI_MODES can specify a different file to use.
|
|
.Pp
|
|
.in +.25i
|
|
The
|
|
.Fr -P
|
|
option can be used to specify a page control field. The page control
|
|
fields are
|
|
.Bd -literal -offset
|
|
0 Current Values
|
|
1 Changeable Values
|
|
2 Default Values
|
|
3 Saved Values
|
|
.Ed
|
|
.Pp
|
|
The
|
|
.Fr -e
|
|
option permits you to edit the fields. It will use the editor specified
|
|
by your EDITOR environment variable. To store changes permanently,
|
|
edit page control 3 using the
|
|
.Fr -P
|
|
flag.
|
|
.in -.25i
|
|
.Pp
|
|
The
|
|
.Fr -p
|
|
option can be used against the "super scsi" device
|
|
.Fr /dev/scsi/super
|
|
to probe all devices with a given SCSI lun on a given SCSI bus.
|
|
The bus can be selected with the -b option and the default is 0.
|
|
The lun can be selected with the -l option and the default is 0.
|
|
See
|
|
.Xr scsi 4
|
|
for a description of the "super scsi" device.
|
|
.Pp
|
|
The
|
|
.Fr -r
|
|
option can be used in
|
|
.Tn FreeBSD
|
|
1.1 to reprobe a specific SCSI device at a given
|
|
Bus, Target and Lun.
|
|
This is not needed in
|
|
.Fx 2.1 ,
|
|
since opening a fixed SCSI device
|
|
has the side effect of reprobing it, and probing with the bus with the
|
|
-p option should bring on line any newly found devices.
|
|
See
|
|
.Xr scsi 4
|
|
for a description of fixed scsi devices.
|
|
.Pp
|
|
The
|
|
.Fr -c
|
|
option permits you to send user level SCSI commands specified on
|
|
the command line to a
|
|
device. The command is sent using the SCIOCCOMMAND ioctl, so the
|
|
device you are accessing must permit this ioctl. See
|
|
.Xr scsi 4
|
|
for full details of which minor devices permit the ioctl, and
|
|
.Xr scsi 3
|
|
for the full details on how to build up the commands and data phases
|
|
using the format arguments.
|
|
.in +.25i
|
|
.Pp
|
|
.Fr -v
|
|
turns on more verbose information.
|
|
.Pp
|
|
.Fr -s
|
|
sets the command timeout in seconds. The default is two seconds.
|
|
.Pp
|
|
.Fr "-c cmd_fmt"
|
|
specifies the command as described in
|
|
.Xr scsi 3 "."
|
|
The additional arguments provide values for any variables
|
|
specified in the command format.
|
|
.Pp
|
|
.Fr "-o count out_fmt arg0 ... argn"
|
|
indicates that this is a data out command (i.e., data will be sent from
|
|
the system to the device) with
|
|
.Fr count
|
|
bytes of data. The data out is built up using the facilities described in
|
|
.Xr scsi 3
|
|
using the provided arguments to fill in any integer variables.
|
|
.Fr out_fmt
|
|
can be specified as a hyphen ("-") to indicate that the
|
|
.Fr count
|
|
bytes of data should be read from the standard input.
|
|
.Pp
|
|
.Fr "-i count in_fmt"
|
|
indicates that this is a data in command (i.e., data will be read from
|
|
the device into the system) with
|
|
.Fr count
|
|
bytes of data read in. The information is extracted according to
|
|
.Fr in_fmt
|
|
using the facilities described in
|
|
.Xr scsi 3
|
|
and displayed on the standard output.
|
|
.Fr in_fmt
|
|
can be specified as a hyphen ("-") to indicate that the
|
|
.Fr count
|
|
bytes of data input should be written to the standard output.
|
|
.in -.25i
|
|
.Sh EXAMPLES
|
|
To verify that the device type for the disk /dev/rsd0c is 0
|
|
(direct access device):
|
|
.Bd -literal -offset
|
|
root# scsi -f /dev/rsd0c -c "12 0 0 0 64 0" -i 64 "*b3 b5"
|
|
0
|
|
.Ed
|
|
.Pp
|
|
To do an inquiry to /dev/rsd2c:
|
|
.Bd -literal -offset
|
|
root# scsi -f /dev/rsd2c -c "12 0 0 0 64 0" -i 64 "s8 z8 z16 z4"
|
|
FUJITSU M2654S-512 010P
|
|
.Pp
|
|
To edit mode page 1 on /dev/rsd2c, and store it permanently on the
|
|
drive:
|
|
.Bd -literal -offset
|
|
root# scsi -f /dev/rsd2c -m 1 -e -P 3
|
|
.Ed
|
|
.Pp
|
|
.Sh ENVIRONMENT
|
|
The SU_DEBUG_OUTPUT variable can be set to a file to send debugging
|
|
output to that file.
|
|
.Pp
|
|
The SU_DEBUG_LEVEL variable can be set to a non-zero integer to increase
|
|
the level of debugging. Currently this is a on or off thing; it should
|
|
perhaps use the ioctl to set the debug level in the kernel and then set
|
|
it back to zero at program exit.
|
|
.Pp
|
|
The SU_DEBUG_TRUNCATE variable can be set to an integer to limit the
|
|
amount of data phase output sent to the debugging file.
|
|
.Pp
|
|
The EDITOR variable determines the editor to use for the mode editor.
|
|
.Sh SEE ALSO
|
|
.Xr scsi 3 ,
|
|
.Xr scsi 4
|
|
.Sh BUGS
|
|
.Pp
|
|
This command wasn't ready for inclusion in 2.0R and so is missing in
|
|
that release.
|
|
.Pp
|
|
Some devices respond to an inquiry for all LUNS. This will cause them
|
|
to come on line to 8 times during reprobe to different logical units.
|
|
.Pp
|
|
The "-i" option to do an inquiry went away in 2.1. The new facilities
|
|
provided by "-c" supercede that.
|
|
.Pp
|
|
Check your permissions carefully.
|
|
"scsi -f /dev/rsd0c -c "4 0 0 0 0 0" permits anyone who can open
|
|
/dev/rsd0c to format the disk drive. This must be changed to
|
|
at least require write access to the drive.
|
|
.Sh HISTORY
|
|
The
|
|
.Nm scsi
|
|
command appeared in 386BSD 0.1.2.4/FreeBSD to support the new reprobe
|
|
and user SCSI commands.
|