1I2CGET(8)                   System Manager's Manual                  I2CGET(8)
2
3
4

NAME

6       i2cget - read from I2C/SMBus chip registers
7
8

SYNOPSIS

10       i2cget [-f] [-y] [-a] i2cbus chip-address [data-address [mode]]
11       i2cget -V
12
13

DESCRIPTION

15       i2cget  is a small helper program to read registers visible through the
16       I2C bus (or SMBus).
17
18

OPTIONS

20       -V     Display the version and exit.
21
22       -f     Force access to the device  even  if  it  is  already  busy.  By
23              default,  i2cget will refuse to access a device which is already
24              under the control of a kernel driver. Using this flag is danger‐
25              ous,  it can seriously confuse the kernel driver in question. It
26              can also cause i2cget to return an invalid value. So use at your
27              own risk and only if you know what you're doing.
28
29       -y     Disable  interactive  mode.  By  default, i2cget will wait for a
30              confirmation from the user before messing with the I2C bus. When
31              this  flag is used, it will perform the operation directly. This
32              is mainly meant to be used in scripts. Use with caution.
33
34       -a     Allow using addresses between 0x00 - 0x02 and 0x78 -  0x7f.  Not
35              recommended.
36
37       There  are  two required options to i2cget. i2cbus indicates the number
38       or name of the I2C bus to be scanned.  This number should correspond to
39       one  of  the  busses listed by i2cdetect -l. chip-address specifies the
40       address of the chip on that bus, and is an  integer  between  0x03  and
41       0x77.
42
43       data-address specifies the address on that chip to read from, and is an
44       integer between 0x00 and 0xFF. If omitted, the currently active  regis‐
45       ter will be read (if that makes sense for the considered chip).
46
47       The mode parameter, if specified, is one of the letters b, w or c, cor‐
48       responding to a read byte data, a read word data or a  write  byte/read
49       byte  transaction,  respectively.  A p can also be appended to the mode
50       parameter to enable PEC. If  the  mode  parameter  is  omitted,  i2cget
51       defaults  to  a read byte data transaction, unless data-address is also
52       omitted, in which case the default (and only valid)  transaction  is  a
53       single read byte.
54
55

WARNING

57       i2cget can be extremely dangerous if used improperly. I2C and SMBus are
58       designed in such a way that an SMBus read transaction can be seen as  a
59       write  transaction  by certain chips. This is particularly true if set‐
60       ting mode to cp (write byte/read byte with PEC). Be  extremely  careful
61       using this program.
62
63

EXAMPLES

65       Get the value of 8-bit register 0x11 of the I2C device at 7-bit address
66       0x2d on bus 1 (i2c-1), after user confirmation:
67              # i2cget 1 0x2d 0x11
68
69       Get the value of 16-bit register  0x00  of  the  I2C  device  at  7-bit
70       address 0x48 on bus 1 (i2c-1), after user confirmation:
71              # i2cget 1 0x48 0x00 w
72
73       Set  the  internal  pointer register of a 24C02 EEPROM at 7-bit address
74       0x50 on bus 9 (i2c-9) to 0x00, then read the first 2  bytes  from  that
75       EEPROM:
76              # i2cset -y 9 0x50 0x00 ; i2cget -y 9 0x50 ; i2cget -y 9 0x50
77       This  assumes  that  the  device  automatically increments its internal
78       pointer register on every read, and  supports  read  byte  transactions
79       (read  without specifying the register address, "Receive Byte" in SMBus
80       terminology.)  Most EEPROM devices behave that way. Note that  this  is
81       only  safe  as  long  as nobody else is accessing the I2C device at the
82       same time. A safer approach would be to use a "Read Word" SMBus  trans‐
83       action  instead,  or  an I2C Block Read transaction to read more than 2
84       bytes.
85
86       Set the internal pointer register of a 24C32 EEPROM  at  7-bit  address
87       0x53  on bus 9 (i2c-9) to 0x0000, then read the first 2 bytes from that
88       EEPROM:
89              # i2cset -y 9 0x53 0x00 0x00 ; i2cget -y 9 0x53 ; i2cget -y 9 0x53
90       This again assumes that the device automatically increments its  inter‐
91       nal  pointer  register  on  every read, and supports read byte transac‐
92       tions. While the previous example was for a small  EEPROM  using  8-bit
93       internal  addressing,  this example is for a larger EEPROM using 16-bit
94       internal addressing. Beware that running this command on a small EEPROM
95       using  8-bit internal addressing would actually write 0x00 to the first
96       byte of that EEPROM. The safety concerns raised above still stand, how‐
97       ever in this case there is no SMBus equivalent, so this is the only way
98       to read data from a large EEPROM if your master isn't fully  I2C  capa‐
99       ble.  With  a  fully  I2C  capable master, you would use i2ctransfer to
100       achieve the same in a safe and faster way.
101
102

SEE ALSO

104       i2cdetect(8), i2cdump(8), i2cset(8), i2ctransfer(8)
105
106

AUTHOR

108       Jean Delvare
109
110       This manual page was strongly inspired from those written  by  David  Z
111       Maze for i2cset.
112
113
114
115                                 October 2017                        I2CGET(8)
Impressum