bionic (8) sg_inq.8.gz

Provided by: sg3-utils_1.42-2ubuntu1.18.04.2_amd64 bug

NAME

       sg_inq - issue SCSI INQUIRY command and/or decode its response

SYNOPSIS

       sg_inq  [--ata]  [--block=0|1]  [--cmddt] [--descriptors] [--export] [--extended] [--help] [--hex] [--id]
       [--inhex=FN] [--len=LEN] [--maxlen=LEN] [--page=PG] [--raw] [--vendor]  [--verbose]  [--version]  [--vpd]
       DEVICE

       sg_inq  [-36]  [-a]  [-A]  [-b]  [--B=0|1] [-c] [-cl] [-d] [-e] [-h] [-H] [-i] [-I=FN] [-l=LEN] [-m] [-M]
       [-o=OPCODE_PG] [-p=VPD_PG] [-P] [-r] [-s] [-u] [-v] [-V] [-x] [-36] [-?] DEVICE

DESCRIPTION

       This utility, when DEVICE 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.

       Alternatively  the  --inhex=FN option can be given. In this case FN is assumed to be a file name ('-' for
       stdin) containing ASCII hexadecimal representing an INQUIRY response.

       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.

       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 --id 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.

       In Linux, if the DEVICE 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  --raw and --hex options can be used to manipulate the output.  If the --ata option is given
       then the SCSI INQUIRY is not performed and the DEVICE is assumed to be ATA (or ATAPI).

       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 .

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.

       -a, --ata
              Assume given DEVICE 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.

       -B, --block=0|1
              this  option  controls how the file handle to the DEVICE 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  DEVICE  node.  For  Linux
              pass-throughs (i.e. the sg and bsg drivers) the default is 0.

       -c, --cmddt
              set  the  Command  Support  Data  (CmdDt) bit (defaults to clear(0)). Used in conjunction with the
              --page=PG option where PG 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.

       -d, --descriptors
              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  DEVICE
              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.

       -e     see entry below for --vpd.

       -u, --export
              prints out information obtained from the device. The output can be modified  by  selecting  a  VPD
              page  with  PG (from --page=PG). 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.

       -E, -x, --extended
              prints the extended INQUIRY VPD page [0x86].

       -h, --help
              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 --page=PG option.

       -H, --hex
              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 --ata option, this utility outputs the ATA
              IDENTIFY (PACKET) DEVICE response in hexadecimal words suitable for input  to  'hdparm  --Istdin'.
              See note below.
              To  generate output suitable for placing in a file that can be used by a later invocation with the
              --inhex=FN option, use the '-HHHH' option (e.g. 'sg_inq -p di -HHHH /dev/sg3 > dev_id.hex').

       -i, --id
              prints the device identification VPD page [0x83].

       -I, --inhex=FN
              FN 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 --page=PG 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 --raw
              option is also given then FN is treated as binary.

       -l, --len=LEN
              the number LEN 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 LEN 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 LEN is greater than 0
              then only one INQUIRY command is performed.  See paragraph below about "36 byte INQUIRYs".

       -m, --maxlen=LEN
              this option has the same action as the --len=LEN option. It has been added for compatibility  with
              the sg_vpd, sg_modes and sg_logs utilities.

       -O, --old
              switch to older style options.

       -p, --page=PG
              the  PG  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  --cmddt  option  is  given  (once)  then  PG  is interpreted as an opcode number (so VPD page
              abbreviations make little sense).
              If PG is a negative number, then a standard INQUIRY is performed. This can  be  used  to  override
              some guessing logic associated with the --inhex=FN option.

       -r, --raw
              in the absence of --inhex=FN 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.
              if used with --inhex=FN then the contents of FN is treated as binary.

       -s, --vendor
              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.

       -v, --verbose
              increase level of verbosity. Can be used multiple times.

       -V, --version
              print out version string then exit.

       -e, --vpd
              set  the Enable Vital Product Data (EVPD) bit (defaults to clear(0)). Used in conjunction with the
              --page=PG option where PG specifies the VPD page number to query. If the --page=PG  is  not  given
              then PG defaults to zero which is the "Supported VPD pages" VPD page.

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.

       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'.

       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.

       In the 2.4 series of Linux kernels the DEVICE 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").

       The number of bytes output by --hex and  --raw  is  36  bytes  or  the  number  given  to  --len=LEN  (or
       --maxlen=LEN).  That  number is reduced if the "resid" returned by the HBA indicates less bytes were sent
       back from DEVICE.

       The DEVICE is opened with a read-only flag (e.g. in Unix with the O_RDONLY flag).

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).

       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.

       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 --ata  option  (e.g.
       "sg_inq --ata /dev/hdc).

       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.

EXIT STATUS

       The exit status of sg_inq is 0 when it is successful. Otherwise see the sg3_utils(8) man page.

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 --old (or -O) as the first option.

       -36    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.

       -a     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).

       -A     Assume given DEVICE is an ATA or ATAPI device.  Equivalent to --ata in the OPTIONS section.

       -b     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).

       -B=0|1 equivalent to --block=0|1 in OPTIONS section.

       -c     set the Command Support Data (CmdDt) bit (defaults to clear(0)). Used in
               conjunction with the -o=OPCODE_PG option to specify the SCSI command opcode to query.  Equivalent
              to --cmddt in the OPTIONS section.

       -cl    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.

       -d     decodes  depending  on context. If -e option is given, or any option that implies -e (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 --descriptors in the OPTIONS section.

       -e     enable (i.e. sets) the Vital Product Data (EVPD) bit (defaults to clear(0)).  Used in  conjunction
              with  the  -p=VPD_PG  option  to specify the VPD page to fetch. If -p=VPD_PG is not given then VPD
              page 0 (list supported VPD pages) is assumed.

       -h     outputs INQUIRY response in hex rather than trying to decode  it.   Equivalent  to  --hex  in  the
              OPTIONS section.

       -H     same action as -h.  Equivalent to --hex in the OPTIONS section.

       -i     decodes the Device Identification VPD page [0x83]. Equivalent to --id in the OPTIONS section. This
              page is made up of several "designation descriptors". If -h 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'.

       -I=FN  equivalent to --inhex=FN in the OPTIONS section.

       -m     decodes the Management network addresses VPD  page  [0x85].  Equivalent  to  '--page=mna'  in  the
              OPTIONS section.

       -M     decodes the Mode page policy VPD page [0x87].  Equivalent to '--page=mpp' in the OPTIONS section.

       -N     switch to the newer style options.

       -o=OPCODE_PG
              used  in  conjunction  with the -e or -c option. If neither given then the -e option assumed. When
              the -e 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 -i option. A now obsolete usage is when
              the -c 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 -e is given without this option then VPD page 0 is output.

       -p=VPD_PG
              same action as -o=OPCODE_PG 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 -e is given without this option then VPD page 0 is output.

       -P     decodes the Unit Path Report VPD page [0xc0] which is EMC specific.  Equivalent to '--page=upr' in
              the OPTIONS section.

       -r     outputs the response in binary to stdout.  Equivalent to --raw in the  OPTIONS  section.   Can  be
              used  twice  (i.e. '-rr' (and '-HHH' has same effect)) and if used with the -A or -a option yields
              output with the same format as "cat /proc/ide/hd<x>/identify" so that it  can  then  be  piped  to
              "hdparm --Istdin".

       -s     decodes the SCSI Ports VPD page [0x88].  Equivalent to '--page=sp' in the OPTIONS section.

       -u     equivalent to '--export' in the OPTIONS section.

       -v     increase level of verbosity. Can be used multiple times.

       -V     print out version string then exit.

       -x     decodes  the  Extended  INQUIRY  data  VPD  [0x86] page.  Equivalent to '--page=ei' in the OPTIONS
              section.

       -?     output usage message and exit. Ignore all other parameters.

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.

       To view the standard inquiry response use without options:

          sg_inq /dev/sda

       Some  SCSI  devices  include  version  descriptors  indicating the various SCSI standards and drafts they
       support. They can be viewed with:

          sg_inq -d /dev/sda

       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:

          sg_inq -e /dev/sda

       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.

       Further   examples   of   sg_inq   together   with   some   typical    output    can    be    found    on
       http://sg.danny.cz/sg/sg3_utils.html web page.

AUTHOR

       Written by Douglas Gilbert

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

       Copyright © 2001-2016 Douglas Gilbert
       This  software is distributed under the GPL version 2. There is NO warranty; not even for MERCHANTABILITY
       or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO

       sg_opcodes(8), sg_vpd(8), sdparm(8), hdparm(8), sgdiag(scsirastools)