GNU.WIKI: The GNU/Linux Knowledge Base

  [HOME] [PHP Manual] [HowTo] [ABS] [MAN1] [MAN2] [MAN3] [MAN4] [MAN5] [MAN6] [MAN7] [MAN8] [MAN9]

  [0-9] [Aa] [Bb] [Cc] [Dd] [Ee] [Ff] [Gg] [Hh] [Ii] [Jj] [Kk] [Ll] [Mm] [Nn] [Oo] [Pp] [Qq] [Rr] [Ss] [Tt] [Uu] [Vv] [Ww] [Xx] [Yy] [Zz]


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/1713-D
       Revision  36q  (SPC-4,  12 February 2014) 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.

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.php web page.

AUTHOR

       Written by Douglas Gilbert

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT

       Copyright © 2001-2014 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)



  All copyrights belong to their respective owners. Other content (c) 2014-2018, GNU.WIKI. Please report site errors to webmaster@gnu.wiki.
Page load time: 0.113 seconds. Last modified: November 04 2018 12:49:43.