man pages section 1M: System Administration Commands

Exit Print View

Updated: July 2014
 
 

sg_inq (1m)

Name

sg_inq - sends a SCSI INQUIRY or ATA IDENTIFY (PACKET) DEVICE command and outputs the response

Synopsis

sg_inq  [--ata]   [--cmddt]   [--descriptors]   [--extended]
[--help]    [--hex]    [--id]   [--len=LEN]   [--maxlen=LEN]
[--page=PG] [--raw] [--verbose] [--version] [--vpd] DEVICE

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

Description




SG3_UTILS                                               SG_INQ(8)



NAME
     sg_inq  -  sends  a  SCSI  INQUIRY  or ATA IDENTIFY (PACKET)
     DEVICE command and outputs the response

SYNOPSIS
     sg_inq  [--ata]   [--cmddt]   [--descriptors]   [--extended]
     [--help]    [--hex]    [--id]   [--len=LEN]   [--maxlen=LEN]
     [--page=PG] [--raw] [--verbose] [--version] [--vpd] DEVICE

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

DESCRIPTION
     This utility by default sends a SCSI INQUIRY command to  the
     given device and 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  (obso-
     lete) bits are clear.

     This  utility  supports  two command line syntaxes, the pre-
     ferred one is shown first in the synopsis and  explained  in
     this section. A later section on the old command line syntax
     outlines the second group of options.

     An important "non-standard" INQUIRY page is the Device Iden-
     tification  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.

     If the DEVICE exists and the SCSI INQUIRY fails (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/1713-D  Revision  11  (SPC-4,  14  May  2007)  found  at
     http://www.t10.org .  Obsolete items in the standard INQUIRY
     response 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.



sg3_utils-1.30      Last change: December 2010                  1






SG3_UTILS                                               SG_INQ(8)



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

     -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 inclu-
          sive)  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  stan-
          dards  and/or drafts the DEVICE complies with. The nor-
          mal components of a standard INQUIRY are output  (typi-
          cally from the first 36 bytes of the response) followed
          by the version descriptors if any.

     -e   see entry below for --vpd.

     -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 typi-
          cally 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



sg3_utils-1.30      Last change: December 2010                  2






SG3_UTILS                                               SG_INQ(8)



          note below.

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

     -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 indi-
          cates that more than 36 bytes is available.  If LEN  is
          greater  than  0  then only one INQUIRY command is per-
          formed.  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 abbrevia-
          tion for a VPD page. To enumerate the available  abbre-
          viations  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).

     -r, --raw
          output the response in binary to stdout. Error messages
          and warnings, if any, are sent to stderr.

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






sg3_utils-1.30      Last change: December 2010                  3






SG3_UTILS                                               SG_INQ(8)



ATTRIBUTES
     See  attributes(5)  for  descriptions   of   the   following
     attributes:

     +---------------+--------------------------+
     |ATTRIBUTE TYPE |     ATTRIBUTE VALUE      |
     +---------------+--------------------------+
     |Availability   | system/storage/sg3_utils |
     +---------------+--------------------------+
     |Stability      | Uncommitted              |
     +---------------+--------------------------+
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  Informa-
     tion  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  ven-
     dors  use  the preceding vendor specific ('VS') bit to indi-
     cate 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").

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 trans-
     port  carries  the  MMC  set  (i.e.   a  SCSI  command set).



sg3_utils-1.30      Last change: December 2010                  4






SG3_UTILS                                               SG_INQ(8)



     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 operat-
     ing 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. Other-
     wise 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 set-
     ting 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 main description.

     -a   fetch  the  ATA Information VPD page [0x89]. Equivalent
          to '--page=ai' in the main description.  This  page  is
          defined in SAT (see at www.t10.org).

     -A   Assume   given  DEVICE  is  an  ATA  or  ATAPI  device.



sg3_utils-1.30      Last change: December 2010                  5






SG3_UTILS                                               SG_INQ(8)



          Equivalent to --ata in the main description.

     -b   decodes the Block Limits VPD page  [0xb0].   Equivalent
          to  '--page=bl'  in  the main description. This page is
          defined in SBC-2 (see www.t10.org).

     -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 main description.

     -cl  lists the command data for all supported commands (fol-
          lowed 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 main description.

     -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
          main description.

     -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  main  descrip-
          tion.

     -H   same  action  as  -h.   Equivalent to --hex in the main
          description.

     -i   decodes the  Device  Identification  VPD  page  [0x83].
          Equivalent  to  --id in the main description. 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'.

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

     -M   decodes  the Mode page policy VPD page [0x87].  Equiva-
          lent to '--page=mpp' in the main description.



sg3_utils-1.30      Last change: December 2010                  6






SG3_UTILS                                               SG_INQ(8)



     -N   switch to the newer style options.

     -o=OPCODE_PG
          used in conjunction with the -e or -c option.  If  nei-
          ther  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  num-
          ber. Recent SCSI draft standards have moved this facil-
          ity 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 inter-
          preted 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 main
          description.

     -r   outputs the response in binary to  stdout.   Equivalent
          to  --raw  in  the main description.  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 main description.

     -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 main description.

     -?   output usage message and exit. Ignore all other parame-
          ters.



sg3_utils-1.30      Last change: December 2010                  7






SG3_UTILS                                               SG_INQ(8)



EXAMPLES
     The  examples in this page use Linux device names. For suit-
     able 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 Doug Gilbert

REPORTING BUGS
     Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT
     Copyright (C) 2001-2010 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)


     This   software   was   built   from   source  available  at
     https://java.net/projects/solaris-userland.   The   original
     community       source       was       downloaded       from
     http://sg.danny.cz/sg/p/sg3_utils-1.33.tgz




sg3_utils-1.30      Last change: December 2010                  8






SG3_UTILS                                               SG_INQ(8)



     Further information about this software can be found on  the
     open        source        community        website        at
     http://sg.danny.cz/sg/sg3_utils.html.




















































sg3_utils-1.30      Last change: December 2010                  9