.TH SGINFO "8" "April 2005" "sg3_utils-1.14" SG3_UTILS
.SH NAME
sginfo \- access mode page information for a SCSI (or ATAPI) device
.SH SYNOPSIS
.B sginfo
[\fI-options\fR]
[\fIdevice\fR]
[\fIreplacement_parameters\fR]
.SH DESCRIPTION
.\" Add any additional description here
.PP
sginfo is a port of the Linux scsiinfo program by Eric Youngdale. It 
uses SCSI generic (sg) devices. In some cases the high level device 
name (i.e. sd, sr, st, osst, or hd) can also be used. The primary role
of this program is to access mode page information. If permitted,
mode page information can be altered. In addition information from
the INQUIRY and READ DEFECTS commands are also available.
.PP
Four sets of values are maintained by a SCSI device for each mode
page: current (active), default (manufacturer's supplied values),
saved (values that are retained if the SCSI device is powered down),
and changeable (mask indicating those values that can be changed).
By default when a mode page is displayed the current values are
shown. This can be overridden by "-M" (defaults), "-S" (saved)
or "-m" (modifiable (i.e. changeable)).
.PP
Many mode pages are decoded: for disks (see SBC-2), for CD/DVDs (see
MMC-2/3/4), for tapes (see SSC-2) and for enclosures (see SES-2).
Some mode pages common to all SCSI peripheral device types are defined
in SPC-3 (primary commands). A decoded mode page has its field names
in the first column and the corresponding value in the second column.
A "hex" mode page (and subpage) has its byte position in the first 
column (in hex and starting at 0x2) and the corresponding hex value
in the second column. Decoded pages can be viewed with the '-t' option
or with a specific option (e.g. 'c' for the caching mode page). 
Naturally decoded pages must be supplied by the given device and
recognised by this program. If supported by the device, decoded pages
may be modified. All mode pages (and subpages) that the device supports
can be viewed in hex (and potentially modified) via the "-u" option
.PP
If no options are given that will cause mode page(s) or INQUIRY data
to be printed out, then a brief INQUIRY response is output. This
includes the vendor, product and revision level of the device.
.TP
-6
Perform 6 byte MODE SENSE and MODE SELECT commands; by default the
10 byte variants are used.
.TP
-a
Display some INQUIRY data and the unit serial number followed by
all mode pages reported by the device. It is similar to 
the '-t 0x3f' option. If the mode page is known then it is output
in decoded form otherwise it is output in hexadecimal.
.TP
-A
Display some INQUIRY data and the unit serial number followed by
all mode pages and all mode subpages reported by the device.
It is similar to the '-t 0x3f,0xff' option. If a mode (sub)page 
is known then it is output in decoded form otherwise it is output in
hexadecimal.
.TP
-c
Access information in the Caching mode page.
.TP
-C
Access information in the Control mode Page.
.TP
-d
Display defect lists (default format: index).
.TP
-D
Access information in the Disconnect-Reconnect mode page.
.TP
-e
Access information in the Error Recovery mode page.
.TP
-E
Access information in the Control Extension mode page.
.TP
-f
Access information in the Format Device mode page.
.TP
-Farg
Format of the defect lists:
                -Flogical  - logical block addresses (32 bit)
                -Flba64    - logical block addresses (64 bit)
                -Fphysical - physical blocks
                -Findex    - defect bytes from index
                -Fhead     - sort by head 
.br
Used in conjunction with "-d" or "-G". If a format is not given "index" is
assumed.
.TP
-g
Access information in the Rigid Disk Drive Geometry mode page.
.TP
-G
Display grown defect list (default format: index).
.TP
-i
Display the response to a standard INQUIRY command.
.TP
-I
Access the Informational Exceptions mode page.
.TP
-l
List known SCSI devices on the system.
.TP
-n
Access information in the Notch and Partition mode page.
.TP
-N
Negate (i.e. stop) mode page changes being placed in the "saved"
page (by default changes go to the current and the saved page).
Only active when used together with '-R'.
.TP
-P
Access information in the Power Condition mode page.
.TP
-r
Display all raw (or primary) SCSI device names visible in the /dev
directory. Examples are /dev/sda, /dev/st1 and /dev/scd2. Does not
list sg device names so devices such as a SCSI enclosure which only
have an sg device name are not listed.
.TP
-s
Display information in the unit serial number page which is a
INQUIRY command variant.
.TP
-t <pn[,spn]>
Display information from mode page number <pn> (and optionally sub
page number <spn>) in decoded format (if known, otherwise in hex form).
<pn> is a mode page number in a decimal number 
from 0 to 63 inclusive. "spn" is the mode subpage
number and is assumed to be 0 if not given. "spn" is a
decimal number from 1 to 255 inclusive. A page number of 63
returns all pages supported by the device in ascending order
except for page 0 which, if present, is last. Page 0 is vendor
specific and not necessarily in mode page format.
Alternatively hex values can be given for both <pn> and <spn> (both
prefixed by '0x'). 
.TP
-T
Trace commands (for debugging). When used once SCSI commands are shown
(in hex) and any errors from these SCSI commands are spelt out (i.e.
with a decoded and raw sense buffer). When used twice, the additional 
data sent with mode select and the response from mode sense are 
shown (in hex).
.TP
-u <pn[,spn]>
Display information from mode page number <pn> (and optionally <spn>)
in hex form. <pn> is a mode page number in a decimal number 
from 0 to 63 inclusive. "spn" is the mode subpage
number and is assumed to be 0 if not given. "spn" is a
decimal number from 1 to 255 inclusive. A page number of 63
returns all pages supported by the device in ascending order
except for page 0 which, if present, is last. Page 0 is vendor
specific and not necessarily in mode page format.
Alternatively hex values can be given for both <pn> and <spn> (both
prefixed by '0x'). For example 63 and 0x3f are equivalent.
.TP
-v
Show version number and exit.
.TP
-V
Access information in the Verify Error Recovery mode page.
.TP
-z
do a single fetch for mode pages (over-estimating the expected length
of the returned response). The default action is to do a double 
fetch, the first fetch is to find the response length that could be
returned. Devices that closely adhere to SCSI standards should not
require this option, some real world devices do require it.
.PP
Only one of the following three options can be specified.
None of these three implies the current values are returned.
.TP
-m
Display modifiable fields instead of current values
.TP
-M
Display manufacturer's defaults instead of current values
.TP
-S
Display saved defaults instead of current values
.PP
The following are advanced options, not generally suited for most users:
.TP
-X
Display output values in a list. Make them suitable for editing and
being given back to the '-R' (replace command).
.TP
-R
Replace parameters - best used with -X (expert use only)
.SH CHANGING MODE PAGE PARAMETERS
Firstly you should know what you are doing before changing existing
parameters. Taking the control page as an example, first list it out 
normally (e.g. "sginfo -C /dev/sda") and
decide which parameter is to be changed (note its position relative
to the other lines output). Then execute the same sginfo command with
the "-X" option added; this will output the parameter values in a
single row in the same relative positions as the previous command. Now
execute "sginfo -CXR /dev/sda ..." with the "..." replaced by the
single row of values output by the previous command, with the relevant
parameter changed. Here is a simplified example:
.PP
   $ sginfo -C /dev/sda
.br
   Control mode page (0xa)
.br
   -----------------------
.br
   TST                        0
.br
   D_SENSE                    0
.br
   GLTSD                      1
.br
   RLEC                       0
.PP
[Actually the Control page has more parameters that shown above.] Next
output those parameters in single line form:
.PP
   $ sginfo -CX /dev/sda
.br
   0 0 1 0
.PP
Let us assume that the GLTSD bit is to be cleared. The command that
will clear it is:
.PP
   $ sginfo -CXR /dev/sda 0 0 0 0
.PP
The same number of parameters output by the "-CX" command needs to be
placed at the end of the "-CXR" command line (after the device name).
Now check that the change took effect:
.PP
   $ sginfo -C /dev/sda
.br
   Control mode page (0xa)
.br
   -----------------------
.br
   TST                        0
.br
   D_SENSE                    0
.br
   GLTSD                      0
.br
   RLEC                       0
.PP
When a mode page is "replaced" the default action is to change both the 
current page and the saved page. [For some reason versions of sginfo and
scsiinfo prior to 2.0 did not change the "saved" page.] To change only
the cuurent mode page but not the coresponding saved page use the "-N" 
option.
.PP
.SH GENERATING SCRIPT FILES AND HEX PAGES
The "-aX" or "-AX" option generates output suitable for a script file.
Mode pages are output in list format (after the INQUIRY and serial
number) one page per line. To facilitate running the output as (part
of) a script file to assert chosen modpe page values, each line is 
prefixed by "sginfo -t <pn>[,<spn>] -XR ". When such a script
file is run, it will have the effect of re-asserting the mode
page values to what they were when the "-aX" generated the output.
.PP
All mode pages (and subpages) supported by the device can be accessed via
the -t and -u options. To see all
mode pages supported by the device use "-u 63". [To see all mode pages
and all subpages use "-u 63,255".] To list the control mode page in
hex (mode page index in the first column and the corresponding byte
value in the second column) use "-u 0xa". Mode pages (subpage code == 0)
start at index position 2 while subpages start at index position 4.
If the "-Xu ..." option is used then a list a hex values each value
prefixed by "@" is output. Mode (sub)page values can then be modified with
with the "-RXu ..." option. 
.PP
.SH RESTRICTIONS
The SCSI MODE SENSE command yields block descriptors as well as a mode
page(s). This utility ignores block descriptors and does not display
them. The "disable block descriptor" switch (DBD) in the MODE SENSE command
is not set since some devices yield errors when it is set. When mode page
values are being changed (the "-R" option), the same block descriptor
obtained by reading the mode page (i.e. via a MODE SENSE command) is sent
back when the mode page is written (i.e. via a MODE SELECT command).
.PP
.SH REFERENCES
SCSI (draft) standards can be found at http://www.t10.org . The relevant
documents are SPC-3 (mode pages common to all device types),
SBC-2 (direct access devices [e.g. disks]), MMC-4 (CDs and DVDs) and
SSC-2 (tapes).
.PP
.SH AUTHORS
Written by Eric Youngdale, Michael Weller, Douglas Gilbert, Kurt Garloff,
Thomas Steudten
.PP
.SH HISTORY
scsiinfo version 1.0 was released by Eric Youngdale on 1st November 1993.
The most recent version of scsiinfo is version 1.7 with the last patches
by Michael Weller. sginfo is derived from scsiinfo and uses the sg
interface to get around the 4 KB buffer limit in scsiinfo that cramped
the diplay of defect lists especially. sginfo was written by Douglas 
Gilbert with patches from Kurt Garloff. This manpage corresponds with
version 2.01 of sginfo. It may be backported (or just copied) soon to
become scsiinfo 2.01 .
.PP
This software is distributed under the GPL version 2. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B plscsi(internet), scsiinfo(internet), sg_modes(sg3_utils),
.B sg_inq(sg3_utils)
.PP
plscsi can sent arbitrary (user supplied) SCSI commands; scsiinfo is the
predecessor of this utility; sg_modes is a low level MODE SENSE based
utility and sg_inq is specialised for the mandatory SCSI INQUIRY
command which contains a lot of information about advanced devices.
