メインコンテンツまでスキップ

BC-250でおうちクラウドゲーミングサーバを構築する

· 約6分

AMD BC-250を使っておうちクラウドゲーミングサーバを構築する話。

魔法少女ノ魔女裁判

魔法少女ノ魔女裁判(まのさば)という大変すばらしいゲームがある。

https://store.steampowered.com/app/3101040/_/
Loading...
store.steampowered.com

今この記事を読んでいてまだプレイしたことがない人は、ぜひ今すぐ何も調べずに上のリンクから購入してプレイしてほしい。 ダンガンロンパとかそういうタイプのゲームが好きであれば絶対に後悔しないと思う。 注意点として、何を調べてもネタバレを踏む可能性があるのでなるべく何も調べずに(事前知識を入れずに)プレイするのがおススメです。

なお、この記事にまのさばのネタバレはほぼ含まれないので安心してほしい。

まのさばを快適に遊びたい

さてそんなまのさばだが、

  • 10年前の初代Surface Book[1]では裁判パートが重くて紙芝居状態になる
  • Steamクラウドに対応していないので、複数PCで遊ぶ際にセーブデータの同期が面倒

といった課題が存在する。

BC-250との出会い

そうした課題を解消してまのさばを快適に遊ぶためにROG Xbox Ally Xでも購入しようかと検討していたころ、たまたまYouTubeで次の動画を見つけた。

https://www.youtube.com/watch?v=k2_8vptkYzU
Loading...
www.youtube.com

BC-250はPS5向けのAPUの検査落ち品を流用したと言われているマイニング向けのボードで、PS5の8コア36CUと比較して6コア24CUと利用可能なCPUとGPUが減らされている。 元々は主にイーサリアムのマイニングに使用されていたようだが、イーサリアムがPoWからPoSに移行したことでお役御免になったのか破格で投げ売りされている。

ただそれでもGPUはおおよそRX 6600やRTX 2070程度の性能があり、16GB GDDR6のユニファイドメモリを搭載しているため、それなりのゲームをカジュアルに遊ぶには十分な性能である。 また、最近になってMesaでのGPUドライバサポートが行われたため、Linuxゲーミングマシンとして実用的に使えるのではないかと注目を集めている。 電源やSSDなどの必要な周辺機器と合わせても3万円程度に収まるので、おもしろガジェットとして見ても手が出しやすい。

今回はこのBC-250を購入して、まのさばのようなPCゲームを様々なデバイスから快適にリモートプレイするための専用マシン(おうちクラウドゲーミングサーバ)として構築することにした。 ちなみに自分が購入した時点ではeBayでしか取り扱いが無かったものの、現在ではアリエクでも購入できるようである。

そうして注文してから2週間ほどで届いたのがこちら。

届いたBC-250
届いたBC-250

プチプチで包んで段ボールに入れるだけというワイルドな梱包の割には、特に破損もなく良好な状態で届いた。

自分が購入した個体はシステムドライブにHiveOSがインストールされた16GBのSSDが刺さっており、モニタを繋いで電源を入れることで最低限の動作確認が行えた。

セットアップ

BC-250は4Uラックマウントのマイニングリグ(BC-250が12枚刺さる)の中の単体ボードのバラ売りという形なので、本来の用途以外で使うには多少手間をかける必要がある。 ここではクラウドゲーミングサーバとして構築するにあたって行った対応をざっくりと紹介する。

排熱ファンの取り付け

見ての通りBC-250にはヒートシンクが搭載されているが、ファンは付いていないため何とかして冷却を行う必要がある。 幸いなことに一般的なPWM制御ファン向けの4ピンヘッダがあるため、手持ちのPC向けファンをそのまま使用することが可能である。

BC-250に搭載されているヒートシンクは、後方から前方へのエアフローを良くするために表面にカバーが付いている。 巷ではこのカバーを無理やりこじ開けて直接ファンを括り付けているような構成例もあるが、見た目も含め流石にアレなので3Dプリンタでファンアダプタを作成した。

適当に設計して…
適当に設計して…
プリントして…
プリントして…
装着して完成!
装着して完成!

ファンを寝かせればもっとコンパクトにできたが、なるべく空気の通り道を曲げない方が効率が良さそうな気がしたのでこの形にした。

電源の確保

BC-250の電源は一般的な6+2ピンの12V PCIe補助電源から取ることが可能であり、電源側の容量が十分であればこのコネクタ単体で十分に動作させることができる。 OSのインストールなどは余っていたATX電源を使用して行うことができたが、負荷をかけた際に電源が落ちてしまうため容量不足と判断して専用の電源を用意することにした。

BC-250のTDPは220Wであるため、パッケージ破損なら良いかとAmazonアウトレットで激安の12V30A出力の360W電源を適当に選んで購入した。

Amazonアウトレットで購入した電源
Amazonアウトレットで購入した電源

結果として届いたのは、次のようにパッケージだけでなく本体までボコボコになった電源だった。

実際に届いた電源
実際に届いた電源

幸いなことに軽く修理して問題なく使用できたが、今後Amazonアウトレットでの買い物は控えようと思った。

BIOSの書き換えとメモリ割り当ての変更

購入直後のBC-250はGPUメモリ(というよりUMA Frame Bufferとして最初からGPU専用に割り当てられる領域)がBIOSバージョンに応じて8GBや12GBも割り当てられている。 このままの状態でも使用できないことはないが、CPU側で利用可能なメモリが減ってしまうしGPUメモリは必要に応じて動的に確保されるのでこの割り当て量を最小限の512MBに変更した。

割り当て量の変更を行うにはBIOSの書き換えを行う必要がある。手順や詳細はこちらのリポジトリやそのリンク先が参考になる。 書き換えを行う前には必ずバックアップを取ろう。

SPIフラッシュにつながるピンヘッダが出ているため、ユニバーサルプログラマなどで手軽に書き換えられる
SPIフラッシュにつながるピンヘッダが出ているため、ユニバーサルプログラマなどで手軽に書き換えられる

なお、BIOSを書き換えるとIOMMUも有効化できるようになるが、少なくとも現時点ではIOMMUを有効化するとBazziteがGPUを認識できなくなるので有効化してはいけない。(1敗)

SSDの換装

購入したBC-250には16GBのSSDが付属していたが、流石にこのサイズでは何もできないのでその辺にあったSSDと換装した。 M.2 (Type2280)のスロットだがインタフェースはPCIe 2.0 x2なので、容量はともかく高速なSSDを使う必要は全くない。

OSインストール

Windowsをインストールすれば動作しないこともないが、現状BC-250のGPUに対応しているWindows向けドライバは存在しない。 そのため、GPUを利用するにはLinuxをインストールする必要がある。

Linuxゲーミングにあまり詳しくない人は「LinuxじゃWindows向けのゲームは動かないのでは?」と思われるかもしれないが、Steamを提供しているValve社などが開発しているProtonというWineをベースにした互換レイヤが良くできており、かなりのWindows向けゲームがLinux上でも問題なく動作する。 気になる人はProtonDBなどのサイトでProton上でのゲームの動作実績を検索できる。

自分もLinuxゲーミングは初めてなので、とりあえず有名なSteamOSでも入れればいいのかと思って調べたところ、どうやらSteam Deck以外にインストールするのはあまり適さなそうな雰囲気だったので今回はBazziteをインストールした。

https://bazzite.gg
Loading...
bazzite.gg

色々なバリエーションがあるが、 bazzite-deck-stable-amd64.iso が良さそうである。 というのも、Deck(Steam Gaming Mode)付きのものは後から設定を変更して直接デスクトップ環境にブートするようにもできるが、Deck無しのものをGaming Modeにブートするように変更することはできない。 そのため、一旦Deck付きでインストールして試してみて、動作が気に入らなかったり問題があったりした場合に直接デスクトップ環境にブートするように変更するのがおススメである。

仮想ディスプレイの追加

クラウドゲーミングサーバとして使うので普段はディスプレイを接続しないで運用したいが、そうするとゲーム画面の出力先が無くなってしまう。 一般的にはダミープラグを接続して仮想ディスプレイとして認識させたりするようだが、BC-250のAMDGPUドライバはソフトウェア的な仮想ディスプレイに対応しているので今回はそれを利用した。

手順としては、

  1. 追加したいディスプレイのEDIDダンプをedid-decodeのリポジトリなどから用意する
  2. それを /usr/lib/firmware/edid/acer-xv273k-dp2.bin のようなパスに配置して、起動時のカーネルパラメータに drm.edid_firmware=DP-2:edid/acer-xv273k-dp2.bin video=DP-2:e のような形で追加する

BazziteはFedoraベースなので、EDIDダンプを含んだRPMパッケージを作成したうえで

sudo rpm-ostree install edid-acer-xv273k-dp2-1-1.fc42.noarch.rpm
systemctl reboot

sudo rpm-ostree kargs --append="drm.edid_firmware=DP-2:edid/acer-xv273k-dp2.bin" --append="video=DP-2:e"
systemctl reboot

のような形で rpm-ostree コマンドを使用して適用するのがおススメである。

試してはいないが、この方法であればHDRディスプレイのEDIDダンプを食わせることでHDR出力も行えるらしい。

GPUガバナーの導入

デフォルトの状態だとGPUのクロック周波数が1500 MHz固定になってしまうため、負荷に応じて動的に周波数と電圧を制御できるようにGPUガバナーを導入した。 BC-250向けのカーネルパッチを含んだ最近のBazziteであれば、GPUガバナーを導入することで周波数を350-2230 MHzの間で制御できるようになる。これによってピーク性能の向上とアイドル時の消費電力と発熱の削減という両方のメリットを得られる。

BC-250向けのGPUガバナー実装の大元になっているのはSegfault氏によるOberon Governorだが、ここから様々な人が様々な改修を加えたバリエーションが無数に存在する。 現時点で導入するのであれば、FilippoR氏によるOberon GovernorCyan Skillfish GovernorがCoprでパッケージも公開されていて導入しやすいだろう。 時間があれば自分でオリジナルのGPUガバナーを実装してみるのも面白そうである。

WoLの有効化

BC-250はGPUガバナーを導入した状態でもアイドル状態の消費電力が70W弱あるため、いくらクラウドゲーミングサーバといっても常時起動しておくのはしんどい。 また、S3スリープにも対応していないので使わない間はスリープにしておく運用もできない。

ただ、幸いなことにシャットダウン状態からのマジックパケットによるWake on LANには対応しているため、普段はシャットダウンしておいて遊ぶ際にMoonlightクライアントやUpSnapなどから起動するといった運用が可能である。 BC-250にインストールしたBazziteの起動は速く、マジックパケットを投げてから30秒もすればデスクトップ環境に接続できるようになる。

Wake on LANの有効化はBIOSではなくBazziteのコンソールから

ujust toggle-wol

で行うことができる。

Sunshineの導入

リモートプレイを行うためにはゲームの画面を配信したり入力操作をゲームに伝えたりするホストアプリが必要になる。 2025年現在では、ホストアプリとしてNVIDIA GameStreamの互換実装であるSunshineが有力だろう。

BazziteはSunshineを簡単に導入できるようになっていて、同様にコンソールから

ujust setup-sunshine

とするだけで導入することができる。

Sunshineに接続するクライアントアプリはMoonlightが利用可能なほか、試した時点ではAndroid端末から接続する場合はMoonlightからforkしたArtemisの方がマルチタッチなども含めたタッチ操作のハンドリングが良かった。

今のところBC-250でハードウェアエンコードを行う方法は無いため、映像は必然的にソフトウェアエンコードになる。 ただ、BC-250のCPUは6コア12スレッドあるためソフトウェアエンコードでも負荷は全く気にならなかった。

リモートプレイ

こうしてセットアップしたBC-250に、実際にAndroid端末からArtemisで接続してまのさばをプレイしてみた様子が次の動画である。

Loading...
View on Mastodon

見ての通り音声と映像ともに問題なく、タッチ操作も含めて非常に快適にプレイできることが確認できる。

ベンチマーク

続けて電源や冷却周りの負荷検証も兼ねてモンハンベンチを回してみた。

Loading...
View on Mastodon

フレーム生成無しでの結果は次のとおりである。

1920x1080 プリセット中の結果
1920x1080 プリセット中の結果
1280x720 プリセット最低の結果
1280x720 プリセット最低の結果

決して高いスコアではないが、リモートプレイ越しでこれだけ動けばカジュアルなゲームを遊ぶには十分だろう。

ベンチマーク中のピーク温度
ベンチマーク中のピーク温度

ヒートシンク部分で計測したベンチマーク中のピーク温度は約62℃で、自作したファンアダプタと12cmファン一つで十分に冷却できているようだ。

おわりに

以上、BC-250を使っておうちクラウドゲーミングサーバを構築する話でした。

購入時はろくに調べもせずまぁ何とかなるだろうと勢いで購入したが、結果として非常にコスパ良くおうちクラウドゲーミング環境を構築することができた。

まのさばは実際にリモートプレイで最後まで快適に遊べたし、PC向けにしかリリースされていないゲームもスマホやタブレットで手軽に遊べるようになったので色々な作品をプレイしてみたいと思う。

BC-250 コミュニティ

BC-250にはDiscordコミュニティが存在する。 やり取りは基本的に英語だが、この記事で紹介していないものも含めBC-250を活用するうえで役に立つ様々な情報が交わされている。 BC-250を入手した際には是非とも参加するのがおススメである。

Footnotes

  1. 画面側のタブレット部分だけタブレットホルダーに固定してごろ寝タブレットとして転用している