man pages section 1M: System Administration Commands

Exit Print View

Updated: July 2014
 
 

sg_wr_mode (1m)

Name

sg_wr_mode - write mode page

Synopsis

sg_wr_mode  [--contents=H,H...]  [--dbd]  [--force] [--help]
[--len=10|6]  [--mask=M,M...]   [--page=PG[,SPG]]   [--save]
[--verbose] [--version] DEVICE

Description




SG3_UTILS                                           SG_WR_MODE(8)



NAME
     sg_wr_mode - write mode page

SYNOPSIS
     sg_wr_mode  [--contents=H,H...]  [--dbd]  [--force] [--help]
     [--len=10|6]  [--mask=M,M...]   [--page=PG[,SPG]]   [--save]
     [--verbose] [--version] DEVICE

DESCRIPTION
     Writes  a  modified  mode page to DEVICE. Uses the SCSI MODE
     SENSE (6 or 10 byte variant) command to fetch  the  existing
     mode  data  which includes a mode page (or subpage). It then
     combines that with the  contents,  potentially  masked,  and
     writes  the  modified mode page with the SCSI MODE SELECT (6
     or 10 byte variant) command. This utility  does  not  modify
     the  block  descriptor(s);  if  any  block  descriptors  are
     fetched by the  MODE  SENSE  command  then  the  same  block
     descriptors  are written back with the following MODE SELECT
     command.

     If a contents argument is not given then the various  compo-
     nents  (i.e.   header, block descriptor(s) and mode page) of
     the "current" values of the existing mode page  are  printed
     out.  In  this  case  the  mode  page  is not altered on the
     device.

     If the contents are specified, and a mask is not  specified,
     then the contents must match the existing mode page in vari-
     ous aspects  unless  the  --force  option  is  given.  These
     include  length, mode page code and subpage code if applica-
     ble. If all is well then the contents string is  written  to
     DEVICE as the new mode page.

     If  both  contents  and mask strings are specified then only
     bit positions in the contents corresponding to set  bits  in
     the mask are taken while the existing mode page supplies bit
     positions corresponding to clear bits.  When a mask is given
     then  the  mask  and/or the contents may be shorter than the
     existing mode page. If the mask is shorter than the contents
     then the remaining bytes are taken from the contents. If the
     contents are shorter than the existing mode  page  then  the
     remaining bytes are taken from the existing mod page.

     The force option allows the contents string to be written as
     the new mode page without any prior checks on  the  existing
     mode  page. This should only be required for vendor specific
     mode pages. The existing mode data is ignored apart from the
     block  descriptors  which  can  be suppressed with the --dbd
     option if need be.

     Changing individual fields in a mode page is  probably  more
     easily   done   with  the  sdparm  utility.  Fields  can  be



sg3_utils-1.27       Last change: April 2009                    1






SG3_UTILS                                           SG_WR_MODE(8)



     identified by acronym or by a numerical descriptor.

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

     -c, --contents=H,H...
          where H,H... is a string of comma separated hex numbers
          each of which should resolve to a byte value (i.e. 0 to
          ff inclusive). A (single) space separated string of hex
          numbers is also allowed but the list  needs  to  be  in
          quotes. This is the new contents of the mode page to be
          written to DEVICE, potentially  filtered  by  the  mask
          string.

     -c, --contents=-
          reads  contents  string  from stdin. The hex numbers in
          the string may be comma, space, tab or  linefeed  (new-
          line)  separated.  If  a  line  contains  "#"  then the
          remaining characters on that line are  ignored.  Other-
          wise  each  non separator character should resolve to a
          byte value (i.e. 0 to ff inclusive). This forms the new
          contents  of  the  mode  page  to be written to DEVICE,
          potentially filtered by the mask string.

     -d, --dbd
          disable block  descriptors  (DBD  flag  in  cdb).  Some
          device types include block descriptors in the mode data
          returned by a MODE SENSE command. If so the same  block
          descriptors  are  written  by  the MODE SELECT command.
          This option instructs the MODE  SENSE  command  not  to
          return  any block descriptors. This would be a sensible
          default for this utility apart from the fact  that  not
          all SCSI devices support the DBD bit in the cdb.

     -f, --force
          force  the  contents string to be taken as the new mode
          page, or at least doesn't do  checks  on  the  existing
          mode  page.  Note  that DEVICE may still reject the new
          contents for the mode page. Cannot be  given  with  the
          --mask=M,M... option.

     -h, --help
          output the usage message then exit.

     -l, --len=10 | 6
          length  of  the SCSI commands (cdb) sent to DEVICE. The
          default is 10 so 10 byte MODE  SENSE  and  MODE  SELECT
          commands are issued. Some old devices don't support the
          10 byte variants hence this option.

     -m, --mask=M,M...



sg3_utils-1.27       Last change: April 2009                    2






SG3_UTILS                                           SG_WR_MODE(8)



          where M,M... is a string of comma separated hex numbers
          each of which should resolve to a byte value (i.e. 0 to
          ff inclusive). A (single) space separated string of hex
          numbers  is  also  allowed  but the list needs to be in
          quotes. The mask chooses (bit by bit) whether  the  new
          mode  page  comes  from  the contents (mask bit set) or
          from the existing mode page (mask bit clear).   If  the
          mask  string  is  shorter than the contents string then
          the remaining bytes are taken from the contents string.
          If  the  contents  string  is shorter than the existing
          mode page then the remaining bytes are taken  from  the
          existing mode page (i.e. they are left unaltered).

     -p, --page=PG
          where  PG  is  the page code value to fetch and modify.
          The page code is in hex and should be between 0 and  3e
          inclusive.  Notice  that page code 3f to fetch all mode
          pages is disallowed.

     -p, --page=PG,SPG
          where PG is the page code value and SPG is the  subpage
          code value to fetch and modify. Both values are in hex.
          The subpage code should be between 0 and fe  inclusive.
          Notice  that subpage code ff to fetch all mode subpages
          (for a given mode page or all mode pages in the case of
          3f,ff) is disallowed.

     -s, --save
          changes  the "saved" mode page when MODE SELECT is suc-
          cessful. By default (i.e. when --save is not used) only
          the  "current"  mode  page values are changed when MODE
          SELECT is successful. In this case the  new  mode  page
          will  stay  in  effect  until the device is reset (e.g.
          power cycled).  When it restarts the "saved" values for
          the  mode page will be re-instated.  So to make changes
          permanent use the --save option.

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

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


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








sg3_utils-1.27       Last change: April 2009                    3






SG3_UTILS                                           SG_WR_MODE(8)



     +---------------+--------------------------+
     |ATTRIBUTE TYPE |     ATTRIBUTE VALUE      |
     +---------------+--------------------------+
     |Availability   | system/storage/sg3_utils |
     +---------------+--------------------------+
     |Stability      | Uncommitted              |
     +---------------+--------------------------+
NOTES
     This  utility  does not check whether the contents string is
     trying to modify parts of the mode page  which  are  change-
     able.  The  device  should  do  that and if some part is not
     changeable then it should report: "Invalid field in  parame-
     ter list".

     Some  mode  pages  are not saveable. If so an attempt to use
     the --save option should cause an error to be reported  from
     the device: "Illegal field in cdb".

     The  device  is  required  to  do  various  checks before it
     accepts a new mode page. If these checks fail then the  mode
     page  is  not  altered  and  either a "parameter list length
     error" or an "invalid field  in  parameter  list"  error  is
     returned by the device in the sense data.

     The recommended way to modify a mode page is to read it with
     a MODE SENSE, modify some part of it then write it  back  to
     the  device with a MODE SELECT command. For example, reading
     an existing mode page can  be  accomplished  with  'sg_modes
     -p=1a  -r  /dev/sdb  >  mp_1a.txt' (the power condition mode
     page). The mp_1a.txt file can be edited and then used as the
     contents  string  to this utility (e.g. 'sg_wr_mode -p 1a -s
     -c - /dev/sdb < mp_1a.txt').

     Two fields differ between what is read from the device  with
     MODE  SENSE  and  what  is  written  to the device with MODE
     SELECT: the mode data length is reserved (i.e. zero(es))  in
     a MODE SELECT command while the PS bit ((sub)page byte 0 bit
     7) in each mode (sub)page  is  reserved  (zero)  in  a  MODE
     SELECT  command.  The PS bit given in the contents string is
     zeroed unless the --force option is selected.

EXAMPLES
     This utility can be used together with the sg_modes utility.
     To  re-instate  the  default mode page values (i.e. the mode
     page values chosen by the manufacturer  of  the  device)  as
     both  the  current  and saved mode page values the following
     sequence could be used:

       $ sg_modes --control=2 --page=1a -r /dev/sda > t
       $ sg_wr_mode --page=1a --contents=- --save /dev/sda < t





sg3_utils-1.27       Last change: April 2009                    4






SG3_UTILS                                           SG_WR_MODE(8)



     Next is an example of using a mask to modify the "idle  con-
     dition  counter"  of  the "power condition" mode page (0x1a)
     from 0x28 to 0x37. Note that the change is not saved so  the
     "idle  condition counter" will revert to 0x28 after the next
     power cycle. The output from sg_modes is abridged.

      $ sg_modes --page=1a /dev/hdc
     >> Power condition (mmc), page_control: current
      00     1a 0a 00 03 00 00 00 28  00 00 01 2c

      $ sg_wr_mode -p 1a -c 0,0,0,0,0,0,0,37 -m  0,0,0,0,0,0,0,ff
     /dev/hdc

      $ sg_modes -p 1a /dev/hdc
     >> Power condition (mmc), page_control: current
      00     1a 0a 00 03 00 00 00 37  00 00 01 2c

EXIT STATUS
     The  exit  status  of sg_wr_mode is 0 when it is successful.
     Otherwise see the sg3_utils(8) man page.

AUTHORS
     Written by Douglas Gilbert.

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

COPYRIGHT
     Copyright (C) 2004-2009 Douglas Gilbert
     This software is distributed under a FreeBSD license.  There
     is  NO warranty; not even for MERCHANTABILITY or FITNESS FOR
     A PARTICULAR PURPOSE.

SEE ALSO
     sdparm(sdparm), sg_modes(sg3_utils), sginfo(sg3_utils)


     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.27       Last change: April 2009                    5