sg_write_buffer man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

SG_WRITE_BUFFER(8)		   SG3_UTILS		    SG_WRITE_BUFFER(8)

NAME
       sg_write_buffer - send SCSI WRITE BUFFER commands

SYNOPSIS
       sg_write_buffer	   [--bpw=CS]	  [--help]    [--id=ID]	   [--in=FILE]
       [--length=LEN] [--mode=MO] [--offset=OFF] [--raw] [--skip=SKIP] [--spe‐
       cific=MS] [--timeout=TO] [--verbose] [--version] DEVICE

DESCRIPTION
       Sends one or more SCSI WRITE BUFFER commands 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" activates deferred microcode
       that was sent via prior WRITE BUFFER commands.  There  is  a  different
       method	used   to   download   microcode   to  SES  devices,  see  the
       sg_ses_microcode utility.

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

       -b, --bpw=CS
	      where CS is the chunk size in bytes. This will  be  the  maximum
	      number  of bytes sent per WRITE BUFFER command. So if CS is less
	      than the effective length then multiple  WRITE  BUFFER  commands
	      are  sent,  each	taking	the  next chunk from the read data and
	      increasing the buffer offset field in the WRITE  BUFFER  command
	      by  the  appropriate  amount.  The  default is a chunk size of 0
	      which is interpreted as a very large number hence only one WRITE
	      BUFFER  command  will  be	 sent. This option should only be used
	      with modes that "download microcode, with offsets	 ...";	namely
	      either mode 0x6, 0x7, 0xd or 0xe.
	      The number in CS can optionally be followed by ",act" or ",acti‐
	      vate".  In this case after WRITE BUFFER commands have been  sent
	      until  the  effective  length  is exhausted another WRITE BUFFER
	      command with its mode set to "Activate deferred microcode	 mode"
	      [mode 0xf] is sent.

       -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). Data is read from
	      the beginning of FILE except in the case when it	is  a  regular
	      file and the --skip=SKIP option is given.

       -l, --length=LEN
	      where  LEN is the length, in bytes, of data to be written to the
	      device.  If not given (and the 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.   See the MODES section below. To list the
	      available mode abbreviations at run time	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).

       -t, --timeout=TO
	      TO  is  the  command  timeout (in seconds) for each WRITE BUFFER
	      command issued by this utility. Its default value is 300 seconds
	      (5  minutes)  and	 should	 only be altered if this is not suffi‐
	      cient.

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

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

MODES
       Following is a list of WRITE  BUFFER  command  settings	for  the  MODE
       field.	First  is an acronym accepted by the MO argument of this util‐
       ity.  Following the acronym in square brackets  are  the	 corresponding
       decimal and hex values that may also be given for MO. The following are
       listed in numerical order.

       hd  [0, 0x0]
	      Combined header and data (obsolete in SPC-4).

       vendor  [1, 0x1]
	      Vendor specific.

       data  [2, 0x2]
	      Data (was called "Write Data" in SPC-3).

       dmc  [4, 0x4]
	      Download microcode and activate (was called "Download microcode"
	      in SPC-3).

       dmc_save	 [5, 0x5]
	      Download	microcode,  save,  and	activate (was called "Download
	      microcode and save" in SPC-3).

       dmc_offs	 [6, 0x6]
	      Download microcode with offsets and activate (was called	"Down‐
	      load microcode with offsets" in SPC-3).

       dmc_offs_save  [7, 0x7]
	      Download	microcode with offsets, save, and activate (was called
	      "Download microcode with offsets and save" in SPC-3).

       echo  [10, 0xa]
	      Write data to echo buffer (was called "Echo buffer" in SPC-3).

       dmc_offs_ev_defer  [13, 0xd]
	      Download microcode with offsets, select activation events, save,
	      and defer activate (introduced in SPC-4).

       dmc_offs_defer  [14, 0xe]
	      Download	microcode  with	 offsets,  save,  and  defer  activate
	      (introduced in SPC-4).

       activate_mc  [15, 0xf]
	      Activate deferred microcode (introduced in SPC-4).

       en_ex  [26, 0x1A]
	      Enable expander communications protocol and Echo	buffer	(obso‐
	      lete in SPC-4).

       dis_ex  [27, 0x1B]
	      Disable expander communications protocol (obsolete in SPC-4).

       deh  [28, 0x1C]
	      Download	application client error history (was called "Download
	      application log" in SPC-3).

NOTES
       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/3 series (e.g.
       /sys/block/sda/queue/max_sectors_kb). Devices (i.e. logical units) also
       typically  have limits on the maximum amount of data they can handle in
       one command. These two limitations suggest that	modes  containing  the
       word  "offset"  together	 with  the  --bpw=CS  option  are  required as
       firmware files get larger and larger. And CS can be  quite  small,  for
       example 4096 bytes, resulting in many WRITE BUFFER commands being sent.

       Attempting  to download a microcode/firmware file that is too large may
       cause an error to occur in the pass-through layer (i.e. before the SCSI
       command	is  issued).  In Linux such error reports can be obscure as in
       "pass through os error invalid argument". FreeBSD reports  such	errors
       well  to	 the  machine's console but returns a cryptic error message to
       this utility.

       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").

EXAMPLES
       The following sends new firmware to an enclosure. Sending a 1.5 MB file
       in one WRITE BUFFER command caused the enclosure to lock up temporarily
       and did not update the firmware. Breaking the firmware file into	 4  KB
       chunks (an educated guess) was more successful:

	 sg_write_buffer -b 4k -m dmc_offs_save -I firmware.bin /dev/sg4

       The  firmware  update  occurred in the following enclosure power cycle.
       With a modern enclosure the Extended Inquiry VPD page gives indications
       in which situations a firmware upgrade will take place.

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

AUTHORS
       Written by Luben Tuikov and Douglas Gilbert.

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

COPYRIGHT
       Copyright © 2006-2015 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‐
       POSE.

SEE ALSO
       sg_read_buffer, sg_ses_microcode(sg3_utils)

sg3_utils-1.41			 February 2015		    SG_WRITE_BUFFER(8)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net