dwww Home | Manual pages | Find package

I2CGET(8)                   System Manager's Manual                   I2CGET(8)

NAME
       i2cget - read from I2C/SMBus chip registers

SYNOPSIS
       i2cget [-f] [-y] [-a] i2cbus chip-address [data-address [mode [length]]]
       i2cget -V
       i2cget -h

DESCRIPTION
       i2cget  is  a small helper program to read registers visible through the
       I2C bus (or SMBus).

OPTIONS
       -V     Display the version and exit.

       -h     Display the help and exit.

       -f     Force access to the device even if it is  already  busy.  By  de-
              fault, i2cget will refuse to access a device which is already un-
              der the control of a kernel driver. Using this flag is dangerous,
              it  can  seriously  confuse the kernel driver in question. It can
              also cause i2cget to return an invalid value. So use at your  own
              risk and only if you know what you're doing.

       -y     Disable interactive mode. By default, i2cget will wait for a con-
              firmation  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. Use with caution.

       -a     Allow  using  addresses  between 0x00 - 0x07 and 0x78 - 0x7f. Not
              recommended.

       There are two required options to i2cget. i2cbus indicates the number or
       name of the I2C bus to be scanned.  This number should correspond to one
       of the busses listed by i2cdetect -l. chip-address specifies the address
       of the chip on that bus, and is an integer between 0x08 and 0x77.

       data-address specifies the address on that chip to read from, and is  an
       integer between 0x00 and 0xFF. If omitted, the currently active register
       will be read (if that makes sense for the considered chip).

       The  mode  parameter, if specified, is one of the letters b, w, c, s, or
       i, corresponding to a  read  byte  data,  a  read  word  data,  a  write
       byte/read  byte,  an SMBus block read, or an I2C block read transaction,
       respectively. A p can also be appended to the mode parameter  to  enable
       PEC,  except  for I2C block transactions. If the mode parameter is omit-
       ted, i2cget defaults to a read byte data  transaction,  unless  data-ad-
       dress is also omitted, in which case the default (and only valid) trans-
       action is a single read byte.

       The  length  parameter,  if applicable and specified, sets the length of
       the block transaction. Valid values are between 1 and 32. Default  value
       is 32.

WARNING
       i2cget  can be extremely dangerous if used improperly. I2C and SMBus are
       designed in such a way that an SMBus read transaction can be seen  as  a
       write transaction by certain chips. This is particularly true if setting
       mode  to  cp (write byte/read byte with PEC). Be extremely careful using
       this program.

EXAMPLES
       Get the value of 8-bit register 0x11 of the I2C device at 7-bit  address
       0x2d on bus 1 (i2c-1), after user confirmation:
              # i2cget 1 0x2d 0x11

       Get the value of 16-bit register 0x00 of the I2C device at 7-bit address
       0x48 on bus 1 (i2c-1), after user confirmation:
              # i2cget 1 0x48 0x00 w

       Set  the  internal  pointer  register of a 24C02 EEPROM at 7-bit address
       0x50 on bus 9 (i2c-9) to 0x00, then read the first  2  bytes  from  that
       EEPROM:
              # i2cset -y 9 0x50 0x00 ; i2cget -y 9 0x50 ; i2cget -y 9 0x50
       This  assumes  that  the  device  automatically  increments its internal
       pointer register on every read,  and  supports  read  byte  transactions
       (read  without  specifying the register address, "Receive Byte" in SMBus
       terminology.)  Most EEPROM devices behave that way. Note  that  this  is
       only safe as long as nobody else is accessing the I2C device at the same
       time.  A  safer approach would be to use a "Read Word" SMBus transaction
       instead, or an I2C Block Read transaction to read more than 2 bytes.

       Set the internal pointer register of a 24C32  EEPROM  at  7-bit  address
       0x53  on  bus 9 (i2c-9) to 0x0000, then read the first 2 bytes from that
       EEPROM:
              # i2cset -y 9 0x53 0x00 0x00 ; i2cget -y 9 0x53 ; i2cget -y 9 0x53
       This again assumes that the device automatically increments its internal
       pointer register on every read, and  supports  read  byte  transactions.
       While  the  previous example was for a small EEPROM using 8-bit internal
       addressing, this example is for a larger EEPROM  using  16-bit  internal
       addressing.  Beware  that  running  this command on a small EEPROM using
       8-bit internal addressing would actually write 0x00 to the first byte of
       that EEPROM. The safety concerns raised above still  stand,  however  in
       this  case there is no SMBus equivalent, so this is the only way to read
       data from a large EEPROM if your master isn't fully I2C capable. With  a
       fully  I2C capable master, you would use i2ctransfer to achieve the same
       in a safe and faster way.

       Read the first 8 bytes of an EEPROM device at 7-bit address 0x50 on  bus
       4 (i2c-4):
              # i2cget -y 4 0x50 0x00 i 8

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 Del-
       vare <jdelvare@suse.de>.

SEE ALSO
       i2cdetect(8), i2cdump(8), i2cset(8), i2ctransfer(8)

AUTHOR
       Jean Delvare

       This  manual  page  was  strongly inspired from those written by David Z
       Maze for i2cset.

                                    May 2022                          I2CGET(8)

Generated by dwww version 1.16 on Fri Oct 2 10:14:39 CEST 2026.