.TH SG_SENDDIAG "8" "May 2018" "sg3_utils\-1.43" SG3_UTILS
.SH NAME
sg_senddiag \- performs a SCSI SEND DIAGNOSTIC command
.SH SYNOPSIS
.B sg_senddiag
[\fI\-\-doff\fR] [\fI\-\-extdur\fR] [\fI\-\-help\fR] [\fI\-\-hex\fR]
[\fI\-\-list\fR] [\fI\-\-maxlen=LEN\fR] [\fI\-\-page=PG\fR] [\fI\-\-pf\fR]
[\fI\-\-raw=H,H...\fR] [\fI\-\-raw=\-\fR] [\fI\-\-selftest=ST\fR]
[\fI\-\-test\fR] [\fI\-\-timeout=SECS\fR] [\fI\-\-uoff\fR] [\fI\-\-verbose\fR]
[\fI\-\-version\fR] \fIDEVICE\fR
.PP
.B sg_senddiag
[\fI\-doff\fR] [\fI\-e\fR] [\fI\-h\fR] [\fI\-H\fR] [\fI\-l\fR] [\fI\-pf\fR]
[\fI\-raw=H,H...\fR] [\fI\-raw=\-\fR] [\fI\-s=ST\fR] [\fI\-t\fR]
[\fI\-T=SECS\fR] [\fI\-uoff\fR] [\fI\-v\fR] [\fI\-V\fR] [\fI\-?\fR]
\fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
This utility sends a SCSI SEND DIAGNOSTIC command to the \fIDEVICE\fR. It
can issue self\-tests, find supported diagnostic pages or send arbitrary
diagnostic pages.
.PP
When the \fI\-\-list\fR option and a \fIDEVICE\fR are given then the utility
sends a SCSI RECEIVE DIAGNOSTIC RESULTS command to fetch the response (i.e.
the page numbers of supported diagnostic pages).
.PP
When the \fI\-\-list\fR option is given without a \fIDEVICE\fR then a list of
diagnostic page names and their numbers, known by this utility, are listed.
.PP
This utility supports two command line syntax\-es, 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\-d\fR, \fB\-\-doff\fR
set the Device Offline (DevOffL) bit (default is clear). Only significant
when \fI\-\-test\fR option is set for the default self\-test. When set other
operations on any logical units controlled by the this device server (target)
may be affected (delayed) while a default self\-test is underway.
.TP
\fB\-e\fR, \fB\-\-extdur\fR
outputs the expected extended self\-test duration. The duration is given in
seconds (and minutes in parentheses). This figure is obtained from mode page
0xa (i.e. the control mode page).
.TP
\fB\-h\fR, \fB\-\-help\fR
print usage message then exit.
.TP
\fB\-H\fR, \fB\-\-hex\fR
outputs response from RECEIVE DIAGNOSTIC RESULTS in hex rather than decode it.
Only the Supported Diagnostic Pages diagnostic page (i.e. page_code=0) is
decoded; other pages (e.g. those used by SES) are output in hex.
.br
If \fI\-\-hex\fR is used once, the hex output has a relative address at the
start of each line. If \fI\-\-hex\fR is used twice, then ASCII is shown to
the right of each line of hex. If \fI\-\-hex\fR is used three time or more,
only the hex is output, in two character pairs (i.e. a byte) space separated
and up to 16 bytes per line. This latter form, if placed in a file or piped
through to another invocation, is suitable for the \fI\-\-raw=\-\fR option.
.TP
\fB\-l\fR, \fB\-\-list\fR
when a \fIDEVICE\fR is also given lists the names of all diagnostic pages
supported by this device. The request is sent via a SEND DIAGNOSTIC
command (with the "pF" bit set) and the response is fetched by a RECEIVE
DIAGNOSTIC RESULTS command. When used in the absence of a \fI\-\-list\fR
argument then a list of diagnostic page names and their numbers, known
by this utility, are listed.
.TP
\fB\-m\fR, \fB\-\-maxlen\fR=\fILEN\fR
where \fILEN\fR is the value placed in the parameter list length field of a
SEND DIAGNOSTIC command or in the allocation length field of a RECEIVE
DIAGNOSTIC RESULTS command. This only occurs when the other options imply
there will be data sent or received by the command. The default value
is 4096 bytes. \fILEN\fR cannot exceed 65535 or 0xffff in hexadecimal.
.TP
\fB\-O\fR, \fB\-\-old\fR
Switch to older style options. Please use as first option.
.TP
\fB\-P\fR, \fB\-\-page\fR=\fIPG\fR
where \fIPG\fR is the RECEIVE DIAGNOSTIC RESULTS command page code field.
If this option is given the PCV bit in that command is set. When this option
is given then no SEND DIAGNOSTIC command is sent (unlike \fI\-\-list\fR).
If \fIPG\fR is 0 then the response is decoded as if it is the SPC Supported
Diagnostic pages diagnostic page. Other \fIPG\fR values (i.e. 1 to 255)
have their responses output in hex.
.TP
\fB\-p\fR, \fB\-\-pf\fR
set Page Format (PF) bit. By default it is clear (i.e. 0) unless the
list \fI\-\-list\fR option is given in which case the Page Format
bit is set (as required by SPC\-3).
.TP
\fB\-r\fR, \fB\-\-raw\fR=\fIH,H...\fR
string of comma separated hex numbers each of which should resolve to
a byte value (i.e. 0 to ff inclusive). A (single) space separated string
of hex bytes is also allowed but the list needs to be in quotes. This
sequence forms a diagnostic page to be sent with the SCSI SEND DIAGNOSTIC
command. Mostly likely the \fI\-\-pf\fR option should also be given.
.TP
\fB\-r\fR, \fB\-\-raw=\-\fR
reads sequence of bytes from stdin. The sequence may be comma, space, tab
or linefeed (newline) separated. If a line contains "#" then the remaining
characters on that line are ignored. Otherwise each non separator character
should resolve to a byte value (i.e. 0 to ff inclusive). This sequence forms
a diagnostic page to be sent with the SCSI SEND DIAGNOSTIC command. Mostly
likely the \fI\-\-pf\fR option should also be given.
.TP
\fB\-s\fR, \fB\-\-selftest\fR=\fIST\fR
where \fIST\fR is the self\-test code. The default value is 0 which is
inactive. Some other values:
.br
  \fB1\fR : background short self\-test
.br
  \fB2\fR : background extended self\-test
.br
  \fB4\fR : aborts a (background) self\-test that is in progress
.br
  \fB5\fR : foreground short self\-test
.br
  \fB6\fR : foreground extended self\-test
.br
This option is mutually exclusive with default self\-test (i.e.
can't have (\fIST\fR > 0) and \fI\-\-test\fR).
.TP
\fB\-t\fR, \fB\-\-test\fR
sets the _default_ Self Test (SelfTest) bit. By default this is clear (0).
The \fI\-\-selftest=ST\fR option should not be active together with this
option. Both the \fI\-\-doff\fR and/or \fI\-\-uoff\fR options can be used
with this option.
.TP
\fB\-T\fR, \fB\-\-timeout\fR=\fISECS\fR
where \fISECS\fR is a timeout value (in seconds) for foreground self\-test
operations. The default value is 7200 seconds (2 hours) and any values
of \fISECS\fR less than the default are ignored.
.TP
\fB\-u\fR, \fB\-\-uoff\fR
set the Unit Offline (UnitOffL) bit (default is clear). Only significant
when \fI\-\-test\fR option is set for the default self\-test. When set other
operations on this logical unit may be affected (delayed) while a default
self\-test is underway. Some devices (e.g. Fujitsu disks) do more tests
when this bit is set.
.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
All devices should support the default self\-test. The 'short' self\-test
codes should complete in 2 minutes or less. The 'extended' self\-test
codes' maximum duration is vendor specific (e.g. a little over 10 minutes
with the author's disks). The foreground self\-test codes wait until they
are completed while the background self\-test codes return immediately. The
results of both foreground and background self\-test codes are placed in
the 'self\-test results' log page (see sg_logs(8)). The SCSI command timeout
for this utility is set to 60 minutes to allow for slow foreground extended
self\-tests.
.PP
If the \fIDEVICE\fR is a disk then no file systems residing on that disk
should be mounted during a foreground self\-test. The reason is that other
SCSI commands may become queued behind the foreground self\-test and timeout.
.PP
When the \fI\-\-raw=H,H...\fR option is given then self\-tests should not
be selected. However the \fB\-\-pf\fR (i.e. "page format") option should be
given. The length of the diagnostic page to be sent is derived from the
number of bytes given to the \fI\-\-raw=H,H...\fR option. The diagnostic
page code (number) should be the first byte of the sequence (i.e. as
dictated by SPC\-3 diagnostic page format). See the EXAMPLES section below.
.PP
Arbitrary diagnostic pages can be read (in hex) with the sg_ses(8)
utility (not only those defined in SES\-2).
.PP
If the utility is used with no options (e.g. "sg_senddiag /dev/sg1")
Then a degenerate SCSI SEND DIAGNOSTIC command is sent with zero
in all its fields apart from the opcode. Some devices report this
as an error while others ignore it. It is not entirely clear from
SPC\-3 if it is invalid to send such a command.
.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.
.PP
To access SCSI enclosures see the sg_ses(8) utility. sg_ses uses the
SCSI SEND DIAGNOSTIC and RECEIVE DIAGNOSTIC RESULTS commands as outlined
in the SES\-2 (draft) standard.
.SH EXIT STATUS
The exit status of sg_senddiag 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\-doff\fR
set the Device Offline (DevOffL) bit (default is clear). Only significant
when \fI\-t\fR option is set for the default self\-test. Equivalent to
\fI\-\-doff\fR in the main description.
.TP
\fB\-e\fR
outputs the expected extended self\-test duration. Equivalent to
\fI\-\-extdur\fR in the main description.
.TP
\fB\-h\fR
outputs response from RECEIVE DIAGNOSTIC RESULTS in hex rather than decode
it.
.TP
\fB\-H\fR
outputs response from RECEIVE DIAGNOSTIC RESULTS in hex rather than decode it.
.TP
\fB\-l\fR
when a \fIDEVICE\fR is also given lists the names of all diagnostic
pages supported by this device. The request is sent via a SEND DIAGNOSTIC
command (with the "pf" bit set) and the response is fetched by a RECEIVE
DIAGNOSTIC RESULTS command. When used in the absence of a \fIDEVICE\fR
argument then a list of diagnostic page names and their numbers, known
by this utility, are listed.
.TP
\fB-N\fR, \fB\-\-new\fR
Switch to the newer style options.
.TP
\fB\-pf\fR
set Page Format (PF) bit. By default it is clear (i.e. 0) unless
the \fI\-l\fR option is given in which case the Page Format bit is set
(as required by SPC\-3).
.TP
\fB\-raw\fR=\fIH,H...\fR
string of comma separated hex numbers each of which should resolve to
a byte value (i.e. 0 to ff inclusive). This sequence forms a diagnostic
page to be sent with the SCSI SEND DIAGNOSTIC command. Mostly likely
the \fI\-pf\fR option should also be given.
.TP
\fB\-raw=-\fR
reads sequence of bytes from stdin. The sequence may be comma, space, tab
or linefeed (newline) separated. If a line contains "#" then the remaining
characters on that line are ignored. Otherwise each non separator character
should resolve to a byte value (i.e. 0 to ff inclusive). This sequence forms
a diagnostic page to be sent with the SCSI SEND DIAGNOSTIC command. Mostly
likely the \fI\-pf\fR option should also be given.
.TP
\fB\-s\fR=\fIST\fR
where \fIST\fR is the self\-test code. The default value is 0 which is
inactive. A value of 1 selects a background short self\-test; 2 selects
a background extended self\-test; 5 selects a foreground short self\-test;
6 selects a foreground extended test. A value of 4 will abort
a (background) self\-test that is in progress. This option is mutually
exclusive with default self\-test (i.e. \fI\-t\fR).
.TP
\fB\-t\fR
sets the _default_ Self Test (SelfTest) bit. By default this is clear (0).
The \fI\-s=ST\fR option should not be active together with this option.
Both the \fI\-doff\fR and/or \fI\-uoff\fR options can be used with this
option.
.TP
\fB\-T\fR=\fISECS\fR
where \fISECS\fR is a timeout value (in seconds) for foreground self\-test
operations. See the \fI\-\-timeout=SECS\fR option above.
.TP
\fB\-uoff\fR
set the Unit Offline (UnitOffL) bit (default is clear). Equivalent to
\fI\-\-uoff\fR in the 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 sub\-directory in the sg3_utils packages contains two example
scripts that turn on the CJTPAT (jitter pattern) on some SAS disks (one
script for each phy). One possible invocation for phy 1 is:
.PP
  sg_senddiag \-\-pf \-\-raw=\- /dev/sg2 < sdiag_sas_p1_cjtpat.txt
.PP
There is also an example script that turns on the IDLE pattern. Once a
test pattern has been started it can be turned off by resetting the phy
or with the STOP phy pattern function:
.PP
  sg_senddiag \-\-pf \-\-raw=\- /dev/sg2 < sdiag_sas_p1_stop.txt
.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 2003\-2018 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_ses(8), sg_logs(8), smartmontools(see net)
