.TH SGINFO "8" "January 2014" "sg3_utils\-1.38" SG3_UTILS
.SH NAME
sginfo \- access mode page information for a SCSI (or ATAPI) device
.SH SYNOPSIS
.B sginfo
[\fIOPTIONS\fR]
[\fIDEVICE\fR]
[\fIREPLACEMENT_PARAMETERS\fR]
.SH DESCRIPTION
.\" Add any additional description here
.PP
sginfo is a port of the Linux
.B scsiinfo
program by Eric Youngdale. It uses SCSI generic (sg) devices; however 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
This utility is in legacy mode, only obvious bugs will be fixed. Options
like \fI\-l\fR (to list devices) are broken in recent versions of
Linux (e.g. 2.6 series and later); the lsscsi(8) utility can be used
instead. Also mode pages are not being updated as http://www.t10.org
adds and modifies mode page fields. Those interested in SCSI mode pages
may find the
.B sdparm
utility more up to date and easier use, especially for changing parameters.
.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/5), 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\-4 (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 \fIDEVICE\fR 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.
.SH OPTIONS
.TP
\fB\-6\fR
Perform 6 byte MODE SENSE and MODE SELECT commands; by default the
10 byte variants are used.
.TP
\fB\-a\fR
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
\fB\-A\fR
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
\fB\-c\fR
Access information in the Caching mode page.
.TP
\fB\-C\fR
Access information in the Control mode Page.
.TP
\fB\-d\fR
Display defect lists (default format: index).
.TP
\fB\-D\fR
Access information in the Disconnect\-Reconnect mode page.
.TP
\fB\-e\fR
Access information in the Error Recovery mode page.
.TP
\fB\-E\fR
Access information in the Control Extension mode page.
.TP
\fB\-f\fR
Access information in the Format Device mode page.
.TP
\fB\-F\fR\fIarg\fR
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
\fB\-g\fR
Access information in the Rigid Disk Drive Geometry mode page.
.TP
\fB\-G\fR
Display grown defect list (default format: index).
.TP
\fB\-i\fR
Display the response to a standard INQUIRY command.
.TP
\fB\-I\fR
Access the Informational Exceptions mode page.
.TP
\fB\-l\fR
Deprecated. Only use in old versions of Linux (e.g. 2.4 and
earlier). Please use lsscsi(8) in the Linux 2.6 series and
later. List known SCSI devices on the system.
.TP
\fB\-n\fR
Access information in the Notch and Partition mode page.
.TP
\fB\-N\fR
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
\fB\-P\fR
Access information in the Power Condition mode page.
.TP
\fB\-r\fR
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
\fB\-s\fR
Display information in the unit serial number page which is a
INQUIRY command variant.
.TP
\fB\-t\fR \fIPN\fR[,\fISPN\fR]
Display information from mode page number \fIPN\fR (and optionally sub
page number \fISPN\fR) in decoded format (if known, otherwise in hex form).
\fIPN\fR is a mode page number in a decimal number from 0 to 63 inclusive.
\fISPN\fR is the mode subpage number and is assumed to be 0 if not given.
\fISPN\fR 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 \fIPN\fR and \fISPN\fR (both prefixed by '0x').
.TP
\fB\-T\fR
Trace commands to obtain more verbose output (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
\fB\-u\fR \fIPN\fR[,\fISPN\fR]
Display information from mode page number \fIPN\fR (and optionally \fISPN\fR)
in hex form. \fIPN\fR is a mode page number in a decimal number from 0 to 63
inclusive. \fISPN\fR is the mode subpage number and is assumed to be 0 if
not given. \fISPN\fR 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 \fIPN\fR and \fISPN\fR (both prefixed by '0x'). For example 63 and
0x3f are equivalent.
.TP
\fB\-v\fR
Display version string then exit. [N.B. This option increases verbosity for
most other utilities in this package as outlined in 'man 8 sg3_utils'.
This odd usage is for backward compatibility with the scsiinfo utility.]
.TP
\fB\-V\fR
Access information in the Verify Error Recovery mode page. [N.B. This
option prints the version string then exits in most other utilities in
this package as outlined in 'man 8 sg3_utils'. This odd usage is for
backward compatibility with the scsiinfo utility.]
.TP
\fB\-z\fR
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.
.SH ADVANCED OPTIONS
Only one of the following three options can be specified.
None of these three implies the current values are returned.
.TP
\fB\-m\fR
Display modifiable fields instead of current values
.TP
\fB\-M\fR
Display manufacturer's defaults instead of current values
.TP
\fB\-S\fR
Display saved defaults instead of current values
.PP
The following are advanced options, not generally suited for most users:
.TP
\fB\-X\fR
Display output values in a list. Make them suitable for editing and
being given back to the '\-R' (replace command).
.TP
\fB\\-R\fR
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 current mode page but not the corresponding 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 mode page values, each line is
prefixed by "sginfo \-t \fIPN\fR[,\fISPN\fR] \-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 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\-4 (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 display of defect lists especially. sginfo was written by Douglas
Gilbert with patches from Kurt Garloff. This manpage corresponds with
version 2.25 of sginfo.
.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 lsscsi(lsscsi), scsiinfo(internet); sg_modes, sg_inq, sg_vpd (sg3_utils),
.B sdparm(sdparm)
