Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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]	[--in-
       hex=FN]	[--json[=JO]]  [--js-file=JFN] [--mask]	[--mlu]	[--no-inquiry]
       [--opcode=OP[,SA]]  [--pdt=DT]  [--raw]	[--rctd]  [--repd]   [--sa=SA]
       [--tmf] [--unsorted] [--verbose]	[--version] DEVICE

       sg_opcodes  [-a]	 [-c]  [-e]  [-H]  [-i=FN] [-j]	[-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. 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
	      "." .
	      When  used three or more times, there is no leading relative ad-
	      dress on each line. This output is suitable for being redirected
	      to a file	which can later	by given to the	--inhex=FN option.

       -i, --inhex=FN
	      where FN is a file name whose contents are assumed to  be	 ASCII
	      hexadecimal.  If	DEVICE is also given then DEVICE is ignored, a
	      warning is issued	and the	utility	continues, decoding  the  file
	      named  FN. See the "HEX, BINARY AND JSON FORMATS"	section	in the
	      sg3_utils	manpage	for more information. If the --raw  option  is
	      also given then the contents of FN are treated as	binary.

       -j[=JO],	--json[=JO]
	      output  is  in JSON format instead of plain text form. Note that
	      arguments	to the short and long form are themselves optional and
	      if present start with "="	and no whitespace is permitted	around
	      that "=".
	      See sg3_utils_json manpage or use	'?' for	JO to get a summary.

       -J, --js-file=JFN
	      output  is in JSON format	and it is sent to a file named JFN. If
	      that file	exists then it is truncated. By	default, the JSON out-
	      put is sent to stdout.
	      When this	option is given, the --json[=JO] option	is implied and
	      need not be given. The --json[=JO] option	may still be needed to
	      set the JO parameter to non-default values.

       -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	not in
	      this  command). 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.
	      Numerical	values between -1 and 31 (inclusive) may be used where
	      -1 implies what  is  in  SPC.  Names  like  'tape',  'disk'  and
	      'processor' may also be given.
	      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 response in binary	(to stdout) unless the --inhex=FN  op-
	      tion is also given. In that case the input file name (FN)	is de-
	      coded  as	 binary	(and the output	is _not_ in binary (but	may be
	      hex)).

       -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 (C) 2004-2023 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_json(sg3_utils)

sg3_utils-1.48			   June	2023			 SG_OPCODES(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sg_opcodes&sektion=8&manpath=FreeBSD+Ports+14.3.quarterly>

home | help