Go to main content

man pages section 1M: System Administration Commands

Exit Print View

Updated: July 2017

sg_write_buffer (1m)


sg_write_buffer - send a SCSI WRITE BUFFER command


sg_write_buffer    [--help]    [--id=ID]   [--in=FILE]   [--length=LEN]
[--mode=MO]  [--offset=OFF]   [--raw]   [--skip=SKIP]   [--specific=MS]
[--verbose] [--version] DEVICE


SG_WRITE_BUFFER(8)                 SG3_UTILS                SG_WRITE_BUFFER(8)

       sg_write_buffer - send a SCSI WRITE BUFFER command

       sg_write_buffer    [--help]    [--id=ID]   [--in=FILE]   [--length=LEN]
       [--mode=MO]  [--offset=OFF]   [--raw]   [--skip=SKIP]   [--specific=MS]
       [--verbose] [--version] DEVICE

       Sends  a  SCSI WRITE BUFFER command to DEVICE, along with data provided
       by the user. In some cases no data is required, or  data  can  be  read
       from the file given in the --in=FILE option, or data is read from stdin
       when either --raw or --in=- is given.

       Some WRITE BUFFER command variants do not have associated data to  send
       to   the   device,   for   example  "activate_mc"  ("activate  deferred

       Arguments to long options are mandatory for short options as well.

       -h, --help
              output the usage message then exit. If used multiple times  also
              prints the mode names and their acronyms.

       -i, --id=ID
              this  option  sets the buffer id field in the cdb. ID is a value
              between 0 (default) and 255 inclusive.

       -I, --in=FILE
              read data from file FILE that will be sent with the WRITE BUFFER
              command.   If  FILE  is  '-'  then stdin is read until an EOF is
              detected (this is the same action as --raw).

       -l, --length=LEN
              where LEN is the length, in bytes, of data to be written to  the
              device.   If  not  given  (and  length  cannot  be  deduced from
              --in=FILE or --raw) then defaults to  zero.  If  the  option  is
              given and the length deduced from --in=FILE or --raw is less (or
              no data is provided), then bytes of 0xff are used as fill bytes.

       -m, --mode=MO
              this option sets the mode field  in  the  cdb.  MO  is  a  value
              between 0 (default) and 31 inclusive. Alternatively an abbrevia-
              tion can be given.  To list  the  available  mode  abbreviations
              give an invalid one (e.g. '--mode=xxx') or use the '-hh' option.

       -o, --offset=OFF
              this  option  sets  the buffer offset field in the cdb. OFF is a
              value between 0 (default) and 2**24-1 . It is a byte offset.

       -r, --raw
              read data from stdin until an EOF is detected. This data is sent
              with  the  WRITE  BUFFER  command  to DEVICE. The action of this
              option is the same as using '--in=-'.

       -s, --skip=SKIP
              this option is only active when --in=FILE is given and FILE is a
              regular  file,  rather than stdin. Data is read starting at byte
              offset SKIP  to  the  end  of  file  (or  the  amount  given  by
              --length=LEN).  If not given the byte offset defaults to 0 (i.e.
              the start of the file).

       -S, --specific=MS
              MS is the mode specific field in the cdb. This is a 3-bit  field
              so  the values 0 to 7 are accepted. This field was introduced in
              SPC-4 revision 32 and can be used to specify  additional  events
              that activate deferred microcode (when MO is 0xD).

       -v, --verbose
              increase the level of verbosity, (i.e. debug output).

       -V, --version
              print the version string and then exit.

       See attributes(5) for descriptions of the following attributes:

       |Availability   | system/storage/sg3_utils |
       |Stability      | Uncommitted              |
       If no --length=LEN is given this utility reads up to 8 MiB of data from
       the given file FILE (or stdin). If a larger amount of data is  required
       then  the --length=LEN option should be given. The user should be aware
       that most operating systems have limits on the amount of data that  can
       be  sent  with  one  SCSI  command.  In  Linux this depends on the pass
       through mechanism used (e.g. block SG_IO or the sg driver) and  various
       setting    in    sysfs    in    the   linux   lk   2.6   series   (e.g.

       Downloading incorrect microcode into a device has the ability to render
       that  device inoperable. One would hope that the device vendor verifies
       the data before activating it. If the  SCSI  WRITE  BUFFER  command  is
       given  values  in  its  cdb (e.g. LEN) that are inappropriate (e.g. too
       large) then the device should respond  with  a  sense  key  of  ILLEGAL
       REQUEST  and  an  additional  sense  code of INVALID FIELD in CDB. If a
       WRITE BUFFER command (or a sequence of them) fails due to device vendor
       verification  checks then it should respond with a sense key of ILLEGAL
       REQUEST and an additional sense code of COMMAND SEQUENCE ERROR.

       All numbers given with options are assumed  to  be  decimal.   Alterna-
       tively  numerical values can be given in hexadecimal preceded by either
       "0x" or "0X" (or has a trailing "h" or "H").

       The exit status of sg_write_buffer is 0 when it is  successful.  Other-
       wise see the sg3_utils(8) man page.

       Written by Luben Tuikov and Douglas Gilbert.

       Report bugs to <dgilbert at interlog dot com>.

       Copyright (C) 2006-2011 Luben Tuikov and Douglas Gilbert
       This  software is distributed under a FreeBSD license. There is NO war-
       ranty; not even for MERCHANTABILITY or FITNESS FOR  A  PARTICULAR  PUR-


       This     software     was    built    from    source    available    at
       https://java.net/projects/solaris-userland.   The  original   community
       source was downloaded from  http://sg.danny.cz/sg/p/sg3_utils-1.33.tgz

       Further information about this software can be found on the open source
       community website at http://sg.danny.cz/sg/sg3_utils.html.

sg3_utils-1.33                    August 2011               SG_WRITE_BUFFER(8)