Go to main content

man pages section 8: System Administration Commands

Exit Print View

Updated: Wednesday, February 9, 2022
 
 

sg_opcodes (8)

Name

sg_opcodes - tions

Synopsis

sg_opcodes  [--alpha]  [--compact]   [--enumerate]   [--help]   [--hex]
[--mask]  [--mlu]  [--no-inquiry] [--opcode=OP[,SA]] [--pdt=DT] [--raw]
[--rctd] [--repd] [--sa=SA] [--tmf]  [--unsorted]  [--verbose]  [--ver-
sion] DEVICE

sg_opcodes [-a] [-c] [-e] [-H] [-m] [-M] [-n] [-o=OP] [-p=DT] [-q] [-R]
[-s=SA] [-t] [-u] [-v] [-V] [-?]  DEVICE

Description

SG_OPCODES(8)                      SG3_UTILS                     SG_OPCODES(8)



NAME
       sg_opcodes  -  report  supported SCSI commands or task management func-
       tions

SYNOPSIS
       sg_opcodes  [--alpha]  [--compact]   [--enumerate]   [--help]   [--hex]
       [--mask]  [--mlu]  [--no-inquiry] [--opcode=OP[,SA]] [--pdt=DT] [--raw]
       [--rctd] [--repd] [--sa=SA] [--tmf]  [--unsorted]  [--verbose]  [--ver-
       sion] DEVICE

       sg_opcodes [-a] [-c] [-e] [-H] [-m] [-M] [-n] [-o=OP] [-p=DT] [-q] [-R]
       [-s=SA] [-t] [-u] [-v] [-V] [-?]  DEVICE

DESCRIPTION
       This utility sends a SCSI REPORT SUPPORTED OPERATION CODES or a  REPORT
       SUPPORTED TASK MANAGEMENT FUNCTIONS command to the DEVICE and then out-
       puts the response. The default action is to report supported  operation
       codes.  In this mode it will either list all supported commands or give
       detailed  information  on  a  specific  command   identified   by   the
       --opcode=OP  option  (perhaps  with  additional  information  from  the
       --sa=SA option).

       The name of a SCSI command depends on its peripheral device type  (e.g.
       a disk). The REPORT SUPPORTED OPERATION CODES and REPORT SUPPORTED TASK
       MANAGEMENT FUNCTIONS commands are not supported in the MMC command  set
       for  CD  and  DVD  devices.  This utility does an INQUIRY to obtain the
       peripheral device type and prints out the vendor, product and  revision
       strings.

       A  similar  facility  to query supported operation codes previously was
       available  via  the  CmdDt  bit  in  the  SCSI  INQUIRY  command   (see
       sg_inq(8)). However that facility was made obsolete and replaced by the
       REPORT SUPPORTED OPERATION CODES command in SPC-3 (revision  4)  during
       February 2002.

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

OPTIONS
       Arguments to long options are mandatory for short options as well.

       -a, --alpha
              when all  supported  commands  are  being  listed  there  is  no
              requirement  for the device server (i.e. the DEVICE) to sort the
              list of commands. When this option is given  the  list  of  sup-
              ported  commands  is  sorted by name (alphabetically). When this
              option and the --unsorted option are both _not_ given  then  the
              list of supported commands is sorted numerically (first by oper-
              ation code and then by service action).

       -c, --compact
              some command names, especially those associated with  some  ser-
              vice  actions,  are  getting longer. This may cause line wrap in
              the one line per command  mode  on  some  terminals.  When  this
              option  is  given  the opcode and service action fields are com-
              bined into a single field with the service action, prefixed by a
              comma  shown  directly  after the opcode. If there is no service
              action associated with the command, then the comma and the  ser-
              vice  action  are not shown after the opcode. The CDB size field
              is not shown when this option is given.

       -e, --enumerate
              this option prints the name of the SCSI  command  based  on  the
              given  opcode, peripheral device type and optionally the service
              action. If given, DEVICE  is  ignored.  The  opcode,  peripheral
              device  type  and  service  action default to zero if not given.
              Thus if this option is the only option  given  then  "Test  Unit
              ready" is output since its opcode is 0, it has no service action
              and it is common to all peripheral  device  types  since  it  is
              defined in the SCSI Primary Commands (SPC) standard(s).

       -h, --help
              outputs  the usage message summarizing command line options then
              exits. Ignores DEVICE if given.

       -H, --hex
              outputs the response in ASCII hexadecimal to stdout.

       -m, --mask
              additionally prints out the cdb mask in hex. So a  12  byte  cdb
              will  have  a  12  byte  hexadecimal mask. If the hexadecimal is
              expanded (mentally) to binary then a "1" means the corresponding
              position  in the cdb may be set. And "0" means the corresponding
              position in the cdb must not be set. For "0" mask positions that
              a user tries to set in a cdb, the device may either ignore it or
              report  an  error,  typically  with  a  sense  key  of  "illegal
              request".

       -M, --mlu
              additionally  prints out an indication (0 or 1) whether the com-
              mand effects all logical units in  the  containing  target.  MLU
              (Multiple Logical Units) is a bit in the REPORT SUPPORTED OPERA-
              TION CODES response introduced by proposal 18-045r1 (and  possi-
              bly  in  spc5r20). Without the option, the default output format
              which lists all opcodes, does not include a MLU indication.

       -n, --no-inquiry
              Prior to calling a SCSI REPORT SUPPORTED OPERATION  CODES  or  a
              REPORT  SUPPORTED  TASK  MANAGEMENT  FUNCTIONS  command,  a SCSI
              INQUIRY command is performed. The reason  is  to  determine  the
              peripheral device type (pdt) of the DEVICE as this is helpful in
              translating operation codes to the  command  names.  By  default
              this  utility  prints  a  summary of INQUIRY command response on
              stdout. If this option (or the --raw option) is given then  that
              summary is not printed on stdout.

       -O, --old
              Switch to older style options. Please use as first option.

       -o, --opcode=OP[,SA]
              the  DEVICE  will  be queried for the given operation code (i.e.
              the OP value) which is the first byte of a SCSI command. Option-
              ally,  if a SA value is given, it will be used as that SCSI com-
              mand's service action. Note that OP and OP,0 are  not  the  same
              thing,  as SCSI does allow the service action to be 0 (but it is
              not comman). OP and SA are decimal unless prefixed  by  "0x"  or
              they  have  a  trailing "h".  OP should be in the range 0 to 255
              (0xff) inclusive. SA should be in the range 0 to 65535  (0xffff)
              inclusive. When this option is not given then all available SCSI
              commands supported by the DEVICE are listed.

       -p, --pdt=DT
              where DT is the peripheral device type. This  is  used  together
              with the --enumerate to differentiate when a command opcode (and
              perhaps service action) is shared by multiple device types.
              This option may also be used with  the  --no-inquiry  option  to
              suppress  this  utility  doing an INQUIRY command since the main
              reason for doing that is to find the peripheral device  type  of
              the DEVICE.

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

       -R, --rctd
              set report command timeout descriptor (RCTD) bit in the cdb. The
              response  may or may not contain command timeout descriptors. If
              available they are output. If supported there are two values:  a
              nominal  command timeout and a recommended command timeout. Both
              have units of seconds. A value of zero means that no timeout  is
              indicated  and this is shown in the corresponding decoded output
              as "-".

       -q, --repd
              set read extended parameter data (REPD) bit in the  report  task
              management  functions  cdb.  16  bytes rather than the default 4
              bytes expected in the response. This was added in  SPC-4  (revi-
              sion 26).

       -s, --sa=SA
              the  DEVICE will be queried for a command with the given service
              action (i.e.  the  SA  value).  Used  in  conjunction  with  the
              --opcode=OP  option. If this option is not given, --opcode=OP is
              given and the command in question does  have  a  service  action
              then a value of 0 will be assumed. SA is decimal and expected to
              be in the range 0 to 65535 (0xffff) inclusive.

       -t, --tmf
              list supported task management functions. This is done with  the
              SCSI  REPORT  SUPPORTED TASK MANAGEMENT FUNCTIONS command.  When
              this option is chosen the --alpha, --opcode=OP, --rctd,  --sa=SA
              and --unsorted options are ignored.

       -u, --unsorted
              when  all  supported  commands  are  being  listed  there  is no
              requirement for the device server (i.e. the DEVICE) to sort  the
              list  of  commands.  When  this option is given the list of sup-
              ported commands is in the order given by the DEVICE.  When  this
              option  is  not  given the supported commands are sorted numeri-
              cally (first by operation code and then by service action).

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

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


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


       +---------------+--------------------------+
       |ATTRIBUTE TYPE |     ATTRIBUTE VALUE      |
       +---------------+--------------------------+
       |Availability   | system/storage/sg3_utils |
       +---------------+--------------------------+
       |Stability      | Pass-through uncommitted |
       +---------------+--------------------------+

NOTES
       As of SPC-5 revision 8 the recognized task  management  functions  are:
       abort  set,  abort  task  set,  clear ACA, clear task set, logical unit
       reset, query task, query asynchronous event, query task  set,  and  I_T
       nexus reset.  In SPC-4 revision 26 target reset and wakeup task manage-
       ment functions were made obsolete.

       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. SCSI disks and DVD
       drives) can also be specified. For example "sg_opcodes  /dev/sda"  will
       work in the 2.6 series kernels.

       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source was downloaded from  http://sg.danny.cz/sg/p/sg3_utils-1.46.tgz.

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

EXIT STATUS
       The exit status of sg_opcodes 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 . Since then this utility defaults to the  newer
       command  line options which can be overridden by using --old (or -O) as
       the first option. See the ENVIRONMENT VARIABLES section for another way
       to force the use of these older command line options.

       -a     sort  command  alphabetically.  Equivalent  to  --alpha  in main
              description.

       -c     see the --compact option above.

       -e     see the --enumerate option above.

       -H     see the --hex option above.

       -m     see the --mask option above.

       -n     don't print a summary of the SCSI INQUIRY response on stdout.

       -N, --new
              Switch to the newer style options.

       -o=OP  the DEVICE will be queried for the given  operation  code  (i.e.
              OP) which is the first byte of a SCSI command. OP is hexadecimal
              and expected to be in the range 0 to ff  inclusive.   When  this
              option  is  not given then all available SCSI commands supported
              by the DEVICE are listed.

       -p=DT  see the --pdt=DT option above.

       -q     set the read extended parameter data (REPD) bit  in  report  TMF
              cdb.  Equivalent to --repd in main description.

       -R     set  the  report  command  timeout descriptor (RCTD) bit in cdb.
              Equivalent to --rctd in main description.

       -s=SA  the DEVICE will be queried for a command with the given  service
              action  (i.e. SA). Used in conjunction with the -o=OP option. If
              this option is not given, -o=OP is  given  and  the  command  in
              question  does  have  a service action then a value of 0 will be
              assumed.  SA is hexadecimal and expected to be in the range 0 to
              ffff inclusive.

       -t     list supported task management functions. Equivalent to --tmf in
              the main description.

       -u     output all supported commands in  the  order  given  by  DEVICE.
              Equivalent to --unsorted in main description.

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

       -V     print out version string then exit.

       -?     output usage message. 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 see the information about a specific command give its operation code
       to the '--op=' option. A command line invocation is  shown  first  fol-
       lowed by a typical response:

          # sg_opcodes --op=93h /dev/sdb

         Opcode=0x93
         Command_name: Write same(16)
         Command supported [conforming to SCSI standard]
         Usage data: 93 e2 00 00 00 00 ff ff ff ff 00 00 ff ff 00 00

       The next example shows the supported task management functions:

          # sg_opcodes --tmf -n /dev/sdb

       Task Management Functions supported by device:
           Abort task
           Abort task set
           Clear ACA
           Clear task set
           Logical unit reset
           Query task

       Enumerate  can be used to look up a SCSI command name in the absence of
       a device that supports that command. The opcode and service action  (if
       required) should be supplied:

          # sg_opcodes --enumerate --op=0x9b,0xa

         SCSI command:
           Read buffer(16), read data from echo buffer

ENVIRONMENT VARIABLES
       Since    sg3_utils    version    1.23    the    environment    variable
       SG3_UTILS_OLD_OPTS can be given. When it is present this  utility  will
       expect the older command line options. So the presence of this environ-
       ment variable is equivalent to using --old (or -O) as the first command
       line option.

AUTHOR
       Written by Douglas Gilbert

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

COPYRIGHT
       Copyright (C) 2004-2021 Douglas Gilbert
       This  software is distributed under the GPL version 2. There is NO war-
       ranty; not even for MERCHANTABILITY or FITNESS FOR  A  PARTICULAR  PUR-
       POSE.

SEE ALSO
       sg_inq(sg3_utils)




sg3_utils-1.46                    March 2020                     SG_OPCODES(8)