SG_SENDDIAG(8)

NAME
sg_senddiag - performs a SCSI SEND DIAGNOSTIC command

SYNOPSIS
sg_senddiag [-doff] [-e] [-h] [-l] [-pf] [-s=<self_test_code>] [-t] [-uoff] [-v] [-V] [-?] <scsi_device>

DESCRIPTION

This utility sends a SEND DIAGNOSTIC SCSI command to the given device. In the case of '-l' option it then sends a RECEIVE DIAGNOSTIC SCSI command to fetch the response (i.e. the page numbers of supported diagnostic pages). This utility is mainly used to make the device do self tests.

-doff
    set the Device Offline (DevOfl) bit (default is clear). Only significant when '-t' option is set for the default self test. In this sense the 'Device' is a target (with all contained logical units potentially impacted).

-e  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 (control page).

-h  outputs response from RECEIVE DIAGNOSTIC in hex rather than decode it.

-l  lists the names of all diagnostic pages supported by this device. The request is sent via a SEND DIAGNOSTIC command and the response is fetched by a RECEIVE DIAGNOSTIC command.

-pf set Page Format (PF) bit. By default it is clear (i.e. 0).

-s=<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. '-t').

-t  sets the _default_ Self Test (SelfTest) bit. By default this is clear (0). The '-s=<num>' option should not be active together with this option. Both the '-doff' and/or '-uoff' options can be used with this option.

-uoff
    set the Unit Offline (DevOfl) bit (default is clear). Only significant when '-t' option is set for the default self test. In this sense the 'Unit' is a logical units on a target.

-v  increase level of verbosity: print out SCSI commands in hex prior to sending them to the device.

-V  print out version string

-?  output usage message. Ignore all other parameters.

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 my 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). The SCSI command timeout for this utility is set to 60 minutes to allow for slow foreground extended self tests.

If the given device 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.

In the 2.4 series of Linux kernels the given device must be a SCSI generic (sg) device. In the 2.6 series block devices (e.g. disks and SCSI DVDs) can also be specified. For example 'sg_senddiag -t /dev/sda' will work in the 2.6 series kernels.

To access SCSI enclosures see the sg_ses utility. sg_ses uses SCSI SEND and RECEIVE DIAGNOSTICS commands as outlined in the SES-2 (draft) standard.

AUTHOR
Written by Doug Gilbert

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

COPYRIGHT
Copyright © 2003-2004 Douglas Gilbert
This software is distributed under the GPL version 2. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
sg_ses(sg3_utils), smartmontools(see net), sg_logs(sg3_utils)