前回は、自宅で使用するノートパソコンを Xubuntu 専用機にした話を紹介しました。
今回はその続きで、職場PC(農業事務で使う Windows PC)を Linux へ移行してしまおうと思います。
自宅では完全に Linux で生活していて、Windows じゃないと困る場面はほぼありません。
農業事務で唯一 Excel を使っていますが、それ以外は Linux で問題なし。
Linux のターミナルのコピペが Ctrl + Shift + C / V なのが最大の違和感ですが、これは慣れるしかないと思っています。
つまり、もう Windows である必要性はゲームくらいになっていて、愛用ゲームは「Oxygen Not Included」です。
そこで、タイトルの通り、部屋に眠っていた 7〜8年前のデスクトップを、自宅のノートPCと同じように Xubuntu 専用機にしました。
では導入したPCのスペックです
デスクトップPCのスペック
OS / デスクトップ環境
- Xubuntu 24.04.3 LTS (Noble Numbat)
- Kernel: 6.17.0-35-generic
- Desktop: Xfce 4.18.1
- Display Manager: LightDM 1.30.0
本体 / マザーボード
- Mouse Computer IStDXi-M1B6
- M/B: Mouse B360M
- UEFI: American Megatrends M.020 (2019/10/09)
CPU
- Intel Core i5-9400(6コア / 6スレッド)
- Coffee Lake / 800〜4100 MHz
- L3 9MB / AVX2対応
GPU / 画面
- Intel UHD Graphics 630(i915 / iris)
- LG E2241(1920×1080 / 60Hz)
オーディオ
- Intel Cannon Lake PCH cAVS
- PipeWire 1.0.5(pipewire-pulse)
- USB MIDI: KORG microKEY2-25 Air
ネットワーク
- Intel I219-V(有線LAN)
- Intel AX210(Wi-Fi 6E / Bluetooth)
ストレージ
- NVMe SSD: Western Digital PC SN520(256GB / GPT)
- HDD: Hitachi HDS721016CLA382(160GB / 7200rpm / MBR)
パーティション
- / : ext4 / 232GB
- /boot/efi : 1GB
- swap : 4GB(swap.img)
メモリ
- 8GB
その他
- 稼働時間: 2時間36分
- dpkg: 1907 / snap: 14
- gcc: 13.3.0 / clang:
優先でLAN接続できないのでまずは Wi-Fi アダプタを購入して PCIe に追加しました。
これでネット環境が整ったので、いよいよ本題の「ノイズの話」に入ります。
私は趣味でバンド活動をしていて、木工で楽器を作ったりもしています。
バイオリン、アコースティックギター、カホンなどを自作してきました。
ギターは Gibson ES-335 の設計図を見つけて自作し、それを鳴らすためのアンプも自作しています。
市販のオーディオアンプは高価なので、電源基板・プリアンプ基板・スピーカーユニットを揃えて、
50W × 2発のかなり大きいギターアンプ を自作しました。
ライブは頻繁にあるわけではないので、普段はこのアンプを PCのスピーカーとして使っていました(Windowsでは問題なし)。
ところが今回、部屋に眠っていたデスクトップを Xubuntu 化してこのアンプにつないだところ、
「ブーーーーーー」
と、ひどいノイズが出るようになってしまいました。
ノイズの症状と状況整理
Xubuntu を入れたデスクトップを自作ギターアンプにつないだ瞬間、
「ブーーーーーーー」
という低周波のノイズが常時鳴り続ける状態になりました。
Windows ではまったく問題なく使えていたので、
「Linux にしたらノイズが出るようになった?」
と最初は思いました。
・無音時だけ ブーーー と鳴る
・YouTube を開くだけでノイズが止まる(音を流していなくても)
・スマホをアンプにつないだ場合はノイズゼロ
・ヘッドホンではノイズが出ない
・PC側で音量を変えてもノイズの大きさはほぼ変わらない
ここで、「よくわからんけど無音でもいいから流しておけばノイズはとまる」と感じました。
なので、pythonで無音を流すテストします。
import numpy as np
import sounddevice as sd
import time
fs = 44100
print("audio keep-alive started")
while True:
sd.play(np.zeros(fs), fs)
sd.wait()
time.sleep(1)
ノイズは止まりました。
これで他の音源をならしても普通に鳴ります。
成功。
メモリ使用量を調べておきます。
PID CMD %MEM RSS VSZ 71482 python test_audio.py 0.6 50000 631252
50M使用。もうちょい削減できんの? LLMに聞いてみると、
1.Pythonやめて「ffmpeg単体」
2.ALSA直叩き(aplay)
デバイスを直で叩くの・・・?
ちょっと大げさすぎるな。
ということで、ffmpegを試します。
ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -f pulse default
結果、ノイズ消えるの確認。
メモリも確認
PID CMD %MEM RSS VSZ 74258 ffmpeg -f lavfi -i anullsrc 0.6 47304 734308
なんか全然軽くならないな。というのが印象ですね。
もう46Mなら十分軽いとして、許容することにします。
あとはこれを自動化したいですね。
・PC起動で自動開始
・ログイン不要で常駐
・落ちても自動再起動
systemdユーザーサービス作成
[Unit]
Description=Dummy Audio Keep Alive (ffmpeg)
After=pipewire.service
Wants=pipewire.service
[Service]
ExecStart=/usr/bin/ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -f pulse default
Restart=always
RestartSec=1
# 少しだけ優先度下げる
Nice=10
[Install]
WantedBy=default.target
systemd有効化
systemctl --user daemon-reload
systemctl --user enable dummy-audio.service
systemctl --user start dummy-audio.service
スリープ復帰フック
sudo nano /usr/lib/systemd/system-sleep/dummy-audio
中身:
#!/bin/bash
case "$1" in
post)
# ユーザーサービスを復帰時に再起動
sudo -u tuyomori systemctl --user restart dummy-audio.service
;;
esac
systemdやスリープ復帰フックなどはLLMに聞きました。
結果、再起動してもスリープ復帰してもノイズはでなくなりました。
他のスピーカーで試していないので環境固有の症状かは判断できません。
まとめ
Linuxとの相性が良いノートPCに Linux を入れるほうが圧倒的に楽でした。
デスクトップは電源やグランドの癖が強く、オーディオ周りのトラブルが出やすいです。
原因ははっきりと突き止めたわけではないですが、ソフト側で制御することは可能でした。
とはいえ、今回のノイズ問題を通して
「PCアナログ出力 × 自作アンプ × Linux」
という組み合わせでのトラブル対応は良い経験になりました。