ソフトウェア

1万円以内でPCをOS起動前から遠隔操作できるシステムを構築する方法


コンピューターの低レベルな遠隔操作を可能にするソフトウェアとしてはIPMIIntel AMTなどがありますが、そうした機能を搭載したハードウェアは高価になりがちです。ソフトウェアエンジニアのMichael Lynch氏は、Raspberry Piを用いて100ドル(約1万500円)以下でコンピューターの遠隔操作を実現する方法を開発し、その詳細やソフトウェアを公開しています。

TinyPilot: Build a KVM Over IP for Under $100 · mtlynch.io
https://mtlynch.io/tinypilot/

Lynch氏は自宅にソフトウェアテスト用のサーバーを設置していますが、時折作業を失敗してネットワークを遮断してしまったり、サーバーが起動しなくなったりするとのこと。普段はSSHでサーバーを操作しており、キーボードやマウス、モニターを接続していないため、障害が起こるたびに配線をやり直さなければならないとLynch氏は語っています。

Lynch氏は遠隔操作を可能にする方法としてiDRACKVM over IPデバイスの購入を検討しましたが、いずれも導入に数万円の費用がかかってしまうため断念。1万円以下で購入できるRaspberry Piを使用してKVM over IPデバイスを自作することにしたとのこと。


Lynch氏は遠隔操作に必要な「コンピューターが出力する画面のキャプチャ」を行う方法として、はじめに「LKV373」というHDMIエクステンダーの使用を検討しました。

Amazon | HDMIエクステンダー Receiver for 100m LKV373 Extender LYSB01H03VE40-CMPTRACCS | AGPTEK | 映像編集機


LKV373はリバースエンジニアリングによってHDMI信号の傍聴が可能となっており、信号をffmpegで扱えるようにするパッチも公開されています。これらのデバイスとソフトウェアを使って、Lynch氏はノートPCの画面をWindows上で表示させることに成功。


しかし、この方法ではffmpegのフラグを調整しても遅延を800ミリ秒から短縮することができなかったとのこと。


Lynch氏は次の方法として、HDMIをUSBに変換する以下のようなドングルの使用を検討。

Amazon.com: HDMI USB Video Audio Capture Card HD 1080P Video Record via DSLR,Camcorder,Action Cam for High Definition Acquisition, Live Broadcasting, Live Streaming (Black): Computers & Accessories


HDMIエクステンダーと比較してコンパクトであり、ケーブルを減らすことができましたが……


遅延が7秒~10秒と、HDMIエクステンダーを使用した場合よりも遅延が大きくなってしまったとのこと。Lynch氏がUSBドングルによるキャプチャ方法の参考としたツイートでは、遅延が20ミリ秒と報告されているので、ffmpegのチューニングが必要だとLynch氏。


次に、Lynch氏がffmpegの代わりにµStreamerというソフトウェアを使って画面のキャプチャを試してみると、USBドングルを使った場合の遅延が500ミリ秒まで大幅に改善。µStreamerはMotion JPEG形式でムービーをブラウザ上に表示するソフトウェアで、Raspberry PiによるKVM開発を行うPi-KVMプロジェクトにおいて、Maxim Devaev氏がC言語で記述した独自のエンコーダを搭載しており、Raspberry Piに最適化されているとLynch氏。


Lynch氏がuStreamerの開発者であるDevaev氏にさらなるパフォーマンス改善の相談をすると、USBドングル自体がMotion JPEGによるストリーミングを行っていることが判明。µStreamerによる再エンコーディングを行わず、コンピューターからのストリームをそのままパススルーすると、遅延を200ミリ秒まで短縮することに成功したとのこと。


Lynch氏は独自にブラウザ上から遠隔ホストのキーボード操作を行えるインターフェースを開発していましたが、そのインターフェースを画面出力と統合した「TinyPilot」を開発。TinyPilotを使うと、コンピューターの画面操作やキーボード入力を遠隔で行うことが可能になります。



TinyPilotによる遠隔操作を行うために必須の要素として、以下のハードウェアが要求されています。

・Raspberry Pi 4
・USB-C/USB-A変換ケーブル
・HDMI/USBキャプチャドングル
・microSDカード(Class10、8GB以上)
・HDMIケーブル


まずはRaspberry Pi OSをmicroSDにインストール。Lynch氏はインストールにRufusを使用しています。


続いて遠隔操作したいコンピューターとRaspberry PiをUSB-C/USB-A変換ケーブルで接続。このケーブルを経由してキーボードやマウスの信号をコンピューターに送信します。


続いてドングルをRaspberry Piに接続し、ドングルからHDMIケーブルをコンピューターに接続。


Raspberry Pi OSを起動し、下記コマンドを実行。このコマンドだけでセットアップがすべて完了するよう、Ansibleによる自動インストールが行われると説明されています。

curl -sS https://raw.githubusercontent.com/mtlynch/tinypilot/master/quick-install \
  | bash -
sudo reboot


ローカルネットワーク上の「http://raspberrypi/」にアクセスすると、TinyPilotの画面が表示され、コンピューターを遠隔操作することが可能になるとのこと。


なお、TinyPilotによる遠隔操作に必要なハードウェアがすべて含まれ、ソフトウェアのセットアップまで完了しているツールセットも販売されています。

Order | TinyPilot
https://tinypilotkvm.com/order/

この記事のタイトルとURLをコピーする

・関連記事
ATX規格でUSBピンから各種情報を取得できる冗長電源「FSP Twins 700W」レビュー - GIGAZINE

電源がオフでもOSが起動していなくてもPCを遠隔操作できる「IPMI」を使ってみた - GIGAZINE

MicrosoftのLinux向け無料プロセス監視ツール「ProcMon」レビュー、システムコールごとの実行時間などを確認可能 - GIGAZINE

ディストリビューション層で使えてSDカードに設定をバックアップできるスイッチ「Apresia13200-48X-PSR」を手に入れたのでちょっと使ってみた - GIGAZINE

in ソフトウェア,   ウェブアプリ,   ハードウェア, Posted by darkhorse_log

You can read the machine translated English article here.