はじめに

一時期FreeBSDでも利用できることで一世を風靡したOmniVision OV511なWebカメラですが、先日近所のハードオフで見つけました。1個105円のものが4個、計420円也。

当時手に入れられなかったこともあり、ちょっとした暇つぶしにはいいかな、ということで、4つとも購入。

今回はこのWebカメラをハックしてみます。

試行錯誤

とりあえず、家のFreeBSD 8.4-RELEASEがインストールされたマシンに接続してみるも、以下の表示が出ました。

dmesg上の表示
ugen3.2: <vendor 0x05a9> at usbus3

昔はOmniVisionのOV511って表示されていたみたいなのですが…
FreeBSDのUSBスタックは2009年頃にごっそり書き直されているので、それが原因なのでしょう。

ちなみに、FreeBSDでUSBにどのようなデバイスが接続されているかを確認するには、「usbconfig」を使うとよいです。
試しにOV511を接続したマシンでusbconfigをすると以下のようになります。

「usbconfig」の実行結果
ugen0.1:  at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1:  at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen2.1:  at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen3.1:  at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen4.1:  at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen5.1:  at usbus5, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen6.1:  at usbus6, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen3.2:  at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

また、昔はvidというシンプルなプログラムがあって、これを使うことによりキャプチャができていたようです。

vidは、USBに接続されているOV511デバイスから画像を読みこんで標準出力にPBMで出力するプログラムです。
昔はportsに含まれていましたが、今はないようです。

仕方がないので、ソースコードを取って来ます。
オリジナルのソースコードはこちら。

【ご参考】OV511/OV511+ Capture for FreeBSD/NetBSD

試しにmakeしてみましたが、FreeBSD 8.4-RELEASEではvidはコンパイルが通りませんでした。
ソースを見ると、最終更新日は2000-05-07、そりゃ動くはずがないですね。

ソースコードの修正

vidはCソース1ファイル、ヘッダ1ファイルのシンプルなプログラムなので、そんなに難しくなさそうです。ちょっと中身を見てみました。

コンパイルが通らないのは、usb_ioctl.hで定義されたいくつかの構造体のメンバ名が変わっているだけだったので、これらを修正します。

また、この修正以外にコンパイルを通すには、「graphics/netpbm」のportsに含まれるヘッダファイルが必要です。
(これは元のソースコードのREADMEに書いてありました。)

上記のportsを予めmake installした後、makeします。
makeが完了すると、vidという実行ファイルができるので、OV511なデバイスがマシンに刺さっている状態で以下のようにキャプチャします。

「vid」の利用方法
$ ./vid -d /dev/ugen3.2 | pnmtojpeg > hoge.jpg

うまくいけば、JPGファイルができるはずです。

vidの使い方はgoogleで検索すれば出てくるので、ここでは省略します。

修正したソースコードの配布

もはやそんな奇特な人はいないと思いますが、OV511なデバイスをFreeBSD 8.X以降でも使いたい方のために、変更したソースコードを公開しておきます。

【ToDo】ソースコードへのリンクを設置

元のファイルはGPLで配布されているため、このソースコードもGPLで配布します。

今からFreeBSDでWebカメラを始めるなら、「V4B」で!

ちなみに、今からFreeBSDでWebカメラを使うのならば、OV511なWebカメラを探すのではなく、V4L(Video4Linux)で動くデバイスをV4B(Video4BSD)経由で動かすほうが、遥かにリーズナブルです。

これからFreeBSDでWebカメラを目指す方は、こちらをお試しください。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。