.TH SG_INQ "8" "January 2016" "sg3_utils\-1.42" SG3_UTILS
.SH NAME
sg_inq \- issue SCSI INQUIRY command and/or decode its response
.SH SYNOPSIS
.B sg_inq
[\fI\-\-ata\fR] [\fI\-\-block=0|1\fR] [\fI\-\-cmddt\fR]
[\fI\-\-descriptors\fR] [\fI\-\-export\fR] [\fI\-\-extended\fR]
[\fI\-\-help\fR] [\fI\-\-hex\fR] [\fI\-\-id\fR] [\fI\-\-inhex=FN\fR]
[\fI\-\-len=LEN\fR] [\fI\-\-maxlen=LEN\fR] [\fI\-\-page=PG\fR]
[\fI\-\-raw\fR] [\fI\-\-vendor\fR] [\fI\-\-verbose\fR]
[\fI\-\-version\fR] [\fI\-\-vpd\fR] \fIDEVICE\fR
.PP
.B sg_inq
[\fI\-36\fR] [\fI\-a\fR] [\fI\-A\fR] [\fI\-b\fR] [\fI\-\-B=0|1\fR] [\fI\-c\fR]
[\fI\-cl\fR] [\fI\-d\fR] [\fI\-e\fR] [\fI\-h\fR] [\fI\-H\fR] [\fI\-i\fR]
[\fI\-I=FN\fR] [\fI\-l=LEN\fR] [\fI\-m\fR] [\fI\-M\fR] [\fI\-o=OPCODE_PG\fR]
[\fI\-p=VPD_PG\fR] [\fI\-P\fR] [\fI\-r\fR] [\fI\-s\fR] [\fI\-u\fR] [\fI\-v\fR]
[\fI\-V\fR] [\fI\-x\fR] [\fI\-36\fR] [\fI\-?\fR] \fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
This utility, when \fIDEVICE\fR is given, sends a SCSI INQUIRY command to it
then outputs the response. All SCSI devices are meant to respond to
a "standard" INQUIRY command with at least a 36 byte response (in SCSI 2 and
higher). An INQUIRY is termed as "standard" when both the EVPD and CmdDt (now
obsolete) bits are clear.
.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 an INQUIRY response.
.PP
This utility supports two command line syntaxes. The preferred one is shown
first in the synopsis and is described in the main OPTIONS section. A later
section titled OLDER COMMAND LINE OPTIONS describes the second group of
options.
.PP
An important "non\-standard" INQUIRY page is the Device Identification
Vital Product Data (VPD) page [0x83]. Since SPC\-3, support for this page
is mandatory. The \fI\-\-id\fR option decodes this page. New VPD page
information is no longer being added to this utility. To get information
on new VPD pages see the sg_vpd(8) or sdparm(8) utilities.
.PP
In Linux, if the \fIDEVICE\fR exists and the SCSI INQUIRY fails (e.g. because
the SG_IO ioctl is not supported) then an ATA IDENTIFY (PACKET) DEVICE is
tried. If it succeeds then device identification strings are output. The
\fI\-\-raw\fR and \fI\-\-hex\fR options can be used to manipulate the output.
If the \fI\-\-ata\fR option is given then the SCSI INQUIRY is not performed
and the \fIDEVICE\fR is assumed to be ATA (or ATAPI).
.PP
The reference document used for interpreting an INQUIRY is T10/BSR INCITS
502 Revision 07 which is draft SPC\-5 revision 07, 26 November 2015). It can
be found at http://www.t10.org . Obsolete and reserved items in the standard
INQUIRY response output are displayed in brackets. The reference document for
the ATA IDENTIFY (PACKET) DEVICE command is ATA8\-ACS found at
http://www.t13.org .
.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\-\-ata\fR
Assume given \fIDEVICE\fR is an ATA or ATAPI device which can receive ATA
commands from the host operating system. Skip the SCSI INQUIRY command and
use either the ATA IDENTIFY DEVICE command (for non-packet devices) or the
ATA IDENTIFY PACKET DEVICE command. To show the response in hex, add
a '\-\-verbose' option. This option is only available in Linux.
.TP
\fB\-B\fR, \fB\-\-block\fR=\fI0|1\fR
this option controls how the file handle to the \fIDEVICE\fR is opened. If
this argument is 0 then the open is non\-blocking. If the argument is 1 then
the open is blocking. In Unix a non\-blocking open is indicated by a
O_NONBLOCK flag while a blocking open is indicated by the absence of that
flag. The default value depends on the operating system and the type of
\fIDEVICE\fR node. For Linux pass\-throughs (i.e. the sg and bsg drivers)
the default is 0.
.TP
\fB\-c\fR, \fB\-\-cmddt\fR
set the Command Support Data (CmdDt) bit (defaults to clear(0)). Used in
conjunction with the \fI\-\-page=PG\fR option where \fIPG\fR specifies the
SCSI command opcode to query. When used twice (e.g. '\-cc') this utility
forms a list by looping over all 256 opcodes (0 to 255 inclusive) only
outputting a line for found commands. The CmdDt bit is now obsolete.
It has been replaced by the REPORT SUPPORTED OPERATION CODES command,
see the sg_opcodes(8) utility.
.TP
\fB\-d\fR, \fB\-\-descriptors\fR
decodes and prints the version descriptors found in a standard INQUIRY
response. There are up to 8 of them. Version descriptors indicate which
versions of standards and/or drafts the \fIDEVICE\fR complies with. The
normal components of a standard INQUIRY are output (typically from
the first 36 bytes of the response) followed by the version descriptors
if any.
.TP
\fB\-e\fR
see entry below for \fI\-\-vpd\fR.
.TP
\fB\-u\fR, \fB\-\-export\fR
prints out information obtained from the device. The output can be
modified by selecting a VPD page with \fIPG\fR (from
\fI\-\-page=PG\fR). If the device identification VPD page 0x83 is
given it prints out information in the form:
"SCSI_IDENT_<assoc>_<type>=<ident>" to stdout. If the device serial
number VPD page 0x80 is given it prints out information in the form:
"SCSI_SERIAL=<ident>". Other VPD pages are not supported. If no VPD
page is given it prints out information in the form:
"SCSI_VENDOR=<vendor>", "SCSI_MODEL=<model>", and
"SCSI_REVISION=<rev>", taken from the standard inquiry. This may be
useful for tools like udev(7) in Linux.
.TP
\fB\-E\fR, \fB\-x\fR, \fB\-\-extended\fR
prints the extended INQUIRY VPD page [0x86].
.TP
\fB\-h\fR, \fB\-\-help\fR
print out the usage message then exit. When used twice, after the
usage message, there is a list of available abbreviations than can be
given to the \fI\-\-page=PG\fR option.
.TP
\fB\-H\fR, \fB\-\-hex\fR
rather than decode a standard INQUIRY response, a VPD page or command
support data; print out the response in hex to stdout. Error messages and
warnings are typically output to stderr. When used twice with the ATA
Information VPD page [0x89] decodes the start of the response then outputs
the ATA IDENTIFY (PACKET) DEVICE response in hexadecimal bytes (not 16 bit
words). When used three times with the ATA Information VPD page [0x89] or
the \fI\-\-ata\fR option, this utility outputs the ATA IDENTIFY (PACKET)
DEVICE response in hexadecimal words suitable for input
to 'hdparm \-\-Istdin'.  See note below.
.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_inq \-p di -HHHH /dev/sg3 > dev_id.hex').
.TP
\fB\-i\fR, \fB\-\-id\fR
prints the device identification VPD page [0x83].
.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 an INQUIRY (including VPD page)
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\-\-len\fR=\fILEN\fR
the number \fILEN\fR is the "allocation length" field in the INQUIRY cdb.
This is the (maximum) length of the response to be sent by the device.
The default value of \fILEN\fR is 0 which is interpreted as: first request
is for 36 bytes and if necessary execute another INQUIRY if the "additional
length" field in the response indicates that more than 36 bytes is available.
If \fILEN\fR is greater than 0 then only one INQUIRY command is performed.
See paragraph below about "36 byte INQUIRYs".
.TP
\fB\-m\fR, \fB\-\-maxlen\fR=\fILEN\fR
this option has the same action as the \fI\-\-len=LEN\fR option. It has
been added for compatibility with the sg_vpd, sg_modes and sg_logs
utilities.
.TP
\fB\-O\fR, \fB\-\-old\fR
switch to older style options.
.TP
\fB\-p\fR, \fB\-\-page\fR=\fIPG\fR
the \fIPG\fR argument can be either a number of an abbreviation for a VPD
page. To enumerate the available abbreviations for VPD pages use '\-hh' or
a bad abbreviation (e.g, '\-\-page=xxx'). When the \fI\-\-cmddt\fR option is
given (once) then \fIPG\fR is interpreted as an opcode number (so VPD page
abbreviations make little sense).
.br
If \fIPG\fR is a negative number, then a standard INQUIRY is performed. This
can be used to override some guessing logic associated with the
\fI\-\-inhex=FN\fR option.
.TP
\fB\-r\fR, \fB\-\-raw\fR
in the absence of \fI\-\-inhex=FN\fR then output response 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\-s\fR, \fB\-\-vendor\fR
output a standard INQUIRY response's vendor specific field from offset 36
to 55 in ASCII. When used twice (i.e. '\-ss') also output the vendor
specific field from offset 96 in ASCII. This is only done if the data
passes some simple sanity checks.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
increase level of verbosity. Can be used multiple times.
.TP
\fB\-V\fR, \fB\-\-version\fR
print out version string then exit.
.TP
\fB\-e\fR, \fB\-\-vpd\fR
set the Enable Vital Product Data (EVPD) bit (defaults to clear(0)). Used in
conjunction with the \fI\-\-page=PG\fR option where \fIPG\fR specifies the
VPD page number to query. If the \fI\-\-page=PG\fR is not given then \fIPG\fR
defaults to zero which is the "Supported VPD pages" VPD page.
.SH NOTES
Some devices with weak SCSI command set implementations lock up when
they receive commands they don't understand (or even response lengths
that they don't expect). Such devices need to be treated carefully,
use the '\-\-len=36' option. Without this option this utility will issue
an initial standard INQUIRY requesting 36 bytes of response data. If
the device indicates it could have supplied more data then a second
INQUIRY is issued to fetch the longer response. That second command may
lock up faulty devices.
.PP
ATA or ATAPI devices that use a SCSI to ATA Translation layer (see
SAT at www.t10.org) may support the ATA Information VPD page. This
returns the IDENTIFY (PACKET) DEVICE response amongst other things.
The ATA Information VPD page can be fetched with '\-\-page=ai'.
.PP
In the INQUIRY standard response there is a 'MultiP' flag which is set
when the device has 2 or more ports. Some vendors use the preceding
vendor specific ('VS') bit to indicate which port is being accessed by
the INQUIRY command (0 \-> relative port 1 (port "a"), 1 \-> relative
port 2 (port "b")). When the 'MultiP' flag is set, the preceding vendor
specific bit is shown in parentheses. SPC\-3 compliant devices should
use the device identification VPD page (0x83) to show which port is
being used for access and the SCSI ports VPD page (0x88) to show all
available ports on the device.
.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 number of bytes output by \fI\-\-hex\fR and \fI\-\-raw\fR is 36 bytes
or the number given to \fI\-\-len=LEN\fR (or \fI\-\-maxlen=LEN\fR). That
number is reduced if the "resid" returned by the HBA indicates less bytes
were sent back from \fIDEVICE\fR.
.PP
The \fIDEVICE\fR is opened with a read\-only flag (e.g. in Unix with the
O_RDONLY flag).
.SH ATA DEVICES
There are two major types of ATA devices: non\-packet devices (e.g. ATA
disks) and packet devices (ATAPI). The majority of ATAPI devices are
CD/DVD/BD drives in which the ATAPI transport carries the MMC set (i.e.
a SCSI command set). Further, both types of ATA devices can be connected
to a host computer via a "SCSI" (or some other) transport. When an
ATA disk is controlled via a SCSI (or non\-ATA) transport then two
approaches are commonly used: tunnelling (e.g. STP in Serial Attached
SCSI (SAS)) or by emulating a SCSI device (e.g. with a SCSI to
ATA translation layer, see SAT at www.t10.org ). Even when the
physical transport to the host computer is ATA (especially in the
case of SATA) the operating system may choose to put a SAT
layer in the driver "stack" (e.g. libata in Linux).
.PP
The main identifying command for any SCSI device is an INQUIRY. The
corresponding command for an ATA non\-packet device is IDENTIFY DEVICE
while for an ATA packet device it is IDENTIFY PACKET DEVICE.
.PP
When this utility is invoked for an ATAPI device (e.g. a CD/DVD/BD
drive with "sg_inq /dev/hdc") then a SCSI INQUIRY is sent to the
device and if it responds then the response to decoded and output and
this utility exits. To see the response for an ATA IDENTIFY PACKET
DEVICE command add the \fI\-\-ata\fR option (e.g. "sg_inq \-\-ata /dev/hdc).
.PP
This utility doesn't decode the response to an ATA IDENTIFY (PACKET)
DEVICE command, hdparm does a good job at that. The '\-HHH' option has
been added for use with either the '\-\-ata' or '\-\-page=ai'
option to produce a format acceptable to "hdparm \-\-Istdin".
An example: 'sg_inq \-\-ata \-HHH /dev/hdc | hdparm \-\-Istdin'. See hdparm.
.SH EXIT STATUS
The exit status of sg_inq is 0 when it is successful. Otherwise see
the sg3_utils(8) man page.
.SH OLDER COMMAND LINE OPTIONS
The options in this section were the only ones available prior to sg3_utils
version 1.23 . In sg3_utils version 1.23 and later these older options can
be selected by either setting the SG3_UTILS_OLD_OPTS environment variable
or using \fI\-\-old\fR (or \fI\-O\fR) as the first option.
.TP
\fB\-36\fR
only requests 36 bytes of response data for an INQUIRY. Furthermore even
if the device indicates in its response it can supply more data, a
second (longer) INQUIRY is not performed. This is a paranoid setting.
Equivalent to '\-\-len=36' in the OPTIONS section.
.TP
\fB\-a\fR
fetch the ATA Information VPD page [0x89]. Equivalent to '\-\-page=ai' in
the OPTIONS section. This page is defined in SAT (see at www.t10.org).
.TP
\fB\-A\fR
Assume given \fIDEVICE\fR is an ATA or ATAPI device.
Equivalent to \fI\-\-ata\fR in the OPTIONS section.
.TP
\fB\-b\fR
decodes the Block Limits VPD page [0xb0].  Equivalent to '\-\-page=bl' in
the OPTIONS section. This page is defined in SBC\-2 (see www.t10.org).
.TP
\fB\-B\fR=\fI0|1\fR
equivalent to \fI\-\-block=0|1\fR in OPTIONS section.
.TP
\fB\-c\fR
set the Command Support Data (CmdDt) bit (defaults to clear(0)). Used in
 conjunction with the \fI\-o=OPCODE_PG\fR option to specify the SCSI command
opcode to query. Equivalent to \fI\-\-cmddt\fR in the OPTIONS section.
.TP
\fB\-cl\fR
lists the command data for all supported commands (followed by the command
name) by looping through all 256 opcodes. This option uses the CmdDt bit
which is now obsolete. See the sg_opcodes(8) utility.
Equivalent to '\-\-cmddt \-\-cmddt' in the OPTIONS section.
.TP
\fB\-d\fR
decodes depending on context. If \fI\-e\fR option is given, or any option
that implies \fI\-e\fR (e.g. '\-i' or '\-p=80'), then this utility attempts
to decode the indicated VPD page.  Otherwise the version descriptors (if any)
are listed following a standard INQUIRY response. In the version descriptors
sense, equivalent to \fI\-\-descriptors\fR in the OPTIONS section.
.TP
\fB\-e\fR
enable (i.e. sets) the Vital Product Data (EVPD) bit (defaults to clear(0)).
Used in conjunction with the \fI\-p=VPD_PG\fR option to specify the VPD page
to fetch. If \fI\-p=VPD_PG\fR is not given then VPD page 0 (list supported
VPD pages) is assumed.
.TP
\fB\-h\fR
outputs INQUIRY response in hex rather than trying to decode it.
Equivalent to \fI\-\-hex\fR in the OPTIONS section.
.TP
\fB\-H\fR
same action as \fI\-h\fR.
Equivalent to \fI\-\-hex\fR in the OPTIONS section.
.TP
\fB\-i\fR
decodes the Device Identification VPD page [0x83]. Equivalent to \fI\-\-id\fR
in the OPTIONS section. This page is made up of several "designation
descriptors". If \fI\-h\fR is given then each descriptor header is decoded
and the identifier itself is output in hex. To see the whole VPD 0x83 page
response in hex use '\-p=83 \-h'.
.TP
\fB\-I\fR=\fIFN\fR
equivalent to \fI\-\-inhex=FN\fR in the OPTIONS section.
.TP
\fB\-m\fR
decodes the Management network addresses VPD page [0x85]. Equivalent
to '\-\-page=mna' in the OPTIONS section.
.TP
\fB\-M\fR
decodes the Mode page policy VPD page [0x87].  Equivalent to '\-\-page=mpp'
in the OPTIONS section.
.TP
\fB\-N\fR
switch to the newer style options.
.TP
\fB\-o\fR=\fIOPCODE_PG\fR
used in conjunction with the \fI\-e\fR or \fI\-c\fR option. If neither given
then the \fI\-e\fR option assumed. When the \fI\-e\fR option is also
given (or assumed) then the argument to this option is the VPD page number.
The argument is interpreted as hexadecimal and is expected to be in the range
0 to ff inclusive. Only VPD page 0 is decoded and it lists supported VPD pages
and their names (if known). To decode the mandatory device identification
page (0x83) use the \fI\-i\fR option. A now obsolete usage is when the
\fI\-c\fR option is given in which case the argument to this option is assumed
to be a command opcode number. Recent SCSI draft standards have moved this
facility to a separate command (see sg_opcodes(8)). Defaults to 0 so if
\fI\-e\fR is given without this option then VPD page 0 is output.
.TP
\fB\-p\fR=\fIVPD_PG\fR
same action as \fI\-o=OPCODE_PG\fR option described in the previous entry.
Since the opcode value with the CmdDt is now obsolete, the main use of this
option is to specify the VPD page number. The argument is interpreted as
hexadecimal and is expected to be in the range 0 to ff inclusive.
Defaults to 0 so if \fI\-e\fR is given without this option then VPD page 0
is output.
.TP
\fB\-P\fR
decodes the Unit Path Report VPD page [0xc0] which is EMC specific.
Equivalent to '\-\-page=upr' in the OPTIONS section.
.TP
\fB\-r\fR
outputs the response in binary to stdout.  Equivalent to \fI\-\-raw\fR in
the OPTIONS section.  Can be used twice (i.e. '\-rr' (and '\-HHH' has
same effect)) and if used with the \fI\-A\fR or \fI\-a\fR option yields
output with the same format as "cat /proc/ide/hd<x>/identify" so that it
can then be piped to "hdparm \-\-Istdin".
.TP
\fB\-s\fR
decodes the SCSI Ports VPD page [0x88].
Equivalent to '\-\-page=sp' in the OPTIONS section.
.TP
\fB\-u\fR
equivalent to '\-\-export' in the OPTIONS section.
.TP
\fB\-v\fR
increase level of verbosity. Can be used multiple times.
.TP
\fB\-V\fR
print out version string then exit.
.TP
\fB\-x\fR
decodes the Extended INQUIRY data VPD [0x86] page.
Equivalent to '\-\-page=ei' in the OPTIONS section.
.TP
\fB\-?\fR
output usage message and exit. Ignore all other parameters.
.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 view the standard inquiry response use without options:
.PP
   sg_inq /dev/sda
.PP
Some SCSI devices include version descriptors indicating the various
SCSI standards and drafts they support. They can be viewed with:
.PP
   sg_inq \-d /dev/sda
.PP
Modern SCSI devices include Vital Product Data (VPD)pages which can be
viewed with the SCSI INQUIRY command. To list the supported VPD
pages (but not their contents) try:
.PP
   sg_inq \-e /dev/sda
.PP
Some VPD pages can be read with the sg_inq utility but a newer utility
called sg_vpd specializes in showing their contents. The sdparm utility
can also be used to show the contents of VPD pages.
.PP
Further examples of sg_inq together with some typical output can be found
on 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 2001\-2016 Douglas Gilbert
.br
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 sg_opcodes(8), sg_vpd(8), sdparm(8), hdparm(8), sgdiag(scsirastools)
