ページ作成日
概要
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サービスユニットを使用して、起動時に自動でデバイスを設定できます。
公式サイト
依存関係
このパッケージをビルド・実行するには、以下のパッケージが必要です。
Slackware標準パッケージ
- Python 3.10以降
- libusb-1.0
- pillow(l/pillow)
- setuptools
- pip
別途ビルドが必要
pipでインストールするPythonパッケージ
以下の純粋なPythonパッケージは、pipで事前にインストールします。
- PyUSB … LibUSB 1.0のPythonバインディング
- colorlog … カラー付きログ出力
- crcmod 1.7 … CRC計算
- hidapi(cython-hidapi) … HIDデバイスアクセス(Cライブラリのhidapiが必要)
- docopt … コマンドラインオプション解析
- setuptools_scm … ビルド時に必要
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