340 lines
14 KiB
Groff
340 lines
14 KiB
Groff
|
|
.TH SG_OPCODES "8" "September 2022" "sg3_utils\-1.48" SG3_UTILS
|
||
|
|
.SH NAME
|
||
|
|
sg_opcodes \- report supported SCSI commands or task management functions
|
||
|
|
.SH SYNOPSIS
|
||
|
|
.B sg_opcodes
|
||
|
|
[\fI\-\-alpha\fR] [\fI\-\-compact\fR] [\fI\-\-enumerate\fR] [\fI\-\-help\fR]
|
||
|
|
[\fI\-\-hex\fR] [\fI\-\-inhex=FN\fR] [\fI\-\-json[=JO]\fR] [\fI\-\-mask\fR]
|
||
|
|
[\fI\-\-mlu\fR] [\fI\-\-no-inquiry\fR] [\fI\-\-opcode=OP[,SA]\fR]
|
||
|
|
[\fI\-\-pdt=DT\fR] [\fI\-\-raw\fR] [\fI\-\-rctd\fR] [\fI\-\-repd\fR]
|
||
|
|
[\fI\-\-sa=SA\fR] [\fI\-\-tmf\fR] [\fI\-\-unsorted\fR] [\fI\-\-verbose\fR]
|
||
|
|
[\fI\-\-version\fR] \fIDEVICE\fR
|
||
|
|
.PP
|
||
|
|
.B sg_opcodes
|
||
|
|
[\fI\-a\fR] [\fI\-c\fR] [\fI\-e\fR] [\fI\-H\fR] [\fI\-i=FN\fR] [\fI\-j\fR]
|
||
|
|
[\fI\-m\fR] [\fI\-M\fR] [\fI\-n\fR] [\fI\-o=OP\fR] [\fI\-p=DT\fR] [\fI\-q\fR]
|
||
|
|
[\fI\-R\fR] [\fI\-s=SA\fR] [\fI\-t\fR] [\fI\-u\fR] [\fI\-v\fR] [\fI\-V\fR]
|
||
|
|
[\fI\-?\fR] \fIDEVICE\fR
|
||
|
|
.SH DESCRIPTION
|
||
|
|
.\" Add any additional description here
|
||
|
|
.PP
|
||
|
|
This utility sends a SCSI REPORT SUPPORTED OPERATION CODES or a REPORT
|
||
|
|
SUPPORTED TASK MANAGEMENT FUNCTIONS command to the \fIDEVICE\fR and then
|
||
|
|
outputs 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
|
||
|
|
\fI\-\-opcode=OP\fR option (perhaps with additional information from the
|
||
|
|
\fI\-\-sa=SA\fR option).
|
||
|
|
.PP
|
||
|
|
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.
|
||
|
|
.PP
|
||
|
|
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.
|
||
|
|
.PP
|
||
|
|
This utility supports two command line syntaxes, the preferred 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.
|
||
|
|
.SH OPTIONS
|
||
|
|
Arguments to long options are mandatory for short options as well.
|
||
|
|
.TP
|
||
|
|
\fB\-a\fR, \fB\-\-alpha\fR
|
||
|
|
when all supported commands are being listed there is no requirement for
|
||
|
|
the device server (i.e. the \fIDEVICE\fR) to sort the list of commands. When
|
||
|
|
this option is given the list of supported commands is sorted by
|
||
|
|
name (alphabetically). When this option and the \fB\-\-unsorted\fR option are
|
||
|
|
both _not_ given then the list of supported commands is sorted
|
||
|
|
numerically (first by operation code and then by service action).
|
||
|
|
.TP
|
||
|
|
\fB\-c\fR, \fB\-\-compact\fR
|
||
|
|
some command names, especially those associated with some service 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 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 action
|
||
|
|
are not shown after the opcode. The CDB size field is not shown when this
|
||
|
|
option is given.
|
||
|
|
.TP
|
||
|
|
\fB\-e\fR, \fB\-\-enumerate\fR
|
||
|
|
this option prints the name of the SCSI command based on the given opcode,
|
||
|
|
peripheral device type and optionally the service action. If given,
|
||
|
|
\fIDEVICE\fR 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).
|
||
|
|
.TP
|
||
|
|
\fB\-h\fR, \fB\-\-help\fR
|
||
|
|
outputs the usage message summarizing command line options
|
||
|
|
then exits. Ignores \fIDEVICE\fR if given.
|
||
|
|
.TP
|
||
|
|
\fB\-H\fR, \fB\-\-hex\fR
|
||
|
|
outputs the response in ASCII hexadecimal to stdout. When used once or
|
||
|
|
twice, each line starts with a relative (hex) address starting at 0
|
||
|
|
on the first hex line output. The difference is when used twice the
|
||
|
|
hexadecimal bytes are rendered in ASCII at the right of each line;
|
||
|
|
non\-printable characters are replaced by "." .
|
||
|
|
.br
|
||
|
|
When used three or more times, there is no leading relative address
|
||
|
|
on each line. This output is suitable for being redirected to a file
|
||
|
|
which can later by given to the \fI\-\-inhex=FN\fR option.
|
||
|
|
.TP
|
||
|
|
\fB\-i\fR, \fB\-\-inhex\fR=\fIFN\fR
|
||
|
|
where \fIFN\fR is a file name whose contents are assumed to be ASCII
|
||
|
|
hexadecimal. If \fIDEVICE\fR is also given then \fIDEVICE\fR is ignored,
|
||
|
|
a warning is issued and the utility continues, decoding the file named
|
||
|
|
\fIFN\fR. See the "FORMAT OF FILES CONTAINING ASCII HEX" section in the
|
||
|
|
sg3_utils manpage for more information. If the \fI\-\-raw\fR option is
|
||
|
|
also given then the contents of \fIFN\fR are treated as binary.
|
||
|
|
.TP
|
||
|
|
\fB\-j\fR, \fB\-\-json[\fR=\fIJO\fR]
|
||
|
|
output is in JSON format instead of human readable form. See sg3_utils_json
|
||
|
|
manpage or use '?' for \fIJO\fR for a summary.
|
||
|
|
.TP
|
||
|
|
\fB\-m\fR, \fB\-\-mask\fR
|
||
|
|
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".
|
||
|
|
.TP
|
||
|
|
\fB\-M\fR, \fB\-\-mlu\fR
|
||
|
|
additionally prints out an indication (0 or 1) whether the command
|
||
|
|
effects all logical units in the containing target. MLU (Multiple Logical
|
||
|
|
Units) is a bit in the REPORT SUPPORTED OPERATION CODES response
|
||
|
|
introduced by proposal 18\-045r1 (and possibly in spc5r20). Without
|
||
|
|
the option, the default output format which lists all opcodes, does
|
||
|
|
not include a MLU indication.
|
||
|
|
.TP
|
||
|
|
\fB\-n\fR, \fB\-\-no-inquiry\fR
|
||
|
|
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 \fIDEVICE\fR 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 \fI\-\-raw\fR option)
|
||
|
|
is given then that summary is not printed on stdout.
|
||
|
|
.TP
|
||
|
|
\fB\-O\fR, \fB\-\-old\fR
|
||
|
|
Switch to older style options. Please use as first option.
|
||
|
|
.TP
|
||
|
|
\fB\-o\fR, \fB\-\-opcode\fR=\fIOP[,SA]\fR
|
||
|
|
the \fIDEVICE\fR will be queried for the given operation code (i.e. the
|
||
|
|
\fIOP\fR value) which is the first byte of a SCSI command. Optionally, if
|
||
|
|
a \fISA\fR value is given, it will be used as that SCSI command's service
|
||
|
|
action. Note that \fIOP\fR and \fIOP,0\fR are not the same thing, as SCSI
|
||
|
|
does allow the service action to be 0 (but not in this command). \fIOP\fR
|
||
|
|
and \fISA\fR are decimal unless prefixed by "0x" or they have a
|
||
|
|
trailing "h". \fIOP\fR should be in the range 0 to 255 (0xff) inclusive.
|
||
|
|
\fISA\fR should be in the range 0 to 65535 (0xffff) inclusive. When this
|
||
|
|
option is not given then all available SCSI commands supported by the
|
||
|
|
\fIDEVICE\fR are listed.
|
||
|
|
.TP
|
||
|
|
\fB\-p\fR, \fB\-\-pdt\fR=\fIDT\fR
|
||
|
|
where \fIDT\fR is the peripheral device type. This is used together with
|
||
|
|
the \fI\-\-enumerate\fR to differentiate when a command opcode (and perhaps
|
||
|
|
service action) is shared by multiple device types.
|
||
|
|
.br
|
||
|
|
This option may also be used with the \fI\-\-no-inquiry\fR 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 \fIDEVICE\fR.
|
||
|
|
.TP
|
||
|
|
\fB\-r\fR, \fB\-\-raw\fR
|
||
|
|
output response in binary (to stdout) unless the \fI\-\-inhex=FN\fR option
|
||
|
|
is also given. In that case the input file name (\fIFN\fR) is decoded as
|
||
|
|
binary (and the output is _not_ in binary (but may be hex)).
|
||
|
|
.TP
|
||
|
|
\fB\-R\fR, \fB\-\-rctd\fR
|
||
|
|
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 "\-".
|
||
|
|
.TP
|
||
|
|
\fB\-q\fR, \fB\-\-repd\fR
|
||
|
|
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 (revision 26).
|
||
|
|
.TP
|
||
|
|
\fB\-s\fR, \fB\-\-sa\fR=\fISA\fR
|
||
|
|
the \fIDEVICE\fR will be queried for a command with the given service
|
||
|
|
action (i.e. the \fISA\fR value). Used in conjunction with the
|
||
|
|
\fI\-\-opcode=OP\fR option. If this option is not given, \fI\-\-opcode=OP\fR
|
||
|
|
is given and the command in question does have a service action then a value
|
||
|
|
of 0 will be assumed. \fISA\fR is decimal and expected to be in the range 0
|
||
|
|
to 65535 (0xffff) inclusive.
|
||
|
|
.TP
|
||
|
|
\fB\-t\fR, \fB\-\-tmf\fR
|
||
|
|
list supported task management functions. This is done with the SCSI REPORT
|
||
|
|
SUPPORTED TASK MANAGEMENT FUNCTIONS command. When this option is chosen
|
||
|
|
the \fI\-\-alpha\fR, \fI\-\-opcode=OP\fR, \fI\-\-rctd\fR, \fI\-\-sa=SA\fR
|
||
|
|
and \fI\-\-unsorted\fR options are ignored.
|
||
|
|
.TP
|
||
|
|
\fB\-u\fR, \fB\-\-unsorted\fR
|
||
|
|
when all supported commands are being listed there is no requirement for
|
||
|
|
the device server (i.e. the \fIDEVICE\fR) to sort the list of commands. When
|
||
|
|
this option is given the list of supported commands is in the order given by
|
||
|
|
the \fIDEVICE\fR. When this option is not given the supported commands
|
||
|
|
are sorted numerically (first by operation code and then by service action).
|
||
|
|
.TP
|
||
|
|
\fB\-v\fR, \fB\-\-verbose\fR
|
||
|
|
increase level of verbosity. Can be used multiple times.
|
||
|
|
.TP
|
||
|
|
\fB\-V\fR, \fB\-\-version\fR
|
||
|
|
print out version string then exit.
|
||
|
|
.SH 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 management functions
|
||
|
|
were made obsolete.
|
||
|
|
.PP
|
||
|
|
In the 2.4 series of Linux kernels the \fIDEVICE\fR 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.
|
||
|
|
.SH EXIT STATUS
|
||
|
|
The exit status of sg_opcodes is 0 when it is successful. Otherwise see
|
||
|
|
the sg3_utils(8) man page.
|
||
|
|
.SH 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 \fI\-\-old\fR (or \fI\-O\fR) as the
|
||
|
|
first option. See the ENVIRONMENT VARIABLES section for another way to
|
||
|
|
force the use of these older command line options.
|
||
|
|
.TP
|
||
|
|
\fB\-a\fR
|
||
|
|
sort command alphabetically. Equivalent to \fI\-\-alpha\fR in main
|
||
|
|
description.
|
||
|
|
.TP
|
||
|
|
\fB\-c\fR
|
||
|
|
see the \fI\-\-compact\fR option above.
|
||
|
|
.TP
|
||
|
|
\fB\-e\fR
|
||
|
|
see the \fI\-\-enumerate\fR option above.
|
||
|
|
.TP
|
||
|
|
\fB\-H\fR
|
||
|
|
see the \fI\-\-hex\fR option above.
|
||
|
|
.TP
|
||
|
|
\fB\-m\fR
|
||
|
|
see the \fI\-\-mask\fR option above.
|
||
|
|
.TP
|
||
|
|
\fB\-n\fR
|
||
|
|
don't print a summary of the SCSI INQUIRY response on stdout.
|
||
|
|
.TP
|
||
|
|
\fB-N\fR, \fB\-\-new\fR
|
||
|
|
Switch to the newer style options.
|
||
|
|
.TP
|
||
|
|
\fB\-o\fR=\fIOP\fR
|
||
|
|
the \fIDEVICE\fR will be queried for the given operation code (i.e.
|
||
|
|
\fIOP\fR) which is the first byte of a SCSI command. \fIOP\fR 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 \fIDEVICE\fR are listed.
|
||
|
|
.TP
|
||
|
|
\fB\-p\fR=\fIDT\fR
|
||
|
|
see the \fI\-\-pdt=DT\fR option above.
|
||
|
|
.TP
|
||
|
|
\fB\-q\fR
|
||
|
|
set the read extended parameter data (REPD) bit in report TMF cdb.
|
||
|
|
Equivalent to \fI\-\-repd\fR in main description.
|
||
|
|
.TP
|
||
|
|
\fB\-R\fR
|
||
|
|
set the report command timeout descriptor (RCTD) bit in cdb. Equivalent
|
||
|
|
to \fI\-\-rctd\fR in main description.
|
||
|
|
.TP
|
||
|
|
\fB\-s\fR=\fISA\fR
|
||
|
|
the \fIDEVICE\fR will be queried for a command with the given service
|
||
|
|
action (i.e. \fISA\fR). Used in conjunction with the \fI\-o=OP\fR
|
||
|
|
option. If this option is not given, \fI\-o=OP\fR is given and the command
|
||
|
|
in question does have a service action then a value of 0 will be assumed.
|
||
|
|
\fISA\fR is hexadecimal and expected to be in the range 0 to ffff inclusive.
|
||
|
|
.TP
|
||
|
|
\fB\-t\fR
|
||
|
|
list supported task management functions. Equivalent to \fI\-\-tmf\fR in
|
||
|
|
the main description.
|
||
|
|
.TP
|
||
|
|
\fB\-u\fR
|
||
|
|
output all supported commands in the order given by \fIDEVICE\fR.
|
||
|
|
Equivalent to \fI\-\-unsorted\fR in main description.
|
||
|
|
.TP
|
||
|
|
\fB\-v\fR
|
||
|
|
increase level of verbosity. Can be used multiple times.
|
||
|
|
.TP
|
||
|
|
\fB\-V\fR
|
||
|
|
print out version string then exit.
|
||
|
|
.TP
|
||
|
|
\fB\-?\fR
|
||
|
|
output usage message. Ignore all other parameters.
|
||
|
|
.SH 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.
|
||
|
|
.PP
|
||
|
|
To see the information about a specific command give its operation
|
||
|
|
code to the '\-\-op=' option. A command line invocation is shown first
|
||
|
|
followed by a typical response:
|
||
|
|
.PP
|
||
|
|
# sg_opcodes \-\-op=93h /dev/sdb
|
||
|
|
.PP
|
||
|
|
Opcode=0x93
|
||
|
|
.br
|
||
|
|
Command_name: Write same(16)
|
||
|
|
.br
|
||
|
|
Command supported [conforming to SCSI standard]
|
||
|
|
.br
|
||
|
|
Usage data: 93 e2 00 00 00 00 ff ff ff ff 00 00 ff ff 00 00
|
||
|
|
.PP
|
||
|
|
The next example shows the supported task management functions:
|
||
|
|
.PP
|
||
|
|
# sg_opcodes \-\-tmf \-n /dev/sdb
|
||
|
|
.PP
|
||
|
|
Task Management Functions supported by device:
|
||
|
|
.br
|
||
|
|
Abort task
|
||
|
|
.br
|
||
|
|
Abort task set
|
||
|
|
.br
|
||
|
|
Clear ACA
|
||
|
|
.br
|
||
|
|
Clear task set
|
||
|
|
.br
|
||
|
|
Logical unit reset
|
||
|
|
.br
|
||
|
|
Query task
|
||
|
|
.PP
|
||
|
|
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:
|
||
|
|
.PP
|
||
|
|
# sg_opcodes \-\-enumerate \-\-op=0x9b,0xa
|
||
|
|
.PP
|
||
|
|
SCSI command:
|
||
|
|
.br
|
||
|
|
Read buffer(16), read data from echo buffer
|
||
|
|
.br
|
||
|
|
.SH 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 environment variable is equivalent to
|
||
|
|
using \fI\-\-old\fR (or \fI\-O\fR) as the first command line option.
|
||
|
|
.SH AUTHOR
|
||
|
|
Written by Douglas Gilbert
|
||
|
|
.SH "REPORTING BUGS"
|
||
|
|
Report bugs to <dgilbert at interlog dot com>.
|
||
|
|
.SH COPYRIGHT
|
||
|
|
Copyright \(co 2004\-2022 Douglas Gilbert
|
||
|
|
.br
|
||
|
|
This software is distributed under the GPL version 2. There is NO
|
||
|
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
|
.SH "SEE ALSO"
|
||
|
|
.B sg_inq,sg3_utils_json(sg3_utils)
|