見出し画像

Linux版 HQPlayer : 導入メモ

NAA(Network Audio Adapter) PCをLinuxで運用すること(過去記事)で音質の改善がみられたので、HQPlayer PC本体でもLinux版のHQPlayerを導入することにしました。

デスクトップ環境の選択

Linuxはさまざまなディストリビューションが存在します(Ubuntu、Fedora、Debian、CentOSなど)。特徴や使用目的、PCとの相性に応じて、インストールするディストリビューションを決める必要があります。

いくつか試してみた結果、軽くてコンパクトなLinux Mint Xfce(Ubuntu系)に決めました。Linuxパソコンで特に何か作業をする予定はなく、HQPlayerが動作すればいいだけなので、シンプルなデスクトップ環境を選ぶことにしました。

LinuxMintにもデスクトップ環境の違いで複数の選択肢がありますが、こちらの記事が参考になりました。


Linuxのインストール

「Linuxのインストールは誰でも簡単にできる!」とは言えませんが、ネットにはたくさんの情報がありますので、興味があれば未経験からでも自力で対応できると思います。基本的な事が理解できていれば、ChatGPTと対話しながら進めるのもおすすめです(これは使えます)。

未使用(または新規)のPCをLinux専用機として使う場合は比較的簡単ですが、既存のOS(Windowsなど)との共存を図るとなると、ややハードルが上がります。既存OSを壊すリスクがありますが、あくまでも自己責任です。

Linuxの導入:一般的な手順

<インストールメディアの作成>
ディストリビューションの公式ウェブサイトから、ISOイメージをダウンロード。その後、RufusEtcherなどのツールを使って、USBフラッシュドライブにインストールメディアを作成。
<コンピュータの起動とインストールメディアの選択>
作成したインストールメディアをコンピュータに挿入し、コンピュータを再起動。再起動すると、BIOSまたはUEFI画面が表示されます。USBフラッシュドライブから起動するように設定。
<インストーラの実行と設定>
インストーラが起動したら、言語やキーボードの設定を選びます。その後、ディスクのパーティション設定やディスクの割り当てなど、インストールに関連する設定を行います。
<ユーザー情報の入力>
ユーザー名やパスワードなどの個人情報を入力し、管理者権限を持つユーザーアカウントを作成。
<インストールの実行>
設定が完了したら、インストーラを実行してLinuxをインストールします。インストールが完了すると、再起動を促すメッセージが表示されます。
<インストール後の初期設定>
インストールが完了した後、追加の設定が必要な場合があります(アップデートのチェックや追加のソフトウェアのインストールなど)。

現状のHQPlayer PC(自作機)は

【MB】ASRock acA520M-ITX/ac
【CPU】 AMD Ryzen 5 5600G、
【GPU】 Palit GeForce RTX 3050(Dual Fan)
【ストレージ】M.2 SSD(500GB)  + HDD(1TB)

という構成ですが、HDDは使っておらず熱源になっているだけなので撤去。128GBのSSDを増設してLinuxをインストール、Windows(M.2 SSD)とのデュアルブートにしました。

実際のインストール手順はこちらを参考にさせていただきました。

インストールは問題なくスムーズに完了しましたが、Linuxの起動プロセススクリーンに error が表示されます。

ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GP17.VGA.LCD._BCM.AFN7], AE_NOT_FOUND (20210730/psargs-330)
ACPI Error: Aborting method \_SB.PCI0.GP17.VGA.LCD._BCM due to previous error (AE_NOT_FOUND) (20210730/psparse-529)

ただ、OSは問題なく起動し、いまのところ不具合はなさそうなので、しばらくは様子見です。

low latency kernelに差し替え

NAA PCにインストールしたUbuntu Studio(low latency kernelを採用したパッケージ)を使うつもりでしたが、PCとの相性の問題があるのかインストールに失敗。
Linux Mintの初期状態では一般的なカーネル(generic Kernel)になっていますので、低遅延カーネル(low latency kernel)に差し替えることにしました。
低レイテンシー化の手順についてはこちらのサイトを参考にさせていただきました。

Synapticパッケージマネージャーを使ってlow latency kernelに差し替え
コマンドラインではなくGUI操作で完遂できるのでわかりやすい


Nvidiaドライバーのインストール

現状のPCスペックでHQPlayerでDSDアップサンプリングをスムーズに再生するにはNvidiaのGPUが必須となります。
Ubuntu(Desktop 22.04.2 LTS)をインストールしてみましたが、Nvidiaドライバーのインストールで躓き採用を見送りました。

しかしながら、Linux Mintではあっさり成功!

ドライバーはドライバーマネージャーで簡単にインストール
(デフォルトではNouveauディスプレイドライバーになっています)

HQPlayerでDSDリアルタイム変換再生を行うと、CPUとGPUの負荷が大きくなり、発熱が気になるところです。
CPUやケースFanはMB(ASROCK)のBIOS設定で細かくチューニングできるので問題ありません。

BIOSで動的なFanコントロールを設定

GPU Fanのコントロールはドライバーに付属するツール(NVIDIA Setting)で可能なのですが、機能的には不十分です。
「Enable GPU Fan Setting」をチェックすれば、FANが作動し回転数も変更できるのですが、PCを再起動するとデフォルト状態に戻ってしまいます。PCの起動の都度この手順が必要だとすると、面倒です。

NVIDIA Settingで「Enable GPU Fan Setting」をチェックすればFANが作動
PCを再起動するとデフォルト(「Enable GPU Fan Setting」はOFF)に戻る


GpuFanの動的コントロール

Windowsではグラボメーカー付属のツールでFANのコントロールができるのですが、Linux用のツールは用意されていません。一般的な用途でPCを使うなら問題はないと思ますが、GPUに負荷のかかるアプリ等を使用する場合はちょっと工夫が必要になります。

Linuxのシステムは柔軟なので、知識とスキルがあれば、思いのままにコントロールできるようです。GPU Fanの回転数を温度に応じて動的に変化させるシェルスクリプトをChatGPUにて提案してもらいました。

条件は
50度未満:回転数0%
50度以上70度未満:回転数30%
70度以上90度未満:回転数50%

#!/bin/bash

gpu_device=":0"  # GPUのデバイス名を設定

while true; do
    temperature=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader)
    fan_speed=0  # デフォルトの回転数

    if (( temperature < 50 )); then
        fan_speed=0
    elif (( temperature < 70 )); then
        fan_speed=30
    elif (( temperature < 90 )); then
        fan_speed=50
    fi

    nvidia-settings -a [gpu:$gpu_device]/GPUFanControlState=1 -a [fan:$gpu_device]/GPUTargetFanSpeed=$fan_speed > /dev/null

    sleep 5  # 温度を監視する間隔(秒)
done

シェルスクリプトはコマンドラインからViエディタ等で作成するのがLinuxの作法のようですが、GUIの一般的なテキストエディタでも問題ありません。「gpu_fan_control.sh」という名前(名前は任意)で保存したら実行可能なスクリプトにするためターミナルで下記のコマンドを実行します。

chmod +x gpu_fan_control.sh

スクリプトを実行するには、以下のコマンドを実行。

./gpu_fan_control.sh

上記のスクリプトを起動項目として登録しておけば、毎回コマンドを入力する必要はなく、システム起動時にFanのコントロールが自動で有効になります。

Psensor(Linux 用のハードウェア温度監視ツール)でチェック

GPU温度(赤線)の変化に応じてGPU FANが作動(青線)


スリーブモード復帰後の不具合

WindowsやMacでは、未使用時にスリーブさせるという運用で問題が生じることは少ないと思いますが、Linux Mintではスリーブ復帰後、HQPlayerのDSD変換が正常に再生されません(ブツブツ音切れが発生)。

HQPlayerのDSD変換はGPUコアを演算に利用する仕様ですが、モニタリ
ングしてみるとスリーブ復帰後にGPUが使われなくなるようです。

通常、HQPlayerでDSD変換再生を行うとCPUと併せてGPUの使用率が上昇します。

CPUの使用率(黄線) GPUの使用率(緑線)
HQPlayerで再生を始めると、CPU・GPUの使用率が同時に上昇

ところが、スリーブ復帰後にはCPUのみに負荷がかかり、GPUコアが使用されなくなります。

グラフ表記の左半分はスリーブ前 右半分はスリーブ復帰後


これはPCを再起動するまで改善しないようです。

Wake Up LANで起動させる

幸い、SSDにインストールしたLinux Mintの起動は速い(約10秒)ので、スリーブ運用はあきらめ、使用しない時はシャットダウンすることにしました。

ただ、HQPlayer PCは通常のリスニングポイントから少し離れた場所にあるため、電源ボタンを押すのに移動するのが面倒です(無精者です)。

そこで、Wake Up LanでPCを起動できるようにしました。

Wake on LANのMagic(G)をチェック
(尚、BIOSの設定も必要なのでBIOSのマニュアルを確認)

PC側でWake Up LANの設定ができていれば、お好みのデバイスからPCを起動することができます。

IphoneアプリでPCを起動


音質の印象など


音質についてはさほど期待をしていなかったのですが、ベールを1枚剥いだようなクリアーな音になりました。乏しい語彙で音質について語っても説得力がないので、WIndows環境には戻る気がなくなっとだけお伝えしておきます。

DSDアップサンプリングの必要がないという場合は、素のままのLinuxにHQlayerをインストールするだけで十分な高音質化が図れると思います(既存PC利用なら費用はかかりません)。
個人的にはDSDアップサンプリングされた音質が好みであることと、手持ちのUSB DACのスペック(DSD512対応)を活かす目的から、Linux環境のチューニングを行なってみました。

HQPlayer DesktopのライセンスはマルチOS対応になりますので、Windows、Mac、Linuxで使うことができます(同時使用は不可)。関心のある方はいろいろ試してみると楽しめると思います。

M2 Pro搭載のMac MiniにLinuxをインストールして使ってみたくなりました。小型で静か、かつ強力なHQPlayer専用マシンになりそうです(妄想)。


この記事が気に入ったらサポートをしてみませんか?