.TH I2CDETECT 8 "October 2017"
.SH NAME
i2cdetect \- detect I2C chips

.SH SYNOPSIS
.B i2cdetect
.RI [ -y ]
.RI [ -a ]
.RI [ -q | -r ]
.I i2cbus
.RI [ "first last" ]
.br
.B i2cdetect
.I -F
.I i2cbus
.br
.B i2cdetect
.I -V
.br
.B i2cdetect
.I -l

.SH DESCRIPTION
i2cdetect is a userspace program to scan an I2C bus for devices. It
outputs a table with the list of detected devices on the specified bus.
\fIi2cbus\fR indicates the number or name of the I2C bus to be scanned, and
should correspond to one of the busses listed by \fIi2cdetect -l\fR.
The optional parameters \fIfirst\fR and \fIlast\fR restrict the scanning
range (default: from 0x03 to 0x77).
.PP
As there is no standard I2C detection command, i2cdetect uses arbitrary
SMBus commands (namely SMBus quick write and SMBus receive byte) to probe
for devices. By default, the command used is the one believed to be the
safest for each address. See options \fI-q\fR and \fI-r\fR to change this
behavior.
.PP
i2cdetect can also be used to query the functionalities of an I2C bus
(see option \fB-F\fP.)

.SH WARNING
This program can confuse your I2C bus, cause data loss and worse!

.SH INTERPRETING THE OUTPUT
Each cell in the output table will contain one of the following symbols:
.IP \(bu "\w'\(bu'u+1n"
"--". The address was probed but no chip answered.
.IP \(bu
"UU". Probing was skipped, because this address is currently in use by
a driver. This strongly suggests that there is a chip at this address.
.IP \(bu
An address number in hexadecimal, e.g. "2d" or "4e". A chip
was found at this address.

.SH OPTIONS
.TP
.B "\-y"
Disable interactive mode. By default, i2cdetect 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 "\-a"
Force scanning of non-regular addresses. Not recommended.
.TP
.B "\-q"
Use SMBus "quick write" command for probing.
Not recommended. This is known to corrupt the Atmel AT24RF08 EEPROM
found on many IBM Thinkpad laptops.
.TP
.B "\-r"
Use SMBus "receive byte" command for probing.
Not recommended. This is known to lock SMBus on various write-only
chips (most notably clock chips at address 0x69).
.TP
.B "\-F"
Display the list of functionalities implemented by the adapter and exit.
.TP
.B "\-V"
Display the version and exit.
.TP
.B "\-l"
Output a list of installed busses.

.SH EXAMPLES
.PP
List all available I2C busses:
.nf
.RS
# i2cdetect -l
.RE
.fi
.PP
Immediately scan the standard addresses on I2C bus 9 (i2c-9), using the
default method for each address (no user confirmation):
.nf
.RS
# i2cdetect -y 9
.RE
.fi
.PP
Query the functionalities of I2C bus 1 (i2c-1):
.nf
.RS
# i2cdetect -F 1
.RE
.fi
.PP
Scan addresses 0x10 to 0x17 on the I2C bus named "SMBus I801 adapter at efa0",
using the "receive byte" method, after user confirmation:
.nf
.RS
# i2cdetect -r "SMBus I801 adapter at efa0" 0x10 0x17
.RE
.fi

.SH SEE ALSO
i2cdump(8), i2cget(8), i2cset(8), i2ctransfer(8), sensors-detect(8)

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

This manual page was originally written by Aurelien Jarno
<aurel32@debian.org>, for the Debian GNU/Linux system.
