.TH SG_RAW "8" "February 2011" "sg3_utils\-1.31" SG3_UTILS .SH NAME sg_raw \- sends an arbitrary SCSI command to a device .SH SYNOPSIS .B sg_raw [\fIOPTIONS\fR] \fIDEVICE\fR CDB0 CDB1 ... .SH DESCRIPTION This utility sends an arbitrary SCSI command (between 6 and 256 bytes) to the \fIDEVICE\fR. There may be no associated data transfer; or data may be read from a file and sent to the \fIDEVICE\fR; or data may be received from the \fIDEVICE\fR and then displayed or written to a file. If supported by the pass through, bidirectional commands may be sent (i.e. containing both data to be sent to the \fIDEVICE\fR and received from the \fIDEVICE\fR). .PP The SCSI command may be between 6 and 256 bytes long. Each command byte is specified in plain hex format (00..FF) without a prefix or suffix. See EXAMPLES section below. .PP The commands pass through a generic SCSI interface which is implemented for several operating systems including Linux, FreeBSD and Windows. .SH OPTIONS Arguments to long options are mandatory for short options as well. .TP \fB\-b\fR, \fB\-\-binary\fR Dump data in binary form, even when writing to stdout. .TP \fB\-h\fR, \fB\-\-help\fR Display usage information and exit. .TP \fB\-i\fR, \fB\-\-infile\fR=\fIIFILE\fR Read data from \fIIFILE\fR instead of stdin. This option is ignored if \fB\-\-send\fR is not specified. .TP \fB\-k\fR, \fB\-\-skip\fR=\fILEN\fR Skip the first \fILEN\fR bytes of the input file or stream. This option is ignored if \fB\-\-send\fR is not specified. .TP \fB\-n\fR, \fB\-\-nosense\fR Don't display SCSI Sense information. .TP \fB\-o\fR, \fB\-\-outfile\fR=\fIOFILE\fR Write data received from the \fIDEVICE\fR to \fIOFILE\fR. The data is written in binary. By default, data is dumped in hex format to stdout. If \fIOFILE\fR is '-' then data is dumped in binary to stdout. This option is ignored if \fB\-\-request\fR is not specified. .TP \fB\-r\fR, \fB\-\-request\fR=\fIRLEN\fR Expect to receive up to \fIRLEN\fR bytes of data from the \fIDEVICE\fR. \fIRLEN\fR may be suffixed with 'k' to use kilobytes (1024 bytes) instead of bytes. .TP \fB\-R\fR, \fB\-\-readonly\fR Open \fIDEVICE\fR read\-only. The default (without this option) is to open it read\-write. .TP \fB\-s\fR, \fB\-\-send\fR=\fISLEN\fR Read \fISLEN\fR bytes of data, either from stdin or from a file, and send them to the \fIDEVICE\fR. .TP \fB\-t\fR, \fB\-\-timeout\fR=\fISEC\fR Wait up to \fISEC\fR seconds for command completion (default: 20). Note that if a command times out the operating system may start by aborting the command and if that is unsuccessful it may attempt to reset the device. .TP \fB\-v\fR, \fB\-\-verbose\fR Increase level of verbosity. Can be used multiple times. .TP \fB\-V\fR, \fB\-\-version\fR Display version and license information and exit. .SH NOTES The sg_inq utility can be used to send an INQUIRY command to a device to determine its peripheral device type (e.g. '1' for a streaming device (tape drive)) which determines which SCSI command sets a device should support (e.g. SPC and SSC). The sg_vpd utility probes the Vital Product Pages of a devices which may contain useful information. .PP The ability to send more than a 16 byte CDB (in some cases 12 byte CDB) may be restricted by the pass-through interface, the low level driver or the transport. .SH EXAMPLES These examples, apart from the last one, use Linux device names. For suitable device names in other supported Operating Systems see the sg3_utils(8) man page. .TP sg_raw /dev/scd0 1b 00 00 00 02 00 Eject the medium in CD drive /dev/scd0. .TP sg_raw \-r 1k /dev/sg0 12 00 00 00 60 00 Perform an INQUIRY on /dev/sg0 and dump the response data (up to 1024 bytes) to stdout. .TP sg_raw \-s 512 \-i i512.bin /dev/sda 3b 02 00 00 00 00 00 02 00 00 Showing an example of writing 512 bytes to a sector on a disk is a little dangerous. Instead this example will read i512.bin (assumed to be 512 bytes long) and use the SCSI WRITE BUFFER command to send it to the "data" buffer (that is mode 2). This is a safe operation. .TP sg_raw \-r 512 \-o o512.bin /dev/sda 3c 02 00 00 00 00 00 02 00 00 This will use the SCSI READ BUFFER command to read 512 bytes from the "data" buffer (i.e. mode 2) then write it to the o512.bin file. When used in conjunction with the previous example, if both commands work then 'cmp i512.bin o512.bin' should show a match. .TP sg_raw \-\-infile=urandom.bin \-\-send=512 \-\-request=512 \-\-outfile=out.bin "/dev/bsg/7:0:0:0" 53 00 00 00 00 00 00 00 01 00 This is a bidirectional XDREADWRITE(10) command being sent via a Linux bsg device. Note that data is being read from "urandom.bin" and sent to the device (data\-out) while resulting data (data\-in) is placed in the "out.bin" file. Also note the length of both is 512 bytes which corresponds to the transfer length of 1 (block) in the cdb (i.e. the second last byte). .TP sg_raw.exe PhysicalDrive1 a1 0c 0e 00 00 00 00 00 00 e0 00 00 This example is from Windows and shows a ATA STANDBY IMMEDIATE command being sent to PhysicalDrive1. That ATA command is contained within the SCSI ATA PASS-THROUGH(12) command (see the SAT or SAT-2 standard at http://www.t10.org). Notice that the STANDBY IMMEDIATE command does not send or receive any additional data, however if it fails sense data should be returned and displayed. .SH EXIT STATUS The exit status of sg_raw is 0 when it is successful. Otherwise see the sg3_utils(8) man page. .SH AUTHOR Written by Ingo van Lil .SH "REPORTING BUGS" Report bugs to . .SH COPYRIGHT Copyright \(co 2001\-2011 Ingo van Lil .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, sg_vpd, sg3_utils (sg3_utils), plscsi