このサイトはアフィリエイトリンクを含んでいます
スポンサーリンク

古いスマホ サーバー化計画:5台を1台のコンピュータにする

古いスマホ サーバー化の計画で並べた5台のAndroid端末とケーブル ガジェット
スポンサーリンク
スポンサーリンク

「古いスマホ サーバー化」で検索してここに来られた方へ、先に書いておきます。ぼくの家には、機種変更のたびに引き出しへ移っていった古いAndroidが5台あります。今回考えているのは、この5台をWi-Fiでつないで、CPUとメモリを寄せ集めて1台の大きなコンピュータとして働かせる計画です。正直に言うと、まだ1台も組んでいません。これは「作ってみた」記事ではなく、「これから作る」計画の記事です。それでも書く理由は、思いつきから計画書ができるまでの間に何度も的を外し、そのたびに軌道修正した過程そのものが、同じように古いスマホを持て余している方の役に立つと思ったからです。この記事では、計画のきっかけと、実際に調べて分かった技術的な前提、そしてこれから進める5段階の計画をお話しします。

スポンサーリンク
スポンサーリンク

古いスマホ サーバー化を思いついたきっかけ

きっかけは、ぼくがふと「スマホ農場って知ってる?」とAIに聞いてみたことでした。返ってきたのは、SIMを大量に契約して認証を突破したり、SNSの表示回数を水増ししたりする、あまり良くない意味での説明です。でもぼくが聞きたかったのはそっちじゃありませんでした。理由はシンプルです。ウチに古いAndroid端末が何台も余っていて、活用できないかなと思っただけなんです。もちろんSIMは余っていないので、ハードとしての使いみちに限った話です。

AIからは最初、端末1台ずつでできる使い道が返ってきました。見守りカメラ、デジタルフォトフレーム、音楽プレーヤー、カーナビ、サブディスプレイ、それに売却。でも、そのどれも違いました。ぼくがやりたかったのは、端末1台ずつの活用法ではなく、「スマホ農場」という形そのもの、つまり多数の端末をパソコンから一括で動かす構成だったんです。

1台だけをサーバーにしたい方へ

ここで、1台だけをサーバーとして使いたい方に先に答えておきます。「古いスマホ サーバー化」で検索する方の中には、5台をつなぐ話より、1台をファイル置き場や簡易的なWebサーバー、家の中で常時稼働させる機械として使いたい方も多いはずです。その用途なら、Termuxを1台に入れてSSHでつなぐところまでで十分に成立します(後で説明する段階1がそのまま当てはまります)。ぼくがやりたいのは、そこからさらに5台をつないで1つの計算資源にすることなので、この記事はその先の話になります。1台で十分な方は、段階1までを読めば知りたいことは掴めると思います。

古いスマホ サーバー化の計画で並べた5台のAndroid端末とケーブル

ぼくが思い描いていた「農場」の形

ぼくが思い描いていたのは、こういうことです。スマホって、高性能なCPUと大容量のメモリ、機種によってはグラフィック機能まで持っていますよね。昔Winnyなんかで各パソコンがつながっていたように、余ったリソースを少しずつつなげて1つの計算をこなす仕組みが、自宅でもできないかなと思ったんです。「スーパーコンピュータを作りたい」という規模の話ではなく、あくまでその手法の話です。ここはぼくでもうまく言葉にできず、AIとのやり取りで何度か言い直すことになりました。

最終的に固まった「したいこと」は、次の3つです。

  • 端末どうしが直接やり取りすること(母艦のパソコンが1台ずつ順番に操作する形ではない)
  • 手段はソフトウェアで束ねること(物理的なつなぎ方は土台であって目的ではない)
  • SIMは使わないこと(あくまでハードウェアとしての再利用)

何を計算させるかは、まだ決めていません。「つながって1台として動く」状態を作ること自体が、今回の目的です。

ちなみに、5台をまとめて置くとなると、最初に必要になるのが充電です。ぼくの手持ちの充電器はShell GaN 240W・6ポート(USB-C×4+USB-A×2、合計240W)なので足りそうです。選ぶときに見るべきなのはポート数より合計出力(W数)です。スマホの急速充電は1台あたり18〜30W前後を使うので、5台を同時に満速で充電するなら合計90W以上、余裕を見るなら120W以上のモデルを選んだほうが安心です。ただし、今回のように電源につないだまま常時稼働させる用途では、5台をいつも満速で充電し続ける必要はありません。満タンになったあとは、消費した分を補うだけの電流が流れれば足ります。コンセントが足りない方向けに、5V合計40W級のType-A 6ポート充電器を挙げておきます。満速の急速充電には力不足ですが、常時給電の用途ならこれで十分だと考えています。ただし、計算を回し続けているときの消費は、置いておくだけのときより大きくなります。この充電器は各ポート最大2.4A(1台あたり最大12W前後)なので、40W級で5台の常時稼働をまかなえるかどうかは、段階4で所要時間と発熱を測るときに合わせて確かめるつもりです。

Amazonで探すなら、こちらの6ポートタイプも同じ価格帯で見つかりました。USB充電器 USB-A 6ポート 60W 折りたたみ式プラグ(PC028)もチェックしてみてください。こちらも合計60Wなので満速の同時充電には足りませんが、常時給電の用途なら候補になります。

「スマホ農場」という言葉には、先に注意点を書いておきます

「スマホ農場」を検索すると、良い意味では出てきません。多数のスマホを並べてSIMを差し込み、SNSの操作やSMS認証の突破に使う手口として使われることがあるからです。海外では、この手の大規模な設備が摘発されたという報道も見かけましたが、正直そこまで深くは調べていません。今回の計画は、その形(多数の端末をつなげる)だけを借りて、SIMを挿さないハードウェアの再利用に絞っています。

誤解されたくないので、やらないことをはっきり書いておきます。

  • SIMを挿すこと
  • SMSの送信
  • SNSアカウントの大量作成
  • ぼくが運営しているブログの広告を、この端末から踏むこと

使うのは、ハードウェアとしての古いスマホだけです。この点は、記事の最初にはっきりさせておきたいと思いました。

そもそも、スマホ5台を「1台」にするってどういうこと?

調べていくうちに、実は近い仕組みがすでに存在すると分かりました。ボランティアコンピューティングと呼ばれる技術です。カリフォルニア大学バークレー校が作った共通基盤BOINCの上で、地球外知的生命体探査プロジェクトSETI@homeが動いていました。SETI@homeは1999年に独自の仕組みで始まり、のちにBOINCへ移りました。2020年3月31日に新しいデータの配布を停止しています(Bleeping Computer※英語サイト・自動翻訳推奨)。

同じ基盤で動くFolding@homeは、2020年に新型コロナウイルスの構造解析へ計算資源を振り向け、同年4月には2.4エクサFLOPSという計算能力に達したそうです(TechSpot※英語サイト・自動翻訳推奨、原文は「passing a massive 2.4 ExaFLOPS」)。世界のスーパーコンピュータ上位500台を合わせたよりも大きい数字だった、とも書かれていました!

ただし、ぼくがやりたいこととは仕組みが違いました

ボランティアコンピューティングは、中央のサーバーが計算を細かく切って配り、各端末が別々に解いて結果だけ返す仕組みです。端末どうしは通信しません。だからこそ、遅い回線でも、途中で電源を切られても成立します。

でも、ぼくが求めているのは、端末どうしが直接やり取りして1つの計算を分担する形です。小分けにして別々に解ける問題だけでなく、端末間のやり取りが要る計算にも道を開こうとしている点が、根本的に違います。向く仕事と向かない仕事があるということも、ここで分かりました。細かく分けて各台が別々に解ける計算は台数分速くなりますが、途中経過を頻繁に参照し合う計算(大きなAIモデルの学習など)は、この構成では速くならないと考えています。

なぜ「USBでつなぐだけ」じゃダメなのか

技術的な検討に入ってすぐ、ぼくは「USBでつなげば早いのでは」と考えました。母艦のパソコンが仕事を配って結果を集めるだけならUSB接続で足りて、Wi-Fiは後回しでいいだろう、と。でもこれは考えが浅かったです。端末どうしがやり取りすること自体が今回の狙いなので、母艦とだけつながる形では、初期設定以上の意味がありません。

それに、実際にはUSBで束ねること自体が技術的に難しいと分かりました。

USBという規格そのものが、1対1・主従の構造です

USBは、親(ホスト)1台・子(デバイス)複数という主従構造を前提にした規格で、親になれる機器は1台に限られます。Android端末どうしを直接USBでつなぐ標準的な方法はありません。

ルーターのUSBポートに、子機としてスマホを挿すという案も検討しましたが、これも成立しません。ぼくの家で使っているTP-Link Archer AX73のUSB 3.0ポートについて、公式ユーザーガイドを確認したところ、ガイドが挙げている対応機器はUSB外付けフラッシュドライブとハードディスクの2種類だけでした(TP-Link公式ユーザーガイド Chapter 8 USB Settings※英語サイト・自動翻訳推奨)。スマートフォンを子機として挿す用途は、この章のどこにも出てきませんでした。

192.168.42.129というIPアドレスについて

USBテザリングで母艦に中継させる案も考えましたが、これも複数台では厳しそうです。AndroidのUSBテザリングでは、相手側に割り当てるIPアドレスが192.168.42.129に固定されているという記述を開発者向けの資料で見かけました。ただし、Androidの公式ドキュメントでは確認できていません。このアドレスが接続相手(パソコン側)に割り当てられるものか、Android端末自身のものかもはっきりしませんでした。もしこの記述どおりなら、複数台を同時につないだときに番地が重なってしまうはずです。断定はできませんが、複数台構成では避けたほうが無難だと考えています。

結局、USBの正しい役割は、給電・最初の設定・つながらなくなったときの立て直しにとどまりそうです。成立するつなぎ方は、Wi-Fiか、USB端子に有線LANアダプタを挿してスイッチングハブへつなぐ方法の2つだと考えています。後者は1Gbpsで速いのですが、給電と同時に使うには「給電通過(パススルー)」に対応したアダプタが要り、古いmicroUSB世代の端末では使えません。

Androidでの相性は分かれるようです。Amazonの同種の製品のレビューを読むと、Pixelでイーサネットテザリングと充電を同時に問題なく使えたという声がある一方で、「充電が追いつかない」「通信速度がGigabitの表示ほど出ない」という声も見かけました。ぼく自身はまだ試していないので、断言はできません。PD給電に対応した製品を選ぶ方向けに、実際に価格とレビューを確認した商品を挙げておきます。

MacBookやiPad向けの製品ですが、Amazonのレビュー欄にはAndroidでの使用報告もありました。Belkin USB-C to Gigabit Ethernet + USB-C 60W PD対応 有線LAN変換アダプター(INC001btBK)も参考までにどうぞ。

ちなみに古いパソコンの再利用を考えたことがある方なら、似たような発想の記事も参考になると思います。ぼくは以前、古いパソコン 使い道 windows10|中身を全部特定してみたという記事も書きました。「古い機器をどう第二の人生に使うか」という悩みは、パソコンでもスマホでも根っこが同じだと感じています。

Termuxの入手先と、postmarketOSを今回見送った理由

Androidの中身をLinuxのコマンドで操作するには、Termuxというアプリを使います。root化は不要です。入手先を調べたところ、Termux公式のREADMEには「Google Playでの配布は実験的なブランチにとどまり、機能や不具合の面でF-Droid版に劣る」と書かれていました。そのうえで「F-DroidやGitHub版を使える環境にある利用者は、そちらを使うべきだ」と案内しています(Termux公式README※英語サイト・自動翻訳推奨)。今回はF-Droidから入れる方針にしました。

postmarketOSという選択肢も見ました

スマートフォン向けのLinuxディストリビューション、postmarketOSも候補に挙がりました。技術系ニュースサイトHackadayが紹介していた実例では、Denysさんという方が古いスマートフォン3台にpostmarketOSを入れ、SSHでアクセスできるようにしたうえでKubernetes(正確にはその軽量版のK3s)を動かし、その方が使うサービスを常時稼働させていました。「Raspberry Piを買うより安く済むかもしれない」という指摘も添えられています(Hackaday※英語サイト・自動翻訳推奨)。

ただ、この方法には機種ごとのブートローダーのロック解除が必要です。日本のキャリアで買った端末は解除できないものが多いと言われていますが、ぼくが調べた範囲では、はっきり書いてある資料が見つかりませんでした。実際に組んでみないと分からない部分でもあるので、今回はロック解除が要らず、Wi-Fiも最初から使えるAndroidのままで進めることにしました。postmarketOSは、必要になったら次の候補として考えます。

スマホ特有の壁

「古いスマホ サーバー化」で検索する方がいちばん知りたいのは、たぶん理屈の話より「で、実際どこまで使えるの?」だと思います。ここまで仕組みの話を続けてきましたが、調べる中で見えてきたスマホならではの制約を、先に正直に書いておきます。

持続性能が出ない(放熱の壁)

スマホはパソコンのような大きなヒートシンクやファンを持たないので、負荷をかけ続けると発熱を検知して数分で処理速度を落とす仕組みが入っています。短時間のベンチマークで高い数値が出ても、数十分単位で回し続ける計算で同じ数値のまま走り続けるとは考えにくいです。段階4で「所要時間と発熱を記録する」としているのは、この持続性能の落ち方を実際に見たいからです。

それと関連して、置き場所と発熱対策も先に考えておこうと思います。狙いは背面から風を当てて熱をこもらせないことなので、置き場所は5台の背面側、風がラック全体を横に通り抜ける位置がよさそうです。真上から風を当てるより、横から通り抜けさせたほうが熱がこもりにくいのではと考えています。サーキュレーターは手持ちのものがあるので、まずはそれで試します。これから用意する方は、24時間近く動かし続ける機械のそばに置くものなので、風量より静音性で選ぶのがよさそうです。棚の縁にクリップで留められるタイプなら、置き場所を取らずに風向きも調整しやすそうです。

Androidがバックグラウンドのプロセスを止めにくる

Androidは電池を節約するため、画面を消したり他のアプリに切り替えたりすると、バックグラウンドで動いているプロセスを止めにかかります。Termuxで立てたSSHサーバーも例外ではなく、放っておくと落とされる可能性があります。対処として、Termuxにはtermux-wake-lockというコマンドが用意されていて、実行するとAndroidに「このプロセスは止めないでほしい」と伝えられます。段階1の手順にこれを含めているのはこのためです。

グラフィック機能は機種ごとにバラバラ

スマホにもグラフィック機能(GPU)は載っていますが、パソコンのNVIDIA製GPUのような、どの機種でも共通して使えるCUDAに当たる土台がありません。メーカーやチップセットごとに実装が違うので、「5台まとめてGPUも使う」という話は、CPUをつなぐ話ほど単純ではなさそうです。今回はまずCPUとメモリをつなぐところから始め、GPUの活用は先の課題として置いておくことにしました。

進め方は5段階です

ここからは、実際にAIと一緒に組んだ計画書の中身です。実機で組み立てたわけではないので断言はできませんが、この構成なら大丈夫なはずです。段階を追って進める予定で、まだどの段階にも着手していません。

段階 やること 合格ライン
段階0手持ちの端末を確かめる(機種名・Androidのバージョン・端子の種類。膨らんだ電池は使わない)機種名・バージョン・端子の種類が5台分そろっている
段階11台に足場を作る(F-DroidからTermux・openssh・sshd・termux-wake-lockを入れ、母艦からSSH接続する)母艦のパソコンの画面から、スマホの中でコマンドが打てて返事が返る
段階25台に増やす(固定IP・鍵ログイン・GNU parallelで全台へ同時にコマンドを送る)1つのコマンドで5台から返事が返り、かつ端末どうしのpingが通る
段階3束ねる(OpenMPIを全台に入れる。動かなければGNU parallelに切り替える)1つの命令から、5台がそれぞれの名前を名乗る
段階4測る(1→2→3→5台で所要時間と発熱を記録する)台数と所要時間の表ができる(速くならなくても、原因が分かれば成果とする)

段階1では、実際にTermuxでこんなコマンドを打つ予定です。

  • pkg update && pkg upgrade
  • pkg install openssh
  • passwd(パスワードを決める)
  • whoami(利用者名を控える)
  • sshd(受け付け開始。ポートは8022)
  • termux-wake-lock(画面を消してもAndroidに止められないようにする)

「no hostkeys available」と出たら、ssh-keygen -Aを打ってからsshdをやり直すとよさそうです。段階3は、正直いちばん不安があります。TermuxのOpenMPIは追加のリポジトリにあり、動かなかったという報告も見かけました。ここで詰まったら、GNU parallelに切り替えるつもりです。その場合、「5台で1つの仕事を分担する」状態は作れますが、端末どうしのやり取りが母艦経由になり、最初に狙っていた形からは少し後退します。

古いスマホ サーバー化に用意するもの

まず0円で試す案

費用をかけるかどうかは、まだ決めていません。母艦のパソコンのモバイルホットスポット機能で0円から始めて、端末どうしの通信がうまくいかなければ、専用のWi-Fiルーターを1台買う案に切り替えるつもりです。

区分 中身 費用
手持ちで足りるもの母艦のパソコン、USB充電器、充電ケーブル(台数分)0円
案A-1(まず試す)母艦のパソコンのモバイルホットスポット機能で農場用の電波を作る。端末どうしが直接通信できるかは段階2で確かめる0円
案A-2(駄目だったとき)農場専用のWi-Fiルーターを1台買い、家のネット機器の空いている有線ポートに挿す数千円〜1万円程度(未確定)
あると助かるもの端末を立てて並べる台、発熱対策の小型サーキュレーター手持ちで代用できる見込み

駄目だったときの案

案A-2を選ぶことになった場合の参考に、有線LANポートを備えたエントリークラスのWi-Fiルーターの実勢価格を調べました。

Amazonでは、レビュー2万件を超える同じシリーズの機種も見つかりました。バッファロー Wi-Fi 5 ルーター WSR-1166DHPL2/N(866+300Mbps)も候補になりそうです。型番が違うので同一の製品ではありませんが、同じシリーズのエントリー機です。

家のネットワークについても触れておきます。ぼくの家はNURO光の機器にTP-Link Archer AX73をブリッジ接続していて、家の機器は基本的にこちらにつないでいます。今回の農場用ネットワークは、更新の止まった古い端末を家の他の機器と同居させないため、あえて分ける方針です。このルーターを選んだ経緯は、以前こちらの記事にも書きました。

TP-Link ルーター 危険性を自宅で調べてみた|証拠はないが警戒すべき理由があった
「TP-Link ルーター 危険性」を、自宅でTP-Link製ルーターを使う立場から調べました。バックドアが実際に見つかったのは別会社ですが、TP-Linkにはテキサス州の提訴やFCCの措置など別の懸念が向けられています。証拠が無いことと警戒すべき理由があることは別軸だと考えを整理した記録です。
Wi-Fiルーターと、棚に立てて並べた古いスマホ4台。古いスマホ サーバー化の準備

並べる場所と発熱対策

5台を並べて立てる場所も必要です。ぼくは手持ちのラックでまず試しますが、これから用意する方向けに、画像のような収納ラックの価格とレビューを確認しました。見るポイントは2つあると考えています。ケースを付けたままの厚みがある端末でも溝に収まるかどうかと、今回は5台でも台数が増えたときに連結して増設できるかどうかです。この商品は10台まで収納できて連結もできるタイプなので、あとで台数が増えても対応できそうです。

発熱対策については、上の「スマホ特有の壁」で書いたとおり、背面から風を通すサーキュレーターも合わせて使います。こちらも手持ちのもので試します。

ちなみに、古い機器を家庭内で使い続けるかどうかを考える機会が増えている方には、Synology NAS 比較表|12万円以下の全9機種も参考になると思います。こちらは買い替えの話ですが、「古い機器の寿命をどう考えるか」という軸は今回の計画にも通じるところがありました。

まとめ

今回の記事は、「スマホ農場って知ってる?」という思いつきから、古いスマホ サーバー化の計画書ができるまでの記録です。要点を整理します。

  • 目的は、家に眠る古いAndroid5台をWi-Fiでつなぎ、端末どうしが直接やり取りする形で1台の大きなコンピュータとして働かせること
  • SIMは使わず、SNSの操作やSMS送信、アカウントの大量作成もしません。ハードウェアの再利用に絞っています
  • USBだけでは束ねられません。成立するのはWi-Fiか、給電通過対応のUSB-C有線LANアダプタを使う方法の2つです
  • Folding@homeは2020年4月に2.4エクサFLOPSに達しましたが、これは「端末どうしが通信しない」仕組みで、今回やりたいこととは違います
  • SETI@homeは2020年3月31日に新しいデータの配布を停止しています
  • Androidのまま、TermuxをF-Droidから入れて進めます。postmarketOSは今回見送り、必要になったら次の候補にします
  • 進め方は5段階です。まだどの段階にも着手していません

次は実際に段階0から手を動かして、5台が本当につながるところまでやってみるつもりです。うまくいったところも、つまずいたところも、続報で正直に書きます。

コメント

タイトルとURLをコピーしました