Macmini5,2(Mid 2011)+ Ubuntu 24.04 なら、applesmc + mbpfan が扱いやすい構成です。Ubuntu 24.04(Noble)にも mbpfan 2.4.0 が標準パッケージとしてあります。(Ubuntu Packages)
Linux の applesmc ドライバは Intel Mac の温度センサーとファン制御を sysfs 経由で提供しています。(GitHub)
1. まず applesmc を確認
sudo modprobe applesmc
sudo modprobe coretemp
lsmod | grep -E 'applesmc|coretemp'
次にファンのインターフェースを確認します。
SMC=$(find /sys/devices/platform -maxdepth 1 -type d -name 'applesmc.*' -print -quit)
echo "$SMC"
ls -l "$SMC"/fan*
例えば、以下のようなものが出れば制御できます。
fan1_input
fan1_manual
fan1_max
fan1_min
fan1_output
fan1_min と fan1_max を必ず確認してください。
cat "$SMC/fan1_min"
cat "$SMC/fan1_max"
cat "$SMC/fan1_input"
Mac によって値は違うので、1800~5500 RPM などと決め打ちしない方が安全です。
2. 手動で回転数を変更する
まず一時的に 3000 RPM などでテストできます。
echo 1 | sudo tee "$SMC/fan1_manual"
echo 3000 | sudo tee "$SMC/fan1_output"
現在の実回転数:
cat "$SMC/fan1_input"
数秒すると 3000 RPM 前後になっているはずです。
Linux 上の Intel Mac では、fan1_manual=1 にしてから fan1_output に目標RPMを書く方法が使われています。(Ask Ubuntu)
自動制御に戻す
これは重要です。
echo 0 | sudo tee "$SMC/fan1_manual"
手動モードのまま低回転に固定すると、CPU/GPU負荷が上がっても回転数が上がらなくなります。
3. おすすめ:mbpfan で温度連動
Ubuntu 24.04 なら、
sudo apt update
sudo apt install mbpfan lm-sensors
有効化:
sudo systemctl enable --now mbpfan
状態確認:
systemctl status mbpfan
mbpfan は coretemp からCPU温度を読み、applesmc 経由でファン速度を変更します。(GitHub)
設定は:
sudo nano /etc/mbpfan.conf
例えば私は Macmini5,2 なら、まず穏当な設定として次のあたりから試します。
[general]
low_temp = 55
high_temp = 65
max_temp = 80
polling_interval = 1
ファンの min/max は applesmc が報告する値を mbpfan が利用できます。明示的に設定したい場合は、
cat "$SMC/fan1_min"
cat "$SMC/fan1_max"
を確認してから、
min_fan1_speed = 2000
max_fan1_speed = 5500
のように実機の値を使って設定します。mbpfan の標準設定も /sys/devices/platform/applesmc.768/fan*_min と fan*_max を参照する仕様です。(GitHub)
変更後:
sudo systemctl restart mbpfan
4. 温度とRPMをリアルタイム監視
sensors
または、
watch -n 1 sensors
ファンRPMも直接見たいなら:
watch -n 1 "cat $SMC/fan1_input; sensors"
Macmini5,2 なら私ならこうします
常用は mbpfan、手動の fan1_output は動作確認用にします。
最初に、次の結果を貼ってもらえれば、Macmini5,2 の実機値に合わせて /etc/mbpfan.conf を具体的に作れます。
uname -r
lsmod | grep -E 'applesmc|coretemp'
SMC=$(find /sys/devices/platform -maxdepth 1 -type d -name 'applesmc.*' -print -quit)
echo "$SMC"
for f in "$SMC"/fan*; do echo -n "$f = "; cat "$f"; done
sensors
特に fan1_min / fan1_max とアイドル時・負荷時CPU温度が分かれば、「静音寄り」「冷却寄り」のファンカーブを決められます。