List, read from, and write to I2C devices.
i2cutil read <device> <address> [<address>...] i2cutil write <device> <address> [<address>...] <data> [<data>...] i2cutil transact <device> (r <bytes>|w <address> [<address>...] [<data>...])... i2cutil ping i2cutil help
i2cutil read <device> <address> [<address>...]
Read one byte from an I2C device. Use transact
to read multiple bytes. <device>
can be the full path of a devfs node (example: /dev/class/i2c/031
) or only the devfs node's index (example: 31
). Use ping
to get devfs node paths and indexes. <address>
is the internal register of <device>
to read from. Use multiple <address>
values to access a multi-byte (little-endian) register address. For example i2cutil read 4 0x20 0x3D
to read the register at 0x203D
.
i2cutil write <device> <address> [<address>...] <data> [<data>...]
Write one or more bytes (<data>
) to an I2C device. See the read
description for explanations of <device>
and <address>
.
i2cutil transact <device> (r <bytes>|w <address> [<address>...] [<data>...])...
Perform a transaction with multiple segments. Each segment can be a write (w
) or a read (r
).
i2cutil ping
Ping all I2C devices under devfs path /dev/class/i2c
by reading from each device's 0x00
address.
i2cutil help
Print help text.
Read one byte from the register at 0x20
of the I2C device represented by devfs node index 4
:
$ i2cutil read 4 0x20
Read three bytes from the register at 0x20
of the I2C device represented by devfs node index 4
:
$ i2cutil transact 4 w 0x20 r 3
Read one byte from the register at the multi-byte address 0x203D
of the I2C device represented by devfs node index 4
:
$ i2cutil read 4 0x20 0x3D
Read one byte from the register at the multi-byte address 0x203D
of the I2C device represented by the devfs node path /dev/class/i2c/004
:
$ i2cutil read /dev/class/i2c/004 0x20 0x3D
Write one byte 0x12
to the register at 0x2C
of the I2C device represented by devfs node index 3
:
$ i2cutil write 3 0x2C 0x12
Write two bytes 0x121B
to the register at 0x2C
of the I2C device represented by devfs node index /dev/class/i2c/003
:
$ i2cutil write /dev/class/i2c/003 0x2C 0x12 0x1B
Caution: This exact same command could mean "write byte 0x1B
to register 0x2C12
for a different I2C device. The meaning of the arguments depends on the I2C device.
Read the 0x00
address of all devices found under /dev/class/i2c
.
$ i2cutil ping /dev/class/i2c/821: OK /dev/class/i2c/822: OK /dev/class/i2c/823: OK /dev/class/i2c/824: OK Error ZX_ERR_TIMED_OUT /dev/class/i2c/825: ERROR
Source code for i2cutil
: //src/devices/i2c/bin/i2cutil.cc