.TH I2CSET 8 "October 2017"
.SH "NAME"
i2cset \- set I2C registers

.SH SYNOPSIS
.B i2cset
.RB [ -f ]
.RB [ -y ]
.RB [ "-m mask" ]
.RB [ -r ]
.I i2cbus
.I chip-address
.I data-address
.RI [ value ]
.RI ...
.RI [ mode ]
.br
.B i2cset
.B -V

.SH DESCRIPTION
i2cset is a small helper program to set registers visible through the I2C
bus.

.SH OPTIONS
.TP
.B -V
Display the version and exit.
.TP
.B -f
Force access to the device even if it is already busy. By default, i2cset
will refuse to access a device which is already under the control of a
kernel driver. Using this flag is dangerous, it can seriously confuse the
kernel driver in question. It can also cause i2cset to silently write to
the wrong register. So use at your own risk and only if you know what
you're doing.
.TP
.B -y
Disable interactive mode. By default, i2cset will wait for a confirmation
from the user before messing with the I2C bus. When this flag is used, it
will perform the operation directly. This is mainly meant to be used in
scripts.
.TP
.B -m mask
The \fImask\fR parameter, if specified, describes which bits of \fIvalue\fR
will be actually written to \fIdata-address\fR. Bits set to 1 in the mask
are taken from \fIvalue\fR, while bits set to 0 will be read from
\fIdata-address\fR and thus preserved by the operation. Please note that
this parameter assumes that the read and write operations for the specified
mode are symmetrical for the device you are accessing. This may or may not
be the case, as neither I2C nor SMBus guarantees this.
.TP
.B -r
Read back the value right after writing it, and compare the result with the
value written. This used to be the default behavior. The same limitations
apply as those of option \fB-m\fR.
.PP
There are three required options to i2cset. \fIi2cbus\fR indicates the number
or name of the I2C bus to be scanned.  This number should correspond to one of
the busses listed by \fIi2cdetect -l\fR. \fIchip-address\fR specifies the
address of the chip on that bus, and is an integer between 0x03 and 0x77.
\fIdata-address\fR specifies the address on that chip to write to, and is an
integer between 0x00 and 0xFF.
.PP
The \fIvalue\fR parameter, if specified, is the value to write to that
location on the chip. If this parameter is omitted, then a short write is
issued. For most chips, it simply sets an internal pointer to the target
location, but doesn't actually write to that location. For a few chips
though, in particular simple ones with a single register, this short write
is an actual write. If the mode parameter is \fBs\fP or \fBi\fP, multiple
values can be specified.
.PP
The \fImode\fR parameter, if specified, is one of the letters \fBb\fP,
\fBw\fP, \fBs\fP, or \fBi\fP, corresponding to a write size of a single byte,
a 16-bit word, a SMBus block write, or an I2C block write, respectively.
For SMBus and I2C block writes, the write size is determined by the number
of \fIvalue\fR parameters.
Except for I2C block writes, a \fBp\fP can also be appended to the \fImode\fR
parameter to enable PEC.
If the \fImode\fR parameter is omitted, i2cset defaults to byte
mode without PEC. The \fIvalue\fR provided must be within range for the
specified data type (0x00-0xFF for byte and block writes, 0x0000-0xFFFF
for words).
Another possible mode is \fBc\fP, which doesn't write any value (so-called
short write). You usually don't have to specify this mode, as it is the
default when no value is provided, unless you also want to enable PEC.

.SH WARNING
i2cset can be extremely dangerous if used improperly. It can confuse your
I2C bus, cause data loss, or have more serious side effects. Writing to
a serial EEPROM on a memory DIMM (chip addresses between 0x50 and 0x57) may
DESTROY your memory, leaving your system unbootable!  Be extremely careful
using this program.

.SH EXAMPLES
.PP
Write value 0x42 to 8-bit register 0x11 of the I2C device at 7-bit
address 0x2d on bus 1 (i2c-1), after user confirmation:
.nf
.RS
# i2cset 1 0x2d 0x11 0x42
.RE
.fi
.PP
Immediately clear the 3 least significant bits of 8-bit register 0x11 of the
I2C device at 7-bit address 0x2d on bus 1 (i2c-1) (no user confirmation):
.nf
.RS
# i2cset -y -m 0x07 1 0x2d 0x11 0x00
.RE
.fi
.PP
Write value 0x5000 to 16-bit register 0x02 of the I2C device at 7-bit
address 0x48 on bus 1 (i2c-1), after user confirmation:
.nf
.RS
# i2cset 1 0x48 0x02 0x5000 w
.RE
.fi
.PP
Also see i2cget(8) for examples of combined usage of \fIi2cset\fR and
\fIi2cget\fR.

.SH SEE ALSO
i2cdetect(8), i2cdump(8), i2cget(8), i2ctransfer(8), isaset(8)

.SH AUTHOR
Frodo Looijaard, Mark D. Studebaker and Jean Delvare

This manual page was originally written by David Z Maze <dmaze@debian.org> for
the Debian GNU/Linux system.
