.TH SG_WR_MODE "8" "April 2018" "sg3_utils\-1.43" SG3_UTILS
.SH NAME
sg_wr_mode \- write (modify) SCSI mode page
.SH SYNOPSIS
.B sg_wr_mode
[\fI\-\-contents=H,H...\fR] [\fI\-\-dbd\fR] [\fI\-\-force\fR] [\fI\-\-help\fR]
[\fI\-\-len=10|6\fR] [\fI\-\-mask=M,M...\fR] [\fI\-\-page=PG_H[,SPG_H]\fR]
[\fI\-\-rtd\fR] [\fI\-\-save\fR] [\fI\-\-six\fR] [\fI\-\-verbose\fR]
[\fI\-\-version\fR] \fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
Writes a modified mode page to \fIDEVICE\fR. 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.
.PP
If the \fI\-\-rtd\fR option is given then most other options apart from
\fI\-\-save\fR, \fI\-\-len=\fR10|6\fR and \fI\-\-six\fR are ignored. In this
case only a MODE SELECT command is sent to the \fIDEVICE\fR with the RTD
bit (Revert To Defaults) set. This bit was added to this command in SPC\-5
revision 11, so older devices may not support it. The Extended Inquiry VPD
page has the RTD_SUP bit to indicate whether the \fIDEVICE\fR supports the
RTD bit in the MODE SELECT(6 and 10) commands. When the \fI\-\-rtd\fR option
is given the rest of this section can be ignored.
.PP
If a contents argument is not given then the various components (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.
.PP
If the contents are specified, and a mask is not specified, then the contents
must match the existing mode page in various aspects unless the
\fI\-\-force\fR option is given. These include length, mode page code and
subpage code if applicable. If all is well then the contents string is
written to \fIDEVICE\fR as the new mode page.
.PP
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.
.PP
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 \fI\-\-dbd\fR option if need be.
.PP
Changing individual fields in a mode page is probably more easily done
with the sdparm utility. Fields can be identified by acronym or by a
numerical descriptor.
.SH OPTIONS
Arguments to long options are mandatory for short options as well.
.TP
\fB\-c\fR, \fB\-\-contents\fR=\fIH,H...\fR
where \fIH,H...\fR 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
\fIDEVICE\fR, potentially filtered by the mask string.
.TP
\fB\-c\fR, \fB\-\-contents\fR=-
reads contents string from stdin. The hex numbers in the string may be comma,
space, tab or linefeed (newline) separated. If a line contains "#" then the
remaining characters on that line are ignored. Otherwise 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 \fIDEVICE\fR,
potentially filtered by the mask string.
.TP
\fB\-d\fR, \fB\-\-dbd\fR
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.
.TP
\fB\-f\fR, \fB\-\-force\fR
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 \fIDEVICE\fR may
still reject the new contents for the mode page. Cannot be given with
the \fI\-\-mask=M,M...\fR option.
.TP
\fB\-h\fR, \fB\-\-help\fR
output the usage message then exit.
.TP
\fB\-l\fR, \fB\-\-len\fR=10 | 6
length of the SCSI commands (cdb) sent to \fIDEVICE\fR. 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.
.TP
\fB\-m\fR, \fB\-\-mask\fR=\fIM,M...\fR
where \fIM,M...\fR 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).
.TP
\fB\-p\fR, \fB\-\-page\fR=\fIPG_H\fR
where \fIPG_H\fR 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.
.TP
\fB\-p\fR, \fB\-\-page\fR=\fIPG_H,SPG_H\fR
where \fIPG_H\fR is the page code value and \fISPG_H\fR 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.
.TP
\fB\-R\fR, \fB\-\-rtd\fR
when this option is given most other actions are bypassed and a MODE
SELECT(6 or 10) command is sent to the \fIDEVICE\fR with the RTD bit set.
This will cause all current values (and saved values if the \fI\-\-save\fR
option is also given) of all mode pages to be reverted to their default
values.
.TP
\fB\-s\fR, \fB\-\-save\fR
changes the "saved" mode page when MODE SELECT is successful. By
default (i.e. when \fI\-\-save\fR 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 \fI\-\-save\fR option.
.br
When used with the \fI\-\-rtd\fR option then both the current and saved
values in each mode page are reverted to their default values. In the
absence of \fI\-\-save\fR option only the current values in each mode page
are reverted to their default values.
.TP
\fB\-6\fR, \fB\-\-six\fR
this option will cause the 6 byte variants of MODE SENSE and MODE SELECT
commands to be used. The default is to use the 10 byte options. This option
is equivalent to using the \fI\-\-len=6\fR option.

.TP
\fB\-v\fR, \fB\-\-verbose\fR
increase the level of verbosity, (i.e. debug output).
.TP
\fB\-V\fR, \fB\-\-version\fR
print the version string and then exit.
.SH NOTES
This utility does not check whether the contents string is trying to
modify parts of the mode page which are changeable. The device should
do that and if some part is not changeable then it should
report: "Invalid field in parameter list".
.PP
Some mode pages are not saveable. If so an attempt to use the \fI\-\-save\fR
option should cause an error to be reported from the device: "Illegal field
in cdb".
.PP
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.
.PP
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').
.PP
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 \fI\-\-force\fR option is selected.
.SH 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:
.PP
  $ sg_modes \-\-control=2 \-\-page=1a \-r /dev/sda > t
.br
  $ sg_wr_mode \-\-page=1a \-\-contents=\- \-\-save /dev/sda < t
.PP
Next is an example of using a mask to modify the "idle condition 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.
.PP
 $ sg_modes \-\-page=1a /dev/hdc
.br
 >> Power condition (mmc), page_control: current
.br
 00     1a 0a 00 03 00 00 00 28  00 00 01 2c
.PP
 $ 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
.PP
 $ sg_modes \-p 1a /dev/hdc
.br
 >> Power condition (mmc), page_control: current
.br
 00     1a 0a 00 03 00 00 00 37  00 00 01 2c
.SH EXIT STATUS
The exit status of sg_wr_mode is 0 when it is successful. Otherwise see
the sg3_utils(8) man page.
.SH AUTHORS
Written by Douglas Gilbert.
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2004\-2018 Douglas Gilbert
.br
This software is distributed under a BSD\-2\-Clause license. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B sdparm(sdparm), sg_modes(sg3_utils), sginfo(sg3_utils)
