Saturday, March 22, 2014, 04:18 - Hardware
Posted by ELIN
大昔に買ってそのまま何にも使用していなかったMicrosoftのLifeCam VX-1000というWebcamがあるのだが、思うところがあり動かしてみることにしたPosted by ELIN
しかしこれはキワモノでも何でもない至って普通のデバイスなので、Windowsなマシンに挿そうものなら勝手にドライバをインストールし、何もしないまま普通に動いてしまう
当然このようなことは誰も望んでいないので、OpenWrtのWZR-HP-AG300Hに挿すことにする
さて、最初は正しいドライバを探すところから始まる
OpenWrtのリポジトリにはkmod-video-gspca-*なものが揃ってはいるが、PCIないしPCIeスロットに挿すような見ればわかるデバイスと異なり、USBデバイスは見ただけではドライバを判別するのが困難なのでこれを調べる必要がある
http://cateee.net/lkddb/web-lkddb/USB_GSPCA.htmlによると、VX-1000はkmod-video-gspca-sonixjであるらしいのでこれをインストール
次に動作確認としてOpenWrt上でWebcamからデータを取り出してみる
これはmjpg-streamerをインストールし
# mjpg_streamer -i "input_uvc.so -f 10 -d /dev/video0 -n" -o "output_http.so -w /www/webcam"
こう
ちなみに動かない場合は適当にパラメータを弄ると動いたりする
パラメータの詳細はここ
これでhttp://192.168.1.1とするとWebcamの映像を確認することができる
さて、対して苦労もせず動いてしまったので、次はUSB over IPを試してみる
これはどういうことかと言うと、WZR-HP-AG300Hに接続されたVX-1000をVM上のWindows XPから制御してみようというわけ
まずOpenWrtでusbip-serverをインストールし
# usbip list -l
Local USB devices
=================
- busid 2-1 (045e:00f7)
2-1:1.0 -> sonixj
2-1:1.1 -> unknown
2-1:1.2 -> unknown
# usbip bind -b 2-1
bind device on busid 2-1: complete
# usbipd -D
もしサーバサイドのログが必要なら
# usbipd -d
Windows側ではhttp://usbip.sourceforge.net/からusbip_windows_v0.2.0.0_signed.zipを入手する
そしてコントロールパネルのハードウェアの追加から落としてきたドライバを指定してデバイスを作成する
で
>usbip -l 192.168.1.1
とするとbindしたデバイスが見えるはずなのだが
- 192.168.1.1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip.c: 216 (query_exported_devices) recv op_common
usbip err: usbip.c: 288 (show_exported_devices) query
このような感じで見えない
サーバサイドでは
usbip: debug: usbip_network.c:149:[usbip_net_recv_op_common] version mismatch: 262 273
usbipd: debug: usbipd.c:230:[recv_pdu] could not receive opcode: 0
と出力され、バージョン不一致であることがわかる
usbip.exeのバイナリを書き換えてバージョンを誤魔化してみたりもしたが、パケットに載せるコマンド番号そのものが異なっているらしく動作しなかった
誰かわかってるやつがなんとかしてくれてないかなー、と探してみるとhttp://www.raspberrypi.org/forum/viewtopic.php?f=28&t=8858&start=25にそれっぽいバイナリを発見
結果
>usbip -l 192.168.1.1
usbip for windows ($Id$)
- 192.168.1.1
2-1: unknown vendor : unknown product (045e:00f7)
: /sys/devices/platform/ohci-platform/usb2/2-1
: (Defined at Interface level) (00/00/00)
: 0 - unknown class / unknown subclass / unknown protocol (ff/ff/ff)
: 1 - unknown class / unknown subclass / unknown protocol (01/01/00)
: 2 - unknown class / unknown subclass / unknown protocol (01/02/00)
と、出力を得る
そして接続
>usbip -a 192.168.1.1 2-1
これでデバイスマネージャにもVX-1000が見えて接続されていることがわかる
しかし何らかのデータは飛んできてはいるものの、Webcamの動作までは至っていない
真っ黒だったり、バグったjpegのようだったり、映像を正常に受け取ることができない状態だ
usbipではない別のプロダクトとしてhttps://www.virtualhere.com/もあるが、同じように動作しない
ただMicrosoft純正のアプリケーションでのみ正常に映った
恐らくだがWebcamが若干悪い気がしないでもないので、別のWebcamを入手したときに試してみることにする
ちなみにマウスなどは普通に動いてる
