dwww Home | Manual pages | Find package

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  --op-
       code=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  pe-
       ripheral  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  op-
       tions.

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

       -a, --alpha
              when  all  supported  commands  are being listed there is no re-
              quirement 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  op-
              tion  is given the opcode and service action fields are combined
              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 service ac-
              tion 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 de-
              vice 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 ex-
              panded (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  re-
              quest".

       -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  IN-
              QUIRY  command  is performed. The reason is to determine the pe-
              ripheral 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 --op-
              code=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 re-
              quirement 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.

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 re-
       set, 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.

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

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

Generated by dwww version 1.16 on Tue Dec 16 16:02:43 CET 2025.