I2C - ArchWiki

Jump to content

# I2C

2 languages

- 日本語
- Polski

From ArchWiki

Related articles

- Lm_sensors

I²C or I2C (Inter-IC) is a synchronous, multi-controller/multi-target (controller/target), packet switched, single-ended, serial communication bus invented in 1982 by Philips Semiconductors.

It is used by many hardware boards to communicate with general purpose I/O (GPIO) devices.

A similar extension of I2C is SMBus which is more specifically used for hardware monitoring purposes.

## Installation

I2C kernel modules already exist in most default kernel packages.

Userspace tools can be installed from i2c-tools. Bleeding edge is on i2c-tools-gitAUR.

SMBus-specific tools can be installed from lm_sensors.

## Module loading

In some cases it might be required to load the module at boot:

    /etc/modules-load.d/i2c-dev.conf

    i2c_dev

This will not be needed after FS#76233 is fixed.

Depending on your system and usage, other hardware-specific modules such as `i2c_i801` or `i2c_smbus` might have to be loaded as well.

If the modules are properly loaded, you should see the `/dev/i2c-*` devices.

Permission for using the `/dev/i2c-*` devices can be granted by adding the user to the `i2c` user group.

## Usage

`i2cdetect` can detect all the active I2C devices:

    $ i2cdetect -l

    i2c-0	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
    i2c-1	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
    i2c-2	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
    i2c-3	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
    i2c-4	smbus     	SMBus I801 adapter at f040      	SMBus adapter
    i2c-5	i2c       	i915 gmbus dpb                  	I2C adapter
    i2c-6	i2c       	i915 gmbus dpc                  	I2C adapter
    i2c-7	i2c       	i915 gmbus misc                 	I2C adapter
    i2c-8	i2c       	AUX B/DDI B/PHY B               	I2C adapter

When an I2C device is connected to a known bus, `i2cdetect` can probe it for active addresses:

    $ i2cdetect 1

        0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- 76 --

Be wary that this program can confuse your I2C bus, cause data loss and worse.

## See also

- https://www.i2c-bus.org/
- https://www.smbus.org/

Category:

- Hardware