This is an old revision of the document!
On the kernel level, I2C communication is handled by the i2c-dev kernel driver.
On the lowest level, the bus is seen as a file and using a file descriptor one can
read from it or write to it. The shell interface is a set of compiled programs that
wrap this functionality for specific uses at a higher level. The intended use is
interactive debugging to see if something works or not. For programmatic use it's
better to take a look at the C API for C/C++ and the
smbus2 library for Python.
These programs are part of the i2c-tools package that usually comes preinstalled
in most Linux distributions.
Detects I2C chips. Use: i2cdetect [options] i2cbus [first_addr last_addr]. Special flags that don't require a given i2cbus are -V that prints the current version and -l.
i2cdetect -l to list busses. To access each buss you have to used it's number (i2c-{NUM}) or the full string name.-q and -r options are to use quick write and receive byte commands for probing. They can corrupt certain IC chips.-F displays the list of functionalities available on the bus.2
3
4
5