【完全解説】PiKVM v2(自作KVM over IP) どこよりもわかりやすい構築方法【超初心者向け】

コンピュータ
あざらし
あざらし

今回はPiKVMを構築する手順についてまとめました。

そもそも何で構築しようと思ったかというと、iPhoneをリモートで操作したかったからなんですが、サクッとしらべたら日本人の人も構築している記事を見つけたので参照しながら自分でも構築したんですが。。。細かなところでつまずいてしまってしょうがないから公式の英文の方を見に行きましたw

なんでか知らないですが、ブログで公表している人って詳しく手順をかいてくれていないんですよね。。もう少しいろいろと細かなところを教えてほしいのに!

ということで、今回は初心者でもわかるようにできるだけ細かく書いていきたいと思います!
※ここがわからない!ってことがあればコメントに記載してください!随時更新していきますので!協力をおねがいします!!!!

PiKVM v2 基本設計的なやつ

あざらし
あざらし

PiKVMにはv0 〜v3のバージョンがあり最新版ではPiKVMではラズベリーパイ4以外にもパーツが必要になりますので、今回はPiKVM v2を選択します!

要件

1.ローカルネットワーク上からならどこからでも操作可能にする。

2.操作する端末はネットワークに接続されていなくても操作可能にする。

3.iPhoneやiPadも操作できるようにする。

初めはこの程度の要件からスタートしましょう!

構成図

PiKVMのビデオキャプチャー方法には2種類あります。
1つに「USB式のVideoCapture」を使用する方法ともう一つに「CSI式のHDMIコネクタ」を使用する方法があります。

どちらの形式でも問題なく構築することができるのは確認済みですが、公式ではCSI式のHDMIコネクタを推奨しているようです。

ですが今回は「USB式のVideoCapture」の方式で行きたいと思います。
その理由は単純に物が安いからですw(1000円未満)

CSIのはそこまで高くはないですが(4000円弱)他のパーツ類の値段と合わせるとそれなりになりますので今回はできるだけ安い方法で進めたいと思います。
(実験のためにどちらも買ったのは内緒)

■構成図

※USBタイプもCSIタイプも下イメージで言うところの接続方法は変わりませんので参考までに。

本体外にもこまかなパーツが必要になりますのでその点が面倒ですね。

必要機材

※必要機材は可能な限り安いものにします。

1.Raspberry Pi 4 1台(SDカードや電源用USB付き)
※単体で購入する場合はSDカードや電源ケーブル購入してください

2.[USB HDMI キャプチャー] OR [Hdmi to CSI-2 ]

OR(どちらか)

3.i-Phone HDMI USB変換アダプター

4.2in1 タイプCイヤホン変換ケーブル Type-CイヤホンジャックUSB

5.USB Type-C to Type-A ケーブル (OTG対応)
※2本あると後々便利

6.HDMIケーブル

構築手順

では早速構築スタート!

1.PiKVMのOSをダウンロード

PiKVM / Download - Open and inexpensive DIY IP-KVM on Raspberry Pi
PiKVM an easy and inexpensive DIY IP-KVM on Raspberry Pi to control remote machines: Full HD, mouse, Mass Storage Drive, VNC, IPMI and much more out of the box....

サイトに飛んだらOSのダウンロードをしますが、構成によっては使用するOSが違うことに注意

*For HDMI-to-CSI bridge: v2-hdmi-rpi4-latest.img.xz
 CSIを使用する場合にはこちらのOSをダウンロードする
*For HDMI-to-USB dongle: v2-hdmiusb-rpi4-latest.img.xz
 USB式HDMIキャプチャを使用する場合にはこちらのOSをダウンロードする
 ↑今回はこちらをクリック!

2.OSをSDカードに書き込む方法

※Linuxを用いて書き込む方法もありますがより簡単に書き込める方法を紹介します。
 Linuxでの書き込みを知りたい人は以下公式より「Using Linux CLI」項目を参照ください。

Flashing PiKVM OS image - PiKVM Handbook
Open and cheap DIY IP-KVM on Raspberry Pi

2-1.RPi Imager ダウンロード(Linux, MacOS and WindowsどれでもOK)
以下のサイトより最新バージョンのImage(imager-*.*.*.exe)rをダウンロードし、インストールします。

Releases · raspberrypi/rpi-imager
The home of Raspberry Pi Imager, a user-friendly tool for creating bootable media for Raspberry Pi devices. - raspberrypi/rpi-imager

2-2.[CHOOSE OS]をクリックするとプルダウンが表示されますので、一番下まですくろーして[Use custom]をクリックしてください。

2-3.クリックした後、イメージファイル(.img.xz)or (.img)を選択したら[Open]をクリックします。

2-4.SDカードをPCのカードリーダーに挿入します。「CHOOSE STORAGE」をクリックしますリストからSDカードを選択します。
※1.注意:この時できるだけ余計なデバイスはつけないようにしましょう。
※2.SDを後付けすると反応しない場合がありますのでImagerを再起動してください。

2-5.SDカードを選んだら、WRITEボタンを押します。POPアップがでますのでYESをクリックします。

2-6.プロセスが終了するのを待ちます。(15分から20分かかりますのでコーヒーでも飲んで待ちます。)
※99%付近で止まる場合がありますが置いておけば完了するので我慢!

2-7.正常に完了したら[CONTINUE]をクリックして、メモリーカードを取り外します。

以上となります。

あとはSDカードを取り外してRPiにセットしてください。

3.ちなみに・・SDカードを初期化するには

3.1. [CHOOSE OS] →[Erase]を選択してください。

3‐2. 「CHOOSE STORAGE」 から初期化するSDカードを選択してください。

3-3.[WRITE]をクリックしたら確認画面がでますのでYESをクリックして初期化完了です。

[CONTINUE]をクリックして画面を閉じましょう。


機器の接続手順

接続する順番はありませんがいくつか注意がありますので念のため下記の順に接続しましょう!

1. [ i-Phone HDMI USB変換アダプター ] に対して3種類のケーブルを挿します。

以下の写真のようにそれぞれのケーブルを刺します。
・[HDMIケーブル]
・[USB Type-C to Type-A ケーブル(A側を刺す)]
・[iPhone充電ケーブル]
※この後すぐにiPhone本体にはこれを刺さないでください!!(重要)

2. [USB HDMI キャプチャー] にHDMIケーブルを接続します。

次に、HDMIケーブルの末端に [USB HDMI キャプチャー] を挿します。

3.[ 2in1 タイプCイヤホン変換ケーブル Type-CイヤホンジャックUSB ] に[Type-C to Type-A]ケーブルのType-C 側をコネクタに挿します。

この時に⚡マークがついてない方につけてください。
⚡マーク側にはラズベリーパイの給電ケーブルが刺さります。

4. [ 2in1 タイプCイヤホン変換ケーブル Type-CイヤホンジャックUSB ]と [USB HDMI キャプチャー] をラズベリーパイに挿します。

※この時に、ラズベリーパイ本体にどこからも電気が通っていないことを確認してください。特にiPhoneから給電されてしまうような接続状態になっていると危険です。(手順通りなら問題なし)

[USB HDMI キャプチャー]を使用している場合に差し込み口に注意!

ラズベリーパイ本体のUSB2.0側の下のポートにのみに差し込んでください。
それ以外に入れてもキャプチャーが機能しません。

5.[ 2in1 タイプCイヤホン変換ケーブル Type-CイヤホンジャックUSB ]に[電源ケーブル] を挿します。

可能であればコンセント側かケーブル事態にスイッチ機能がついているものにしてください。
急に給電されると故障の原因にもなります。

接続を確認したら、(コンセント側⇒ケーブル側の順で)電源をONにしてください。

6.(必ず最後!)iPhoneやiPadを接続します。

先に接続してしまうとラズベリーパイが起動してしまうことがあります(必ずではない)、
電源の供給先がiPhoneになってしまって、通常の電源供給源からながれなくなります。
この状態でiPhoneを抜くとラズベリーパイが強制で落ちます。場合によっては壊れる可能性があるのでかならずiPhoneは最後に接続しましょう。

ラズベリーパイが起動したことを確認したのちにiPhoneやiPadなどと接続しましょう。
※一応、ラズベリーパイが起動していなくとも大丈夫であることも確認しているが、念には念を入れるのが安全!

以上ここまでが接続の手順になりますが最後にもう一つ。
ラズベリーパイの起動後にLANケーブルを刺してあげるとDHCPサーバーからIPが自動的に払い出しされますので、IPアドレスの確認方法は直接ラズベリーパイをモニターに接続して確認するか、ルーターから情報を確認するかして、割り当てられたIPアドレスが何かを確認してください。

使用手順

前提条件:
ラズベリーパイと同一のネットワークにいること。(別のネットワークでもルーティングをしっかりしてればOK)
ラズベリーパイがLANケーブルが刺さっていること。

?先に要チェック! ?

iPhoneやiPadをマウス操作する場合にデフォルトの設定ではカーソルが正常に機能しません。/etc/kvmd/override.yamlのファイルを編集する必要があります。

#root権限に変更
su -
#書込モードに変更 !!このタイミングで電源おちたらOSこわれます!!
rw
#nanoエディタでファイルを編集
nano /etc/kvmd/override.yaml

以下の「## ここから ##」「## ここまで ##」を除いた箇所をコピーしてoverride.yamlの末尾に追加します。
※nanoエディタの使い方はここでは説明を省きます。

## ここから ##
kvmd:
    hid:
        mouse:
            absolute: false
            horizontal_wheel: false
## ここまで ##
# 読み込みモードに変更する
ro
#OS再起動する
reboot

yamlファイルの記載方法には注意点は2つあります。

*1つ目*「同じグループは2つ作らない」
間違い:

kvmd:
    gpio:
        drivers: …
kvmd: ←上に同じグループがある
    gpio: ←上に同じグループがある
        scheme: …

正しい:

kvmd:
    gpio:
        drivers: …
        scheme: …

*2つ目*「スペースは半角スペース4つ分にする」

kvmd:
____gpio:
________drivers: …
________scheme: …

これを守らないと意図した動作にならないことがあるので要注意

■ブラウザでの使用方法(KVMの使い方)

1.ラズベリーパイと同一ネットワークにあるPCより、ブラウザを立ち上げ[https://IPアドレス]に接続する。

ログイン画面がでますので[Username:admin / Password:admin]でログインする
※これは初期パスワードです。

2.使用するアプリケーションを選択します。

[KVM]を選択してください。

3.操作画面が表示されることを確認します。

※ここではPCやiPhoneなどを接続していないので画面は表示されません。

正しく、パーツが接続されていればここで画面中央にモニターが表示されます。
表示されない場合は一度ケーブルなどの接続を確認してください。

4.もし、それでも表示しない場合は[System]を開いて[Reset Stream]をクリックしてください。

[Reset Stream] は画面の表示をリセットするボタンです。
[Reset HID]はマウス・キーボードの操作をリセットするボタンです。

動作がおかしいなと思ったら使用してみください。

■ブラウザでの使用方法(Terminalの使い方)

コマンドで直接ラズベリーパイの編集をしたい場合には次の手順で操作できます。
※最低限Linuxをコマンド操作できる方のみ使用してください。

1.[Terminal]をクリックしてください。

2.CLI画面に切り替わります。

現在のユーザーでは特別な操作はできませんのでrootユーザーへ昇格させます。

3.[su -]コマンドでrootへと昇格させます。
初期[password:root]になっています。

あとは自分の好きな設定に変更することができます。

注意点まとめ

[USB HDMI キャプチャー]を使用している場合に差し込み口に注意!

ラズベリーパイ本体のUSB2.0側の下のポートにのみに差し込んでください。
それ以外に入れてもキャプチャーが機能しません。

iPhoneやiPadをマウス操作する場合にデフォルトの設定ではカーソルが正常に機能しません。/etc/kvmd/override.yamlのファイルを編集する必要があります。

#root権限に変更
su -
#書込モードに変更 !!このタイミングで電源おちたらOSこわれます!!
rw
#nanoエディタでファイルを編集
nano /etc/kvmd/override.yaml

以下の「## ここから ##」「## ここまで ##」を除いた箇所をコピーしてoverride.yamlの末尾に追加します。
※nanoエディタの使い方はここでは説明を省きます。

## ここから ##
kvmd:
    hid:
        mouse:
            absolute: false
            horizontal_wheel: false
## ここまで ##
# 読み込みモードに変更する
ro
#OS再起動する
reboot

yamlファイルの記載方法には注意点は2つあります。

*1つ目*「同じグループは2つ作らない」
間違い:

kvmd:
    gpio:
        drivers: …
kvmd: ←上に同じグループがある
    gpio: ←上に同じグループがある
        scheme: …

正しい:

kvmd:
    gpio:
        drivers: …
        scheme: …

*2つ目*「スペースは半角スペース4つ分にする」

kvmd:
____gpio:
________drivers: …
________scheme: …

これを守らないと意図した動作にならないことがあるので要注意

応用編

ここまでの手順で構築したPiKVMでは接続先の端末が1台までにかぎります。
次回の応用編では[PiKVM to 複数の接続先]の構成で構築する方法を説明したいと思います。

ちなみに追加で必要な機材は以下の通り。

注意事項としては接続できるMAX数は4台までに限るそう。
機能限界というやつですね!

それでも1対1でしか接続できないよりはましですし、高価な市販のKVM Over IPを買うよりも安く作れるのは間違いないですね!

PiKVMでできないこと(2022年)

・アカウントごとにGUIなど機能を制限する。
・EzCooを使用しても最大4台までしか管理できない。
・古すぎるアイフォンの場合は動作が不安定

最後に

あざらし
あざらし

この記事が参考になったら、コメントをいただけると喜びます。

「参考になった」や「この場所がわかりずらい」でもいいのでコメントいただけると励みになります。

コメント

  1. Akira より:

    分かりやすい説明で、PiKVM v2を無事作ることができました!
    ありがとうございました!

    仕事場に設置して使うために作ったのですが、常時ファンが稼働していても大丈夫なのでしょうか。
    PWM制御のファンなどでファンを温度でオンオフ出来るのでしょうか。
    もし良かったら教えて頂けないでしょうか。
    よろしくお願いいたします

    • あざらし より:

      コメントありがとうございます!

      わかりやすい説明とおっしゃっていただき嬉しくお思います。
      私もこの辺りは死ぬほど調べてやっと動かしたしすてむでもあるので。。。

      FANを温度でON/OFFについては可能です。
      ただし、ラズパイのちょっとした知識とプログラムの制御が必要だったと思います。

      以下の方が参考になりそうです。
      https://yokahiyori.com/raspberry-pi-cm4_cooling/

      どうぞよろしくお願いします。

  2. Akira より:

    [追記]
    PiKVM v2にはVPNサービスをインストールして遠隔で出来るようにしています。

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