.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 https://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 https://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)
