.TH SG_VPD "8" "February 2016" "sg3_utils\-1.42" SG3_UTILS
.SH NAME
sg_vpd \- fetch SCSI VPD page and/or decode its response
.SH SYNOPSIS
.B sg_vpd
[\fI\-\-all\fR] [\fI\-\-enumerate\fR] [\fI\-\-help\fR] [\fI\-\-hex\fR]
[\fI\-\-ident\fR] [\fI\-\-inhex=FN\fR] [\fI\-\-long\fR] [\fI\-\-maxlen=LEN\fR]
[\fI\-\-page=PG\fR] [\fI\-\-quiet\fR] [\fI\-\-raw\fR] [\fI\-\-vendor=VP\fR]
[\fI\-\-verbose\fR] [\fI\-\-version\fR] [\fIDEVICE\fR]
.SH DESCRIPTION
.\" Add any additional description here
.PP
This utility, when \fIDEVICE\fR is given, fetches a Vital Product Data (VPD)
page and decodes it or outputs it in ASCII hexadecimal or binary. VPD pages
are fetched with a SCSI INQUIRY command.
.PP
Alternatively the \fI\-\-inhex=FN\fR option can be given. In this case
\fIFN\fR is assumed to be a file name ('\-' for stdin) containing ASCII
hexadecimal representing a VPD page response. If the \fI\-\-raw\fR option
is also given then binary input is assumed (rather than ASCII hexadecimal).
.PP
Probably the most important page is the Device Identification
VPD page (page number: 0x83). Since SPC\-3, support for this page
has been flagged as mandatory. This page can be fetched by
using the \fI\-\-ident\fR option.
.PP
The reference document used for interpreting VPD pages (and the INQUIRY
standard response) is T10/BSR INCITS 502 Revision 08 which is draft SPC\-5
revision 08, 25 January 2016). It can be found at http://www.t10.org .
.PP
When no options are given, other than a \fIDEVICE\fR, then the "Supported
VPD pages" (0x0) VPD page is fetched and decoded.
.SH OPTIONS
Arguments to long options are mandatory for short options as well.
The options are arranged in alphabetical order based on the long
option name.
.TP
\fB\-a\fR, \fB\-\-all\fR
decode all VPD pages. When used with \fIDEVICE\fR the pages to be decoded
are found in the "Supported VPD pages" VPD page. Pages that cannot be
decoded are displayed in hex; add the \fI\-\-long\fR option to have ASCII
displayed to the right of each line of hex.
.br
If this option is used with the \fI\-\-inhex=FN\fR option then the file
\fIFN\fR is assumed to contain 1 or more VPD pages (in ASCII hex or binary).
Decoding continues until the file is exhausted (or an error occurs). Sanity
checks are aplied on each VPD page's length and the ascending order of VPD
page numbers (required by SPC\-4) so bad data may be detected.
.br
If the \fI\-\-page=PG\fR option is also given then no VPD page whose page
number is greater than \fIPG\fR (or its numeric equivalent) is decoded.
.TP
\fB\-e\fR, \fB\-\-enumerate\fR
list the names of the known VPD pages, first the standard pages (i.e.
those defined by T10), then the vendor specific pages. Each group is sorted
in abbreviation order. The \fIDEVICE\fR and most other options are ignored
and this utility exits after listing the VPD page names. May be used together
with \fI\-\-page=PG\fR where \fIPG\fR is numeric. If so, it searches for the
summary lines of all VPD pages whose number matches \fIPG\fR. May be used
with \fI\-\-vendor=VP\fR to restrict output to known vendor specific pages
for vendor/product \fIVP\fR.
.TP
\fB\-h\fR, \fB\-\-help\fR
outputs the usage message summarizing command line options then exits.
Ignores \fIDEVICE\fR if given.
.TP
\fB\-H\fR, \fB\-\-hex\fR
outputs the requested VPD page in ASCII hexadecimal. Can be used multiple
times, see section on the ATA information vpd page.
.br
To generate output suitable for placing in a file that can be used by a
later invocation with the \fI\-\-inhex=FN\fR option, use the '\-HHHH'
option (e.g. 'sg_vpd \-p di \-HHHH /dev/sg3 > dev_id.hex'). The
reason '\-HHHH' is used is to flag that unadorned hexadecimal (without other
text or address offsets) is sent to stdout.
.TP
\fB\-i\fR, \fB\-\-ident\fR
decode the device identification (0x83) VPD page. When used once this option
has the same effect as '\-\-page=di'. When use twice then the short form of
the device identification VPD page's logical unit designator is decoded. In
the latter case this option has the same effect as '\-\-quiet \-\-page=di_lu'.
.TP
\fB\-I\fR, \fB\-\-inhex\fR=\fIFN\fR
\fIFN\fR is expected to be a file name (or '\-' for stdin) which contains
ASCII hexadecimal or binary representing a VPD page (or a standard INQUIRY)
response. This utility will then decode that response. It is preferable to
also supply the \fI\-\-page=PG\fR option, if not this utility will attempt
to guess which VPD page (or standard INQUIRY) the response is associated
with. The hexadecimal should be arranged as 1 or 2 digits representing a
byte each of which is whitespace or comma separated. Anything from and
including a hash mark to the end of line is ignored. If the \fI\-\-raw\fR
option is also given then \fIFN\fR is treated as binary.
.TP
\fB\-l\fR, \fB\-\-long\fR
when decoding some VPD pages, give a little more output. For example the ATA
Information VPD page only shows the signature (in hex) and the IDENTIFY
(PACKET) DEVICE (in hex) when this option is given.
.TP
\fB\-m\fR, \fB\-\-maxlen\fR=\fILEN\fR
where \fILEN\fR is the (maximum) response length in bytes. It is placed in the
cdb's "allocation length" field. If not given (or \fILEN\fR is zero) then
252 is used (apart from the ATA Information VPD page which defaults to 572)
and, if the response indicates this value is insufficient, another INQUIRY
command is sent with a larger value in the cdb's "allocation length" field.
If this option is given and \fILEN\fR is greater than 0 then only one INQUIRY
command is sent. Since many simple devices implement the INQUIRY command
badly (and do not support VPD pages) then the safest value to use for
\fILEN\fR is 36. See the sg_inq man page for the more information.
.TP
\fB\-p\fR, \fB\-\-page\fR=\fIPG\fR
where \fIPG\fR is the VPD page to be decoded or output. The \fIPG\fR argument
can either be an abbreviation, a number or a pair or numbers/abbreviations
separated by a comma. The VPD page abbreviations can be seen by using the
\fI\-\-enumerate\fR option. If a number is given it is assumed to be decimal
unless it has a hexadecimal indicator which is either a leading '0x' or a
trailing 'h'. If one number is given then it is assumed to be a VPD page
number. If two numbers (or abbreviations) are given then the second one is
the same as \fIVP\fR (see the \fI\-\-vendor=VP\fR option). If this option
is not given (nor '\-i', '\-l' nor '\-V') then the "Supported VPD pages" (0x0)
VPD page is fetched and decoded. If \fIPG\fR is '\-1' or 'sinq' then the
standard INQUIRY response is output. This option may also be used with the
\fI\-\-enumerate\fR (see its description).
.TP
\fB\-q\fR, \fB\-\-quiet\fR
suppress the amount of decoding output.
.TP
\fB\-r\fR, \fB\-\-raw\fR
if not used with \fI\-\-inhex=FN\fR then output requested VPD page in binary.
The output should be piped to a file or another utility when this option is
used. The binary is sent to stdout, and errors are sent to stderr.
.br
if used with \fI\-\-inhex=FN\fR then the contents of \fIFN\fR is treated as
binary.
.TP
\fB\-M\fR, \fB\-\-vendor\fR=\fIVP\fR
where \fIVP\fR is a vendor (e.g. "sea" for Seagate) or vendor/product
acronym (e.g. "hp3par" for the 3PAR array from HP). Many vendors have re-used
the numbers at the beginning of the vendor specific VPD page range (e.g.
page 0xc0) and this option is a way of selecting only those which are of
interest. Using a \fIVP\fR of "xxx" will list the available acronyms.
.br
If this option is used with \fI\-\-page=PG\fR and \fIPG\fR is an acronym
then this option is ignored. If \fIPG\fR is a number (e.g. 0xc0) then
\fIVP\fR is used to choose the which vendor specific page (e.g. sharing
page number 0xc0) to decode.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
increases the level or verbosity.
.TP
\fB\-V\fR, \fB\-\-version\fR
print out version string then exit.
.SH ATA INFORMATION VPD PAGE
This VPD page (0x89 or 'ai') is defined by the SCSI to ATA Translation
standard. It contains information about the SAT layer, the "signature" of
the ATA device and the response to the ATA IDENTIFY (PACKET) DEVICE
command. The latter part has 512 bytes of identity, capability and
settings data which the hdparm utility is capable of decoding (so this
utility doesn't decode it).
.PP
To unclutter the output for this page, the signature and the IDENTIFY (PACKET)
DEVICE response are not output unless the \fI\-\-long\fR option (or
\fI\-\-hex\fR or \fI\-\-raw\fR) are given. When the \fI\-\-long\fR option
is given the IDENTIFY (PACKET) DEVICE response is output as 256 (16 bit)
words as is the fashion for ATA devices. To see that response as a string of
bytes use the '\-HH' option. To format the output suitable for hdparm to
decode use either the '\-HHH' or '\-rr' option. For example if 'dev/sdb' is
a SATA disk behind a SAT layer then this
command: 'sg_vpd \-p ai \-HHH /dev/sdb | hdparm \-\-Istdin'
should decode the ATA IDENTIFY (PACKET) DEVICE response.
.SH NOTES
Since some VPD pages (e.g. the Extended INQUIRY page) depend on settings
in the standard INQUIRY response, then the standard INQUIRY response is
output as a pseudo VPD page when \fIPG\fR is set to '\-1' or 'sinq'. Also
the decoding of some fields (e.g. the Extended INQUIRY page's SPT field)
is expanded when the '\-\-long' option is given using the standard INQUIRY
response information (e.g. the PDT and the PROTECT fields).
.PP
In the 2.4 series of Linux kernels the \fIDEVICE\fR must be
a SCSI generic (sg) device. In the 2.6 series block devices (e.g. disks
and ATAPI DVDs) can also be specified. For example "sg_inq /dev/sda"
will work in the 2.6 series kernels. From lk 2.6.6 other SCSI "char"
device names may be used as well (e.g. "/dev/st0m").
.PP
The \fIDEVICE\fR is opened with a read\-only flag (e.g. in Unix with the
O_RDONLY flag).
.SH EXIT STATUS
The exit status of sg_vpd is 0 when it is successful. Otherwise see
the sg3_utils(8) man page.
.SH EXAMPLES
The examples in this page use Linux device names. For suitable device
names in other supported Operating Systems see the sg3_utils(8) man page.
.PP
To see the VPD pages that a device supports, use with no options. The
command line invocation is shown first followed by a typical response:
.PP
   # sg_vpd /dev/sdb
.br
Supported VPD pages VPD page:
.br
  Supported VPD pages [sv]
.br
  Unit serial number [sn]
.br
  Device identification [di]
.br
  Extended inquiry data [ei]
.br
  Block limits (SBC) [bl]
.PP
To see the VPD page numbers associated with each supported page then
add the '\-\-long' option to the above command line. To view a
VPD page either its number or abbreviation can be given to
the '\-\-page=' option. The page name abbreviations are shown within
square brackets above. In the next example the Extended inquiry data
VPD page is listed:
.PP
   # sg_vpd \-\-page=ei /dev/sdb
.br
extended INQUIRY data VPD page:
.br
  ACTIVATE_MICROCODE=0 SPT=0 GRD_CHK=0 APP_CHK=0 REF_CHK=0
.br
  UASK_SUP=0 GROUP_SUP=0 PRIOR_SUP=0 HEADSUP=1 ORDSUP=1 SIMPSUP=1
.br
  WU_SUP=0 CRD_SUP=0 NV_SUP=0 V_SUP=0
.br
  P_I_I_SUP=0 LUICLR=0 R_SUP=0 CBCS=0
.br
  Multi I_T nexus microcode download=0
.br
  Extended self\-test completion minutes=0
.br
  POA_SUP=0 HRA_SUP=0 VSA_SUP=0
.PP
To check if any protection types are supported by a disk use the '\-\-long'
option on the Extended inquiry data VPD page:
.PP
   # sg_vpd \-\-page=ei \-\-long /dev/sdb
.br
   extended INQUIRY data VPD page:
.br
     ACTIVATE_MICROCODE=0
.br
     SPT=1 [protection types 1 and 2 supported]
.br
     GRD_CHK=1
.br
     ....
.PP
Search for the name (and acronym) of all pages that share VPD page number
0xb0 .
.PP
   # sg_vpd \-\-page=0xb0 \-\-enumerate
.br
   Matching standard VPD pages:
.br
     bl         0xb0      Block limits (SBC)
.br
     oi         0xb0      OSD information
.br
     sad        0xb0      Sequential access device capabilities (SSC)
.PP
Some examples follow using the "\-\-all" option. Send an ASCII hexadecimal
representation of all VPD pages to a file:
.PP
   # sg_vpd \-\-all \-HHHH /dev/sg3 > all_vpds.hex
.PP
At some later time that file could be decoded with:
.PP
   # sg_vpd \-\-all \-\-inhex=all_vpds.hex
.PP
To do the equivalent as the previous example but use a file containing
binary:
.PP
   # sg_vpd \-\-all \-\-raw /dev/sg3 > all_vpds.bin
.br
   # sg_vpd \-\-all \-\-raw \-\-inhex=all_vpds.bin
.PP
Notice that "\-\-raw" must be given with the second (\-\-inhex) invocation
to alert the utility that all_vpds.bin contains binary as it assumes ASCII
hexadecimal by default. Next we only decode T10 specified VPD pages
excluding vendor specific VPD pages that start at page number 0xc0:
.PP
   # sg_vpd \-\-all \-\-page=0xbf \-\-raw \-\-inhex=all_vpds.bin
.PP
Further examples can be found on the http://sg.danny.cz/sg/sg3_utils.html
web page.
.SH AUTHOR
Written by Douglas Gilbert
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2006\-2016 Douglas Gilbert
.br
This software is distributed under a FreeBSD license. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B sg_inq(sg3_utils), sg3_utils(sg3_utils), sdparm(sdparm), hdparm(hdparm)
