ページ作成日
概要
OpenLinkHubは、Corsair iCUE LINK Hubをはじめ、各種Corsair製AIO水冷クーラーやハブをLinux上から制御するためのオープンソースソフトウェアです。
Go言語で実装されており、ローカルのWebブラウザからアクセスするダッシュボード(http://127.0.0.1:27003)を通じて、ファン・ポンプ速度、RGBイルミネーション、LCD表示などを一元管理できます。
液冷クーラー制御という点ではliquidctlと用途が重なりますが、liquidctlがCLI・Pythonライブラリ中心であるのに対し、OpenLinkHubはWeb UIを備えた常駐デーモン型のツールという違いがあります。
公式にCorsairが提供する純正ソフトウェアではなく、非公式のコミュニティプロジェクトです。
特徴
- Webベースのダッシュボード
- ブラウザから
http://127.0.0.1:27003にアクセスし、接続されたデバイスの状態確認や設定変更を行えます。 - 幅広いデバイス対応
- iCUE LINK Hub、AIO水冷クーラー、ファン、ポンプ、LCD画面などのCorsair製デバイスに対応しています。
- 周辺機器の管理
- 一部のキーボード、マウス、ヘッドセットのRGB・バッテリー状態などもダッシュボードから管理できます。
- メモリのステータス表示
- 対応するDDR4/DDR5メモリのSPD情報や温度、LED状態を表示・制御できます。
- カスタムファンプロファイル・RGBエディタ
- 温度センサーに基づくカスタムファンカーブや、デバイスごとのRGBプロファイルをダッシュボード上のエディタで作成できます。
- OpenRGB連携・Prometheusメトリクス
- OpenRGBとの連携や、Prometheus形式でのメトリクス出力にも対応しており、既存の監視基盤に組み込むことも可能です。
- 常駐デーモンとしての動作
- バックグラウンドで常駐させることで、起動時に自動でデバイスを初期化・制御できます。本家はsystemdサービスを前提としていますが、Slackwareでは後述の通りrc.d形式の起動スクリプトで代用します。
公式サイト
OpenLinkHub(GitHub)
openlinkhub.dev(公式サイト)
依存関係
このパッケージをビルド・実行するには、以下のパッケージが必要です。
Slackware標準パッケージ
- eudev(libudevを含む)
- usbutils
- pkgconfig
- pipewire(Slackware 15.0以降は標準収録。libpipewireの開発用ヘッダも同梱されています)
- google-go-lang(公式Go。Slackware Currentに標準収録)
Slackware Currentにはgccパッケージの一部としてgcc-go(gccgo)も収録されており、/usr/bin/goはこのgccgoのラッパーです。
公式Go(google-go-lang)とgccgoの2種類のgoコマンドが同じシステム上に存在するため、ビルド時にどちらが呼ばれているかに注意して下さい。
Make it by yourself!
1. 事前準備:公式Goの確認
Slackware Currentには公式Go(google-go-lang)が標準で収録されており、which goで確認するとgccgoではなく公式版のパスが優先されます。
which go /usr/lib64/go1.26.5/go/bin/go
一方、/usr/bin/goを直接指定すると、gccパッケージに含まれるgccgo側が呼ばれます。
/usr/bin/go version go version go1.18 gccgo (GCC) 15.3.0 linux/amd64
公式GoのPATHは、google-go-langパッケージが導入する/etc/profile.d/go.shによってログインシェルで自動的に設定されます。
ただしsudo コマンドのような非ログインシェル経由の実行では、この設定が読み込まれずgccgo側の/usr/bin/goが呼ばれてしまう場合があるため、ビルド時は念のためwhich goの結果をフルパスとしてGO変数に固定しておきます(~/.bashrcなどに記載)。
export GO=/usr/lib64/go1.26.5/go/bin/go
なお$GOをフルパスでexportして明示的に呼び出す形にしているため、sudoのsecure_pathによるPATHリセットは$GOの解決には影響しません。
このページではroot権限が必要な作業をsudo コマンドの形式で記載しています。
なおSlackwareコミュニティでは、rootパスワードを知る作業者が一人という前提からsuを使う慣習もありますが、複数ユーザーで管理する環境や実行ログを残したい環境では、必ずしもその前提は成り立たないため、このページでは一般的なLinux環境にも合わせてsudoを使用します。
2. ソースの取得とビルド
GitHubリポジトリをクローンし、パッケージ化したいバージョンのタグをチェックアウトします。
執筆時点での最新版は0.8.9です。
cd ~/Downloads git clone https://github.com/jurkovic-nikola/OpenLinkHub.git cd OpenLinkHub git checkout 0.8.9
Goでビルドします。
pipewireのcgoバインディングをビルドするため、CGO_CFLAGS_ALLOW環境変数の指定が必要です。
CGO_CFLAGS_ALLOW='-fno-strict-overflow' $GO build .
ビルドが成功すると、カレントディレクトリにOpenLinkHubバイナリが生成されます。
生成されたバイナリが正しいツールチェインでビルドされているかは、以下のコマンドで確認できます。
file OpenLinkHub go version -m OpenLinkHub
3. ファイルの配置
公式のinstall.shはcp -r ../OpenLinkHub /optとして、gitリポジトリ全体を丸ごと/opt/OpenLinkHubにコピーする方式を取っています(特定のディレクトリだけを選んでコピーしているわけではありません)。
Slackwareパッケージでも同様に、リポジトリ全体(.gitを除く)を仮インストールディレクトリにコピーします。
mkdir -p /tmp/OpenLinkHub-0.8.9/opt/OpenLinkHub cp -a . /tmp/OpenLinkHub-0.8.9/opt/OpenLinkHub/ rm -rf /tmp/OpenLinkHub-0.8.9/opt/OpenLinkHub/.git
設定ファイルの雛形も配置しておきます。
リポジトリにconfig.jsonのサンプルが含まれていない場合は、READMEに記載の内容を参考に作成して下さい。
4. udevルールの配置
root権限なしでデバイスにアクセスできるよう、リポジトリに含まれる99-openlinkhub.rulesをudevルールディレクトリに配置します。
なお公式のinstall.shが自動で扱っているudevルールはこの99-openlinkhub.rulesのみです。
READMEのアンインストール手順には98-corsair-memory.rulesという別ファイルへの言及もありますが、install.sh自体には登場せず、リポジトリ内での扱いが不統一なため、DDR4/DDR5メモリのステータス機能を使う場合は、リポジトリ内にこのファイルが実際に存在するか確認した上で配置して下さい。
mkdir -p /tmp/OpenLinkHub-0.8.9/lib/udev/rules.d cp 99-openlinkhub.rules /tmp/OpenLinkHub-0.8.9/lib/udev/rules.d/
5. 起動スクリプトの配置
Slackwareはsystemdではなく、BSD形式の/etc/rc.d/rc.*起動スクリプトを使用します。
専用ユーザーではなくrootとして動作させるため、rc.openlinkhubという起動スクリプトはsuを経由せず、直接バイナリを起動する形にします。
バックグラウンドで起動する際は、nohupを付けないと、rc.openlinkhub自体を起動したシェルの終了とともにSIGHUPで子プロセスが終了してしまうことがあるため、忘れずに付けて下さい。
mkdir -p /tmp/OpenLinkHub-0.8.9/etc/rc.d
cat > /tmp/OpenLinkHub-0.8.9/etc/rc.d/rc.openlinkhub << 'EOF'
#!/bin/sh
#
# /etc/rc.d/rc.openlinkhub
# OpenLinkHub 起動スクリプト
OPENLINKHUB_DIR=/opt/OpenLinkHub
OPENLINKHUB_BIN=$OPENLINKHUB_DIR/OpenLinkHub
PIDFILE=/var/run/OpenLinkHub.pid
LOGFILE=/var/log/OpenLinkHub.log
openlinkhub_start() {
if [ -x $OPENLINKHUB_BIN ]; then
echo "Starting OpenLinkHub..."
cd $OPENLINKHUB_DIR
nohup $OPENLINKHUB_BIN >>$LOGFILE 2>&1 &
echo $! > $PIDFILE
fi
}
openlinkhub_stop() {
if [ -f $PIDFILE ]; then
echo "Stopping OpenLinkHub..."
kill $(cat $PIDFILE) 2>/dev/null
rm -f $PIDFILE
fi
}
openlinkhub_restart() {
openlinkhub_stop
sleep 1
openlinkhub_start
}
case "$1" in
start)
openlinkhub_start
;;
stop)
openlinkhub_stop
;;
restart)
openlinkhub_restart
;;
*)
echo "usage: $0 start|stop|restart"
;;
esac
EOF
chmod 755 /tmp/OpenLinkHub-0.8.9/etc/rc.d/rc.openlinkhub
6. ドキュメントのインストール
リポジトリ全体をすでに/opt/OpenLinkHubにコピーしているため、README等もそちらに含まれていますが、Slackwareの慣例に従い/usr/docにも配置しておきます。
mkdir -p /tmp/OpenLinkHub-0.8.9/usr/doc/OpenLinkHub-0.8.9 cp -a README.md CHANGELOG.md LICENSE docs \ /tmp/OpenLinkHub-0.8.9/usr/doc/OpenLinkHub-0.8.9/
7. パッケージの作成
cd /tmp/OpenLinkHub-0.8.9 sudo makepkg --linkadd y --chown n ../OpenLinkHub-0.8.9-x86_64-1.txz Slackware package ../OpenLinkHub-0.8.9-x86_64-1.txz created.
あとは、パッケージをインストールすれば完了です。
cd .. sudo installpkg OpenLinkHub-0.8.9-x86_64-1.txz
udevルールを反映するため、ルールを再読み込みします。
sudo udevadm control --reload-rules sudo udevadm trigger
使い方
起動スクリプトを手動で実行して起動します。
sudo /etc/rc.d/rc.openlinkhub start
起動時に自動実行させたい場合は、/etc/rc.d/rc.localに以下を追記します(rc.localが存在しない場合は新規作成し、実行権限を付与して下さい)。
if [ -x /etc/rc.d/rc.openlinkhub ]; then /etc/rc.d/rc.openlinkhub start fi
サービスが起動したら、ブラウザから以下のURLにアクセスするとダッシュボードが表示されます。
http://127.0.0.1:27003
設定ファイル
設定は/opt/OpenLinkHub/config.jsonで行います。
主な項目は以下の通りです。
- listenPort / listenAddress
- Webダッシュボードが待ち受けるポート番号とアドレスです。デフォルトはそれぞれ
27003と127.0.0.1です。 - cpuSensorChip
- CPU温度取得に使用するセンサーチップ名です。AMD環境では
k10tempまたはzenpower、Intel環境ではcoretempを指定します。 - memory / memorySmBus / memoryType
- メモリのステータス表示・制御に関する設定です。DDR4の場合は4、DDR5の場合は5を指定します。
- metrics
- Prometheus形式のメトリクス出力を有効にするかどうかの設定です。
- logFile / logLevel
- ログの出力先とログレベルの設定です。
logFileを-にすると標準出力にログが出力されます。
そのほかの設定項目の詳細は、公式リポジトリのREADMEを参照して下さい。