Slackware

liquidctl

ページ作成日

概要

liquidctlは、AIO水冷クーラー、ファンコントローラー、LED コントローラー、電源ユニットなどを制御するためのクロスプラットフォーム対応のCLIツール・Pythonドライバです。
開発終了したOpenCorsairLinkの後継として推奨されているプロジェクトです。

特徴

幅広いデバイス対応
Corsair Hydro、NZXT Kraken、EVGA CLC、Aquacomputer、ASUS Ryujin、MSI MPG Coreliquidなど、多数のメーカー・デバイスファミリーに対応しています。
デバイスの監視
温度、ファン速度、ポンプ速度、電圧、電流、消費電力などのステータス情報を取得できます。JSON出力にも対応しており、スクリプトとの連携も容易です。
ファン・ポンプ制御
固定速度やカスタムカーブによる細かなファン・ポンプ速度制御が可能です。
LED制御
固定色、フェード、レインボーなど、デバイスがサポートする様々なLEDモードを設定できます。色指定はRGB、HSV、HSL形式に対応しています。
Pythonライブラリ
CLIだけでなく、PythonのAPIとしても利用でき、独自の制御プログラムの開発が可能です。
systemd連携
systemdサービスユニットを使用して、起動時に自動でデバイスを設定できます。

公式サイト

liquidctl(GitHub)

依存関係

このパッケージをビルド・実行するには、以下のパッケージが必要です。

Slackware標準パッケージ

別途ビルドが必要

pipでインストールするPythonパッケージ

以下の純粋なPythonパッケージは、pipで事前にインストールします。

Make it by yourself!

1. 事前準備:hidapi Cライブラリとi2c-toolsのインストール

cython-hidapi(Pythonパッケージ)は、Cライブラリのhidapiに依存しています。
Slackware標準には含まれていないため、先にビルドしてインストールして下さい。
手順はhidapiのパッケージ作成ページを参照して下さい。

liquidctlはPythonのsmbusモジュールを必要とします。
これはi2c-toolsのpy-smbusに含まれています。
手順はi2c-toolsのパッケージ作成ページを参照して下さい。

2. Python依存パッケージのインストール

pipで必要なPythonパッケージをシステムワイドにインストールします。
sudoを付けずにインストールすると~/.local以下にインストールされ、sudo liquidctlで実行した際にモジュールが見つからないエラーが発生します。


sudo pip install pyusb colorlog "crcmod==1.7" hidapi docopt setuptools_scm --break-system-packages

3. liquidctl本体のビルド

ソースをダウンロードし、展開します。


cd ~/Downloads
wget https://github.com/liquidctl/liquidctl/releases/download/v1.15.0/liquidctl-1.15.0.tar.gz
tar xvf liquidctl-1.15.0.tar.gz

pipを使い、仮インストールディレクトリにインストールします。
liquidctlはPEP 517ビルドシステムを使用しているため、pipでビルドとインストールを行います。


cd liquidctl-1.15.0

SETUPTOOLS_SCM_PRETEND_VERSION=1.15.0 \
pip install \
  --root=/tmp/liquidctl-1.15.0 \
  --prefix=/usr \
  --no-deps \
  --no-build-isolation \
  --break-system-packages \
  .

pipオプション

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

--root=/tmp/liquidctl-1.15.0
仮インストール先のルートディレクトリを指定します。Slackwareパッケージ作成のため、実際のシステムではなく一時ディレクトリにインストールします。
--prefix=/usr
インストール先のプレフィックスを/usrに設定します。
--no-deps
依存パッケージを自動インストールしません。Slackwareでは依存関係を個別にパッケージとして管理するため、このオプションを指定します。
--no-build-isolation
ビルド時にvirtualenvを作成せず、システムにインストール済みのビルドツールを使用します。
SETUPTOOLS_SCM_PRETEND_VERSION=1.15.0
setuptools_scmがgitリポジトリからバージョンを取得できない場合(tarballからのビルド時)に、バージョン番号を明示的に指定するための環境変数です。

manページをインストールします。


mkdir -p /tmp/liquidctl-1.15.0/usr/man/man8
cp liquidctl.8 /tmp/liquidctl-1.15.0/usr/man/man8/
gzip -9 /tmp/liquidctl-1.15.0/usr/man/man8/liquidctl.8

udevルールをインストールします。
これにより、root権限なしでデバイスにアクセスできるようになります。


mkdir -p /tmp/liquidctl-1.15.0/lib/udev/rules.d
cp extra/linux/71-liquidctl.rules /tmp/liquidctl-1.15.0/lib/udev/rules.d/

Bash補完ファイルをインストールします。


mkdir -p /tmp/liquidctl-1.15.0/usr/share/bash-completion/completions
cp extra/completions/liquidctl.bash /tmp/liquidctl-1.15.0/usr/share/bash-completion/completions/liquidctl

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


mkdir -p /tmp/liquidctl-1.15.0/usr/doc/liquidctl-1.15.0
cp -a docs README.md CHANGELOG.md LICENSE.txt CONTRIBUTING.md \
  /tmp/liquidctl-1.15.0/usr/doc/liquidctl-1.15.0/

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


cd /tmp/liquidctl-1.15.0
sudo makepkg --linkadd y --chown n ../liquidctl-1.15.0-x86_64-1.txz

Slackware package ../liquidctl-1.15.0-x86_64-1.txz created.

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


cd ..
sudo installpkg liquidctl-1.15.0-x86_64-1.txz

udevルールを反映するため、ルールを再読み込みします。


sudo udevadm control --reload-rules
sudo udevadm trigger

使い方

udevルールをインストールしている場合、一般ユーザでも実行可能です。
udevルールが未設定の場合は、root権限で実行して下さい。


# 認識されたデバイスの一覧を表示
liquidctl list

# 全デバイスを初期化(起動後に1回実行する必要があります)
sudo liquidctl initialize all

# デバイスのステータスを表示
liquidctl status

# ファン速度をカスタムカーブで設定(温度℃ 速度%のペア)
liquidctl --match kraken set fan speed 20 30 30 50 34 80 40 90 50 100

# ポンプ速度を固定値で設定
liquidctl --match kraken set pump speed 70

# LEDを固定色(青)に設定
liquidctl --match kraken set sync color fixed 0080ff

# JSON形式でステータスを出力(スクリプト連携用)
liquidctl status --json

systemdで起動時に自動設定

以下の内容で/etc/systemd/system/liquidcfg.serviceを作成すると、起動時に自動でデバイスを設定できます。


[Unit]
Description=Liquid cooler configuration

[Service]
Type=oneshot
ExecStart=liquidctl initialize all
ExecStart=liquidctl --match kraken set pump speed 90
ExecStart=liquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100

[Install]
WantedBy=default.target

sudo systemctl daemon-reload
sudo systemctl enable --now liquidcfg