Slackware

i2c-tools

ページ作成日
ページ更新日

概要

i2c-toolsは、Linux用のI2Cバス操作ツール群です。
元々はlm-sensorsプロジェクトの一部でしたが、独立したパッケージとして分離されました。

特徴

I2Cバス操作ツール
i2cdetect(バスのプロービング)、i2cdump(チップのダンプ)、i2cget/i2cset(レジスタのリード/ライト)などのコマンドラインツールを提供します。
libi2cライブラリ
I2C/SMBusアクセス用のC言語ライブラリを提供します。サードパーティのアプリケーションからも利用できます。
py-smbus(Pythonバインディング)
PythonからSMBusにアクセスするためのsmbusモジュールを提供します。liquidctlなどのデバイス制御ツールが依存しています。
EEPROMデコードスクリプト
SPDやEDIDなどの各種EEPROMをデコードするPerlスクリプト(decode-dimmsなど)を含みます。

公式サイト

I2C Tools - Linux i2c Wiki

依存関係

このパッケージをビルドするには、以下のパッケージが必要です。
すべてSlackware標準パッケージに含まれています。

Make it by yourself!

まずは、自分のホームディレクトリにソースをダウンロードし、展開します。


cd ~/Downloads
wget https://www.kernel.org/pub/software/utils/i2c-tools/i2c-tools-4.4.tar.xz
tar xvf i2c-tools-4.4.tar.xz

makeします。
py-smbusはデフォルトではビルドされないため、EXTRAで明示的に指定します。


cd i2c-tools-4.4

/usr/bin/time -v make -j$(nproc) \
  PREFIX=/usr \
  LIBDIR=/usr/lib64 \
  EXTRA="py-smbus"

[画面出力を省略]

        Command being timed: "make -j12 PREFIX=/usr LIBDIR=/usr/lib64 EXTRA=py-smbus"
        User time (seconds): 0.85
        System time (seconds): 0.12
        Percent of CPU this job got: 245%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.39
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 16384
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 4096
        Voluntary context switches: 64
        Involuntary context switches: 32
        Swaps: 0
        File system inputs: 0
        File system outputs: 256
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0

makeオプション

主要なオプションの説明です。

PREFIX=/usr
インストール先のプレフィックスを/usrに設定します。
LIBDIR=/usr/lib64
ライブラリのインストール先を/usr/lib64に設定します(x86_64環境向け)。
EXTRA="py-smbus"
デフォルトではビルドされないpy-smbus(Python SMBusバインディング)を追加でビルドします。liquidctlがfrom smbus import SMBusでインポートするため、このオプションが必要です。

仮インストールディレクトリにインストールします。
py-smbusのinstallターゲットはDESTDIRに対応していないため、本体とpy-smbusを分けてインストールします。


make install \
  DESTDIR=/tmp/i2c-tools-4.4 \
  PREFIX=/usr \
  LIBDIR=/usr/lib64

py-smbusを仮インストールディレクトリにインストールします。


cd py-smbus
pip install \
  --root=/tmp/i2c-tools-4.4 \
  --prefix=/usr \
  --no-build-isolation \
  --break-system-packages \
  .
cd ..

ドキュメントをインストールします。


mkdir -p /tmp/i2c-tools-4.4/usr/doc/i2c-tools-4.4
cp -a README CHANGES COPYING /tmp/i2c-tools-4.4/usr/doc/i2c-tools-4.4/

パッケージを作成します。


cd /tmp/i2c-tools-4.4
sudo makepkg --linkadd y --chown n ../i2c-tools-4.4-x86_64-1.txz

Slackware package ../i2c-tools-4.4-x86_64-1.txz created.

あとは、パッケージをインストールすれば完了です。


cd ..
sudo installpkg i2c-tools-4.4-x86_64-1.txz

動作確認

Pythonからsmbusモジュールが正しくインポートできることを確認します。


python3 -c "from smbus import SMBus; print('smbus module loaded successfully')"

I2Cバスの一覧を表示します(root権限が必要です)。


sudo i2cdetect -l