You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.9 KiB
146 lines
4.9 KiB
.TH I2CSET 8 "May 2022"
|
|
.SH "NAME"
|
|
i2cset \- set I2C registers
|
|
|
|
.SH SYNOPSIS
|
|
.B i2cset
|
|
.RB [ -f ]
|
|
.RB [ -y ]
|
|
.RB [ "-m mask" ]
|
|
.RB [ -r ]
|
|
.RB [ -a ]
|
|
.I i2cbus
|
|
.I chip-address
|
|
.I data-address
|
|
.RI [ value ]
|
|
.RI ...
|
|
.RI [ mode ]
|
|
.br
|
|
.B i2cset
|
|
.B -V
|
|
.br
|
|
.B i2cset
|
|
.B -h
|
|
|
|
.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 -h
|
|
Display the help 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.
|
|
.TP
|
|
.B -a
|
|
Allow using addresses between 0x00 - 0x07 and 0x78 - 0x7f. Not recommended.
|
|
.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 0x08 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 BUGS
|
|
To report bugs or send fixes, please write to the Linux I2C mailing list
|
|
<linux-i2c@vger.kernel.org> with Cc to the current maintainer:
|
|
Jean Delvare <jdelvare@suse.de>.
|
|
|
|
.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.
|