| .TH SG_RAW "8" "December 2012" "sg3_utils\-1.35" SG3_UTILS |
| .SH NAME |
| sg_raw \- send 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 <inguin at gmx dot de>. |
| .SH COPYRIGHT |
| Copyright \(co 2001\-2012 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 |
| |