Hyper-VのゲストOSにUSBデバイスサーバ経由でUSBカメラを接続しLiveCapture3+スマートサーブで外出先から自宅リビングを監視する
「Hyper-VのゲストOSでUSBデバイスを使用」でインターネットを検索すると、ほとんどがリモートデスクトップ接続でRemoteFXを利用する方法が表示される。
今回の目的は、LiveCaputure3 からWeb配信されるUSBカメラの映像を、外出先からモバイル機器(SHARP SH-08E)のブラウザで見ることだ。スマートサーブを利用して自宅LANにVPN接続するので、リモートデスクトップ+RemoteFXで物理PCのUSBデバイスを仮想PCにリダイレクトできないか調べたが、以下の理由で不可である。
- 仮想マシンのOSがWindows 8.1 Pro なので、リモートデスクトップ接続によるRemoteFXで、物理PCに接続されたUSBカメラを仮想マシンへリダイレクトできない。
- 物理PCに接続されたUSBカメラを仮想PCへリダイレクトして、外出先からモバイル機器などで、仮想PCにリダイレクトされたUSBカメラの映像を見るには、モバイル機器から物理PCにリモートデスクトップ接続し、その上で Hyper-V マネージャから仮想マシン(管理者モードコマンドプロンプトからvmconnect.exeでもOK)接続しなければならない。
- 物理PCのOSはWindows 8.1 Pro なので、嫁と私とで物理PCに対し、同時にリモートデスクトップ接続できない。
- リモートデスクトップでカメラの映像を見ると、パケットが膨大になってしまい、7GBのパケ放題では到底足りない。
そこで、USBデバイスサーバを導入することにした。USBデバイスサーバは、USB機器をLAN経由で接続するための中継器みたいなもの。USBデバイスサーバに接続されたUSBカメラをHyper-V 上の仮想PCに接続しようというわけだ。そして仮想マシン上の LiveCapture3 の配信機能で、モバイルのブラウザからカメラ映像を見ようというわけだ。
USBデバイスサーバは有線でも無線でもLANに接続できる。USBデバイスサーバに接続されたUSB機器を利用する仮想マシンには、専用の接続アプリをインストールし実行する。すると、あたかもUSB端子に接続されたUSB機器と同様に利用することが可能になる。
なお、仮想PCに RemoteFX を利用した仮想PC接続で、物理PCに接続されたUSBカメラの利用方法を記事の最後に記述した。
要件
- 外出先から私と嫁が自宅の監視カメラ映像を閲覧できること。
※自宅にグローバルIPなし、モバイル端末はSH-08E、docomo LTE回線を使用。 - 動体検知時は自動で録画し、かつ検知時に撮影した写真を添付したメールを私と嫁に自動送信すること。
- 私と嫁以外は監視カメラの映像を見ることを相当困難にすること。
- 監視カメラソフトをインストールしたパソコンはルータのIPフィルタリングにより、TCP:587を除き LAN→Internet を禁止する。
- 月例Windows Updtateの適用時、緊急パッチの適用時のみ、ルータのIPフィルタを手動で解除する運用とする。
- IPカメラは ルータのIPフィルタリングにより、すべてのプロトコルについて LAN→Internet を遮断する。
実現イメージ
- Hyper-Vの仮想PCにLiveCapture3をインストールし、カメラ映像を配信する。
- Hyper-Vの仮想PCに SX-Virtual Link をインストールし、USBデバイスサーバに接続されたUSBカメラが、あたかもUSBケーブルで仮想PCにつながれているかのようにする。
- USBデバイスサーバは無線でLANに接続するので、USBカメラの設置位置の自由度が増す。
- 外出先からスマートサーブにより自宅LANにVPN接続し、LiveCapture3 から配信される映像をモバイル機器等から確認する。
- LiveCapture3の動体検知機能により、動きを感知したら、感知した瞬間の写真を添付したメールを私と嫁に送信する。
監視カメラソフト LiveCapture3 の自動起動
LiveCapture3 をインストールした仮想マシン起動をトリガーにして、仮想マシンへ監視用一般ユーザアカウントで自動ログインし、LiveCapture3 をスタートアップで自動起動させ、自動配信するようにする。
LiveCapture3をインストールした仮想マシンの起動
監視したい日は物理PCの電源をONにしてから出かける。ログオンの必要はなし。
もし、物理電源を入れ忘れたら、VPN接続して、無線LAN親機から Wake On Lan すればよい。
ただし、仮想マシン起動スケジュール開始時刻が過ぎていた場合は、手動で仮想マシンを起動する必要がある。
監視対象の日、監視開始時間に、物理PCから仮想マシンを自動で起動するようにスケジュールする。
仮想マシンの自動起動には PowerShell を使用する。ただし、PowerShellスクリプトをバッチ形式で実行するには、スクリプト実行ポリシーを変更する必要があるので、コマンドから呼び出す方式にする。
管理者として実行する必要があるので、「最上位の特権で実行する」にチェックを入れる。
毎週水曜日、木曜日、金曜日の6:40に仮想マシンを自動起動する。
StartVCAMTEST.cmd
powershell.exe -command "Start-VM -Name vCAMTEST"
仮想マシンへの自動ログオン
LiveCapture3 はサービスとして起動できないので、監視カメラ用一般ユーザアカウントで自動ログオンするようにする。
仮想PC起動後に監視カメラ用一般ユーザアカウントで自動ログインさせる。
監視カメラ用一般ユーザアカウント(上の方)を選んで、「ユーザがこのコンピュータを使うには、ユーザー名とパスワードが必要」のチェックを外す。
監視カメラ用一般ユーザアカウントのパスワードを入力する。
自動ログオン時にLiveCapture3を自動起動する
スタートアップにLiveCapture3のショートカットを登録する。
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
セキュリティ
VPN接続とはいえ、インターネット経由で自宅リビングを外出先から見れるようにするのだから、最低限のセキュリティを確保したい。守るべき対象はリアルタイム配信映像と録画映像とメールに添付される動体検知時の写真。脅威は他者の閲覧や意図しない宛先への配信。
- ルータ(無線LAN親機)のIPフィルタを使用し、LiveCapture3をインストールした仮想PCはTCP:587を除き、LAN→Internetを遮断する。TCP:587はメール送信でインターネット接続が必要になるので遮断しない。
LiveCapture3 をインストールした仮想パソコンのhttp接続などは遮断される。
- 仮想PC起動時に自動で配信・監視される。動体検知時に、検知時の写真は、非暗号化メールに添付して送付されるので、間違っても私と嫁が在宅の場合は配信されないように注意が必要。よって、物理PC起動時に、LiveCapture3 がインストールされた仮想マシンは自動的で起動しないようにする。
- IPカメラはインターネット配信不要なので、すべてのプロトコルについてLAN→Internetを遮断する。
- 仮想PCは監視カメラ専用で利用し、起動と同時に自動ログオン及び監視が開始されるので、意図しない監視映像配信・監視を防止するため、配信・監視が必要な終了時間(8:00と19:00)を過ぎたら、タスクスケジューラで仮想マシンを自動シャットダウンするようにする。
- インターネットを利用して外出先から自宅LAN内の監視カメラ映像をみるので、VPN接続により自宅LANに接続する。
お品書き
USBデバイスサーバ Silex SX-DS-3000WAN
USBポートは2つ。5Ghzの無線LANに対応しているので、ルンバ780のヴァーチャルウォールにも優しい。
USBカメラ iBUFFALO USBカメラ BSW20KM11BK
監視カメラソフト LiveCapture 3
以下より入手する。
監視カメラソフト
http://www2.wisnet.ne.jp/~daddy/LC3/lc3top.html からダウンロード
USBカメラがUSB1.1接続をサポートしていないので失敗し、この計画終了
Silexのサポートに問い合わせたところ
WEBカメラのような、映像・音響機器ですと、USB通信にアイソクロナス転送が利用されます。データ転送保証が行われる通信です。ただ、本製品は、アイソクロナス転送モードに対応しておりますが、アイソクロナス転送でも速度の遅いUSBのFull-Speed(USB1.1)での認識のみの対応です。おそらくWEBカメラ等は速度の速いHi-Speed(USB2.0)でのアイソクロナス転送が必要となりますので、認識しない、もしくは認識しても正常動作しないといった動作になる
可能性が考えられます。さらに、本製品は、Hyper-V等の仮想環境においても
残念ながら、動作保証外となり、弊社では動作検証を
行っておりません。ご了承ください。
と素早い回答をしてもらえた。
USBデバイスサーバ Silex SX-DS-3000WAN は、USB1.1接続のみのUSBカメラしかサポートしていないとのことだ。iBUFFALO USBカメラ「BSW20KM11BK」はUSB2.0接続を必須とする。Hyper-VのゲストOSからUSBデバイスサーバに接続したUSBカメラを認識できるし、ゲストOS上の LiveCapture3 でもUSBカメラを認識することはできた。しかし、映像が写らない。選択できる解像度も160x120しかない。
また、物理PCからUSBデバイスサーバに接続されたUSBカメラも同様、認識できるが映像は写らない。
よって、Hyper-VのゲストOSとか物理PCとか関係なく、USBデバイスサーバ Silex SX-DS-3000WAN の仕様上の制限で、映像が映らないということみたいだ。なお、WiFi接続、有線接続どちらも同様の結果である。
現実として、USB1.1で接続できるUSBカメラを入手することは困難だし、たとえ入手したとしても良くて30万画素クラスの解像度どでは最近のIPカメラにも劣るので、Hyper-V上の仮想マシンからUSBカメラ映像を監視するこの計画は終了した。
Silexから発売されている有線LAN接続タイプのUSBデバイスサーバでは、Hi-Speed(USB2.0)アイソクロナス転送に対応しているとのことだが、設置場所に自由度がないので、選択することはできない。
以上、計画は失敗に終わり、11,050円の勉強代であった。メーカーページに
本製品は、フルスピードアイソクロナス転送に対応しています。データ転送の連続的かつリアルタイム性を必要とするWebカメラやUSBスピーカなどのUSB機器もネットワーク環境で利用することができます。
※ ハイスピードアイソクロナス転送モードには対応しておりません。
と、何のことを言っているのかよくわからない内容だが、要はUSB2.0接続のみサポートするUSBカメラは利用できませんということが、メーカーのページにも書いてあるのを見落として購入してしまった自分が悪いのである。
仕方がないので、IPカメラを1台追加することにした。IPカメラならHyper-VのゲストOS上にインストールした LiveCapture3 からも配信、動体検知、録画すべてOKなことを確認した。
Hyper-VゲストOS上のIPカメラ(左)とUSBカメラ(右)
ただ、せっかく購入したので、余っているハードディスクケースをUSBデバイスサーバに接続し、NAS的な利用を検討してみる。
以降の記事は、失敗に終わった計画だが、失敗に気が付くまでの作業手順やRemoteFXで物理PCのUSBカメラを仮想マシンで利用する方法を記載する。
デバイスサーバをセットアップする
Device Server Setup というデバイスサーバセットアップツールを利用して、デバイスサーバのIPアドレス等を設定する。
デバイスサーバにLANケーブルを差し込み、次に電源ケーブルを差し込む。当然だが差し込んだLANケーブルと Device Server Setup を実行するパソコンはネットワーク的に接続されていること。Device Server Setup は付属のCDに収録されているが、これは古いので最新の Device Server Setup をサイレックスのサイトから入手する。
ダウンロード|サイレックス・テクノロジー株式会社
http://www.silex.jp/support/download/deviceserversetup_new.html
Hyper-V上の仮想PC vCAMTEST に一般ユーザアカウントでリモートデスクトップ接続して作業した。
Device Server Setup を起動する。以下、特に説明がないものは図のとおり。
Device Server Setup が起動。
デバイスサーバ本体の設定を選ぶ。
設定ユーティリティを使用して設定する(推奨)を選ぶ。
実行するとUACの確認がくるので、管理者アカウントとパスワードを入力する。
はい を選ぶ。ファイアーウォールが自動的に設定される。設定された内容とそれを修正した結果は後述する。
LANに接続されたUSBデバイスサーバが自動的に検索される。
うちではルーター(無線LAN親機)でDHCPから静的にIPアドレスを割り振っているので、IPアドレスを自動的に取得を選ぶ。
無線LANアクセスポイントが検索されるので、自宅のSSIDを選び、ネットワークキーを入力する。
確認画面。
はい を選ぶと SX Virtual Link のインストールが続けて開始する。
USBデバイスサーバへの接続ソフト SX Virtual Link をインストールする
常に信頼する はチェックを外した。
インストールが完了すると SX Virtual Link が起動する。
LANケーブルを抜くとデバイスサーバを見失う。しばらくして更新ボタンを押しても見つからない。電源ケーブルを抜き差しすると見つかった。
USBカメラを接続
USBデバイスサーバにUSBカメラを接続する。
USBカメラを認識する。
接続をクリック。
USBカメラを利用できるようになった。なお、USBカメラはこのパソコンが排他的に利用するので、他のPCからは利用できない。他のPCで利用する場合は、この接続を切れいい。
LiveCapture3 をインストール
Visual c++ 2010 再頒布可能パッケージ(x86)と DirectX が必要なので、先にインストールしておく。
ダウンロードした LiveCapture3 をインストールする。難しいことはないので説明は省略。
LiveCapture3 の設定方法や使い方は、以前に書いた下記記事を参考
湯の如し: LiveCapture3+スマートサーブ+パソコン+USBカメラ+IPカメラで外出先から自宅リビングを監視できるようにする
http://yunogotoshi.blogspot.jp/2014/09/livecapture-3usbip.html
しかし、LiveCapture3でUSBカメラが映像が表示されない。
ファイアーウォールの設定を確認
自動で設定されたファイアーウォール設定の内容。
一部気になる部分があったので修正することにする。
プライベートネットワークでしか利用しないので、受信の規則「SX Virtual Link」「SXUPTP」共に スコープをプライべートのみに設定した。
→
(第2案)
物理PCのHyper-Vマネージャから仮想マシン接続でRemoteFXを利用し、仮想PCで物理PCに接続されたUSBカメラを利用する(リダイレクトする)
USBカメラがUSB2.0のみにしか対応していなかったため、USBデバイスサーバに接続したUSBカメラをHyper-Vの仮想マシンで利用することはできなかったが、物理PCに接続したUSBカメラを仮想マシンで利用するできるようにすることで、仮想マシン上の LiveCapture3 でUSBカメラを設定し、Web配信できるようにする。なお、この手順を踏まないと、仮想マシン上の LiveCapture3 でUSBカメラを認識できないので、仮想マシンからのUSBカメラの設定や配信はできない。
物理コンピュータでグループポリシーエディタ(gpedit.msc)を起動し、以下の設定を行う。
コンピューターの構成\管理用テンプレート\Windows コンポーネント\リモート デスクトップ サービス\リモート デスクトップ接続クライアント\RemoteFX USB デバイス リダイレクト\サポートされている他の RemoteFX USB デバイスの、このコンピューターからの RDP リダイレクトを許可する。
Hyper-Vマネージャから仮想マシン接続を利用して、仮想PCに接続するときに、ローカルリソース → 詳細 → その他のサポートされているRemoteFX USBデバイス で USB_Camera にチェックする。
下図は、物理PCへリモート接続している。Hyper-Vマネージャから仮想マシンに接続すれば、物理PCに接続されたUSBカメラ映像を仮想マシンで見ることができる。仮想マシンでUSBカメラを利用できる状態になれば、LiveCapture3 でUSBカメラの設定が可能になる。一度設定してしまえば、仮想マシンを起動するだけで、仮想マシン上の LiveCapture3 からUSBカメラの映像を配信し、モバイル端末からできるようになる。
ただし、仮想マシンをシャットダウンしたり停止すると、USBカメラのリダイレクトは解除されてしまう。一時停止だとリダイレクトは維持されるようだが、物理PCをシャットダウンすると、自動停止アクションの種類にかかわらず、リダイレクトは解除されてしまう。つまり、物理PCのUSBカメラを仮想マシンへリダイレクトし続けるには、仮想マシンをつけっぱなしにしなければならない。それは電気代を考えると運用できない。
RemoteFXについては下記を参考にした。
その知識、ホントに正しい? Windowsにまつわる都市伝説(3):RDPとRemoteFXのお話[その3] (2/2) - @IT
http://www.atmarkit.co.jp/ait/articles/1404/01/news007_2.html
コメント
コメントを投稿