i2c-tools  4.3
About: i2c-tools are an heterogeneous set of I2C tools for Linux (originally part of the lm-sensors package).
  Fossies Dox: i2c-tools-4.3.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

i2c-tools Documentation

Some Fossies usage hints in advance:

  1. To see the Doxygen generated documentation please click on one of the items in the steelblue colored "quick index" bar above or use the side panel at the left which displays a hierarchical tree-like index structure and is adjustable in width.
  2. If you want to search for something by keyword rather than browse for it you can use the client side search facility (using Javascript and DHTML) that provides live searching, i.e. the search results are presented and adapted as you type in the Search input field at the top right.
  3. Doxygen doesn't incorporate all member files but just a definable subset (basically the main project source code files that are written in a supported language). So to search and browse all member files you may visit the Fossies i2c-tools-4.3.tar.gz contents page and use the Fossies standard member browsing features (also with source code highlighting and additionally with optional code folding).


This package contains an heterogeneous set of I2C tools for the Linux kernel as well as an I2C library. The tools were originally part of the lm-sensors project but were finally split into their own package for convenience. The library is used by some of the tools, but can also be used by third-party applications. The tools and library compile, run and have been tested on GNU/Linux.

The latest version of the code can be downloaded from: https://i2c.wiki.kernel.org/index.php/I2C_Tools


The various tools included in this package are grouped by category, each category has its own sub-directory:

  • eeprom Perl scripts for decoding different types of EEPROMs (SPD, EDID...) These scripts rely on the eeprom kernel drivers ("at24" and "ee1004", "eeprom" on older kernels). They are installed by default.

  • eeprog Tools for writing to EEPROMs. These tools rely on the "i2c-dev" kernel driver. They are not installed by default.

  • include C/C++ header files for I2C and SMBus access over i2c-dev. Installed by default.

  • lib The I2C library, used by eeprog, py-smbus and tools. Installed by default.

  • py-smbus Python wrapper for SMBus access over i2c-dev. Not installed by default.

  • stub A helper script to use with the i2c-stub kernel driver. Installed by default.

  • tools I2C device detection and register dump tools. These tools rely on the "i2c-dev" kernel driver. They are installed by default.


Check the documentation of individual tools for licensing information. The library is released under the LGPL version 2.1 or later, while most tools are released under the GPL version 2 or later, but there are a few exceptions.


There's no configure script, so simply run "make" to build the library and tools, and "make install" to install them. You also can use "make uninstall" to remove all the files you installed. By default, files are installed in /usr/local but you can change the location by editing the Makefile file and setting PREFIX to wherever you want (or setting its value on the make command line). You may change the C compiler and the compilation flags as well, and also decide which flavors of the library will be built.

In cases where you need to compile only the static or dynamic variant of the library, you can use BUILD_STATIC_LIB and BUILD_DYNAMIC_LIB at compile time: $ make BUILD_DYNAMIC_LIB=1 BUILD_STATIC_LIB=0 If you disable both, the compilation will abort with an error message.

If you want to compile the tools against the static version of the library you can do: $ make USE_STATIC_LIB=1

Optionally, you can run "make strip" prior to "make install" if you want smaller binaries. However, be aware that this will prevent any further attempt to debug the library and tools.

If you wish to include sub-directories that are not enabled by default, then just set them via the EXTRA make variable. For example, to build py-smbus, do: $ make EXTRA="py-smbus"


The main tools have manual pages, which are installed by "make install". See these manual pages for command line interface details and tool specific information.

The other tools come with simple text documentation, which isn't installed.


Please post your questions and bug reports to the linux-i2c mailing list: linux-i2c@vger.kernel.org with Cc to the current maintainer: Jean Delvare jdelvare@suse.de For additional information about this list, see: http://vger.kernel.org/vger-lists.html#linux-i2c