Smart AI Life Knowledge Base

💻 自作AIクラスタ

生成AI、ローカルLLM、スマートホーム自動化で日々の暮らしをゆたかに整える実践ドキュメント。

【100℃の熱暴走を完全制圧】約2万円の「AMD BC-250」をSMUアンダーボルト&NCT6687dファン制御で極限冷却!消費電力-39%(68W→41W)と性能無劣化を両立したチューニング全手順

【101℃沸騰から85℃安全圏へ】PS5同等APUの爆熱をどう抑えるか?M.2 SSD 85℃の危機から、NCT6687dドライバビルドとSMU直接通信(F-Vカーブ scale=-35)で消費電力-39%(68W→41W)を達成し、Phi-4 14Bをノーブレーキ完走させた冷却チューニング全記録。

🚀 生成AI×リスキリングSponsored / PR
❄️ ハードウェア冷却ハック × 省電力化実証

100℃の沸騰基板を安全圏へ叩き落とす!
AMD BC-250のSMUアンダーボルト&ファンPWM制御で消費電力-39%を達成した全記録

〜PS5同等APUの爆熱をどう抑えるか?M.2 SSD 85℃の危機から、NCT6687dドライバビルドとF-Vカーブ調整(scale=-35)でPhi-4 14Bをノーブレーキ完走させるまで〜

ぽトル アイコン
POTTLE
筆者:ぽトル(Pottle)| 省エネ脱力パンダ
家庭用蓄電池や格安ハードウェアをいじり倒すのが生きがいのパンダ。「安くて速い」は大好物だけど、「熱くて壊れる」のは絶対に許せない。今回はBC-250の心臓部(SMU)に直接メスを入れて、爆熱基板をキンキンに飼い慣らします!🐼❄️
モコ
「ぽトル、前回の記事でBC-250の40CUアンロックとPhi-4の動作は大成功したけど……実機を触ったらヒートシンクが火傷しそうな熱さになってない!?センサー見たら100℃超えてるんだけど大丈夫なの!?」
ぽトル
「実はBC-250の工場出荷状態は、過酷なマイニング環境で絶対にハングしないように1.22Vという超盛り盛りの電圧が流れているんだ。おまけにLinux標準ドライバだとファン制御がロックされていて微風(800RPM)しか出ないという二重苦だったんだよね。」
モコ
「えっ!?電圧下げて本当に大丈夫なの?AIの推論計算中にエラーで止まったりしないの?」

1. 【緊急事態】CPU・GPUが100℃、M.2 SSDが85℃に到達した現場証拠

AMD BC-250にFedora 45をインストールし、無事にGPU 40CU解放とCPU 8コア16スレッド化、そしてMicrosoft Phi-4(14B)の推論サーバ化に成功した直後のことです。
何気なくハードウェアセンサーコマンド(sensors)を叩いた私たちは、画面を見て凍りつきました。

BASH (対策前の悲鳴を上げるセンサー値)
k10temp-pci-00c3
Tctl:        +101.4°C   <-- CPUが100度超え!

nvme-pci-0300
Composite:    +84.8°C  (crit = +94.8°C) <-- M.2 SSDが限界手前!

amdgpu-pci-0100
vddnb:         1.22 V   <-- 電圧が異常に高い
edge:        +100.0°C   <-- GPUも100度到達!
PPT:          68.82 W

CPUもGPUも100℃に達し、NVMe SSDは84.8℃。SSDの臨界停止温度である94.8℃まであと10℃しかありませんでした。
このまま24時間稼働させれば、チップの寿命を著しく縮めるだけでなく、サーマルスロットリングによって推論速度が半分以下に失速してしまいます。

2. なぜBC-250は過熱するのか?(過剰な初期電圧とファン制御ロックの構造)

原因を調査した結果、BC-250特有の2つのハードウェア的構造が判明しました。

① マイニング専用設計による「異常な初期電圧マージン」

BC-250は中国などの過酷な環境のマイニングファームで、シリコンの個体差に関係なく24時間絶対に落とさない運用を前提に作られています。そのため、初期バイオス設定では 1.22Vというオーバークロック用のような極めて高い電圧 が常時供給されていました。

② Linux標準のSuperIOドライバ(nct6683)のPWM書込ロック

BC-250のマザーボードにはファン制御用のNuvotonチップ(NCT6686)が載っていますが、Linux標準カーネルに含まれる nct6683 ドライバは読み取り専用(Read-Only)です。OS側からファン回転数を上げようとしてもPWMファイルへの書き込みが拒絶され、ファンはアイドリング用の800RPM台で固定されたままになっていました。

3. 【実践ステップ1】NCT6687dカーネルモジュールのビルドとPWM開放

まずは、ファン制御の主導権をOSに取り戻すため、有志が開発したオープンソースの nct6687d ドライバをビルドして導入します。

BASH (nct6687d のビルドと有効化)
# 1. 既存の読み取り専用モジュールをアンロード
sudo modprobe -r nct6683

2. nct6687d ソースの取得と並列ビルド

cd ~ git clone https://github.com/Fred78290/nct6687d.git cd nct6687d make -j16

3. モジュールのインストール

sudo make install sudo depmod -a sudo modprobe nct6687

4. 起動時の自動ロードと競合モジュール(nct6683)のブラックリスト化

echo 'nct6687' | sudo tee /etc/modules-load.d/nct6687.conf echo 'options nct6687 force=true' | sudo tee /etc/modprobe.d/nct6687.conf echo 'blacklist nct6683' | sudo tee /etc/modprobe.d/blacklist-nct6683.conf

これで /sys/devices/platform/nct6687.*/hwmon/hwmon*/pwm* に書き込み権限が付与され、ソフトウェアからファン回転数を制御できるようになります。

4. 【実践ステップ2】SMU直接通信によるアンダーボルト(scale=-35)の全貌

次に、今回の冷却劇の真骨頂である「SMU(System Management Unit)経由での低電圧化」を行います。
BC-250のCPU・GPUは統合APU(Zen 2+RDNA 1ハイブリッド)であり、SMUメッセージを直接送ることで電圧カーブをOSから動的に書き換えることが可能です。

BASH (bc250_smu_oc ライブラリの導入)
cd ~
git clone https://github.com/bc250-collective/bc250_smu_oc.git

このライブラリを使って、以下の4つのチューニングを同時に投入します:

  1. ハードウェア上限温度の保護(85℃リミット):smu.q3_0x8b_set_cpu_max_temperature(85) および smu.q3_0x8c_set_gpu_max_temperature(85) を実行し、万が一の際も85℃を超えないようにSMUへ安全弁をセット。
  2. 余剰電圧の無効化:smu.disable_extra_cpu_gpu_voltage(True) で無駄な昇圧を遮断。
  3. F-V相関カーブの適正化(scale = -35):smu.q3_0x50_scale_f_vid_curve(-35) で、周波数に対する要求電圧を安全圏の限界まで引き下げ。
  4. ブーストクロック制限(3500MHz):smu.q3_0x8f_set_max_cpu_boost_clk(3500) で、低電圧下で不安定になりやすい無謀なクロック跳ね上がりを抑止。

5. 【実証結果】消費電力-39%(68W→41W)&温度15℃低下の実測データ

アンダーボルトとファン制御を投入した前後の実機センサー比較です。数字がすべてを物語っています。

計測項目 対策前(工場出荷状態) 対策後(本チューニング適用後) 改善効果
GPU消費電力 (PPT) 68.82 W 41.88 W 〜 50.4 W 約 -27W 削減(-39%の超省電力)
GPUコア温度 (edge) 100.0 °C(危険域) 85.0 °C -15.0 °C 冷却達成
CPU温度 (Tctl) 101.4 °C(100度超え) 85.9 °C -15.5 °C 冷却達成
供給電圧 (vddnb) 1.22 V(過剰) 0.73 V 〜 0.86 V(動的制御) 最大 0.49V の大幅降圧
M.2 NVMe SSD温度 84.8 °C(警告域) 77.8 °C 基板全体の放熱低下で連鎖冷却

6. 「そんなに電圧を下げて安定するのか?」徹底検証ベンチマーク

「最大0.49Vも電圧を下げて、本当にシステムがクラッシュしないのか?」という疑問を持たれる方も多いはずです。
そこで、アンダーボルト適用後にTailscale経由でMacBookから重負荷の推論クエリ(Microsoft Phi-4 14B)を連続実行し、安定性と速度を検証しました。

BASH (低電圧化状態での推論ベンチマーク)
python3 model_router.py query "素数とは何か、20文字以内で簡潔に説明して" --prefer bc250

[BC-250 Phi-4 Answer (9.2 tok/s, Cost: $0.00)]:
素数は、1とその数自身以外に約数を持たない自然数です。

結果は秒速9.2トークンのカタログスペック通りの速度を完璧に維持。文字化けや出力破綻、カーネルパニック、GPUハングは1件も発生していません。
これは「電圧を固定で下げた」のではなく、「負荷に応じて必要な0.89V〜0.90Vまで動的に持ち上がるインテリジェントなF-Vカーブ調整」を行っているためです。

7. コピペで完了する自動起動systemdサービス化スクリプト

最後に、再起動しても電源を切っても自動的にこの省電力・低電圧設定が適用されるよう、systemdサービスとして永続化する設定手順です。

BASH (省電力化自動起動スクリプトの配置)
# 1. 最適化実行スクリプトの作成
sudo tee /usr/local/bin/bc250-power-optimizer.py << 'EOF'
#!/usr/bin/env python3
import sys
sys.path.insert(0, '/home/bc250/bc250_smu_oc')
from bc250_smu import Bc250Smu

def main():
    try:
        smu = Bc250Smu(use_flock=True)
        # CPU & GPU 上限温度を85℃に保護
        smu.q3_0x8b_set_cpu_max_temperature(85)
        smu.q3_0x8c_set_gpu_max_temperature(85)
        # 余剰電圧のカット
        smu.disable_extra_cpu_gpu_voltage(True)
        # アンダーボルト(消費電力を約27W削減)
        smu.q3_0x50_scale_f_vid_curve(-35)
        # 最大クロックを堅牢な3500MHzに抑制
        smu.q3_0x8f_set_max_cpu_boost_clk(3500)
        print('[BC-250] Power optimizer applied successfully.')
    except Exception as e:
        print(f'[BC-250] Error: {e}', file=sys.stderr)

if __name__ == '__main__':
    main()
EOF

sudo chmod +x /usr/local/bin/bc250-power-optimizer.py

2. systemd サービスユニットの登録と自動起動化

sudo tee /etc/systemd/system/bc250-power-optimizer.service << 'EOF' [Unit] Description=AMD BC-250 SMU Power & Thermal Optimizer After=multi-user.target [Service] Type=oneshot ExecStart=/usr/local/bin/bc250-power-optimizer.py RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable --now bc250-power-optimizer.service
🎉 爆熱マイニング基板が「静かで冷える最強推論サーバ」へ!

工場出荷時の「無理やり力任せに高電圧を流す」状態から、カーネルドライバとSMU直接制御によって本来の洗練されたシリコンのポテンシャルを解放できました。
24時間つけっぱなしにする自宅AIクラスタとして、消費電力40W台・安定動作のBC-250は最高の相棒です!🐼❄️🛠️

🚀 生成AI×リスキリングSponsored / PR