一時期FreeBSDでも利用できることで一世を風靡したOmniVision OV511なWebカメラですが、先日近所のハードオフで見つけました。1個105円のものが4個、計420円也。
当時手に入れられなかったこともあり、ちょっとした暇つぶしにはいいかな、ということで、4つとも購入。
今回はこのWebカメラをハックしてみます。
とりあえず、家のFreeBSD 8.4-RELEASEがインストールされたマシンに接続してみるも、以下の表示が出ました。
ugen3.2: <vendor 0x05a9> at usbus3
昔はOmniVisionのOV511って表示されていたみたいなのですが…
FreeBSDのUSBスタックは2009年頃にごっそり書き直されているので、それが原因なのでしょう。
ちなみに、FreeBSDでUSBにどのようなデバイスが接続されているかを確認するには、「usbconfig」を使うとよいです。
試しにOV511を接続したマシンで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 -d /dev/ugen3.2 | pnmtojpeg > hoge.jpg
うまくいけば、JPGファイルができるはずです。
vidの使い方はgoogleで検索すれば出てくるので、ここでは省略します。
もはやそんな奇特な人はいないと思いますが、OV511なデバイスをFreeBSD 8.X以降でも使いたい方のために、変更したソースコードを公開しておきます。
【ToDo】ソースコードへのリンクを設置
元のファイルはGPLで配布されているため、このソースコードもGPLで配布します。
ちなみに、今からFreeBSDでWebカメラを使うのならば、OV511なWebカメラを探すのではなく、V4L(Video4Linux)で動くデバイスをV4B(Video4BSD)経由で動かすほうが、遥かにリーズナブルです。
これからFreeBSDでWebカメラを目指す方は、こちらをお試しください。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。