最新更新日 2002.08.26.
更新項目  ちゃんと表示する事が出来るようになりました。

ov511 な USB カメラを使う
  現在、既に XCAST6 が FreeBSD 上で動いているそうです。なので、そろそろパッチが公開されるかな。と、言う感じなので、パッチがリリースされた時に、すぐに XCAST6 で遊べるように今の内から環境を整えておきましょう;-)。

  環境を整えると言っても基本的にはカメラが使えて、マイク、スピーカが使える程度で OK。マイク、スピーカはサウンドカードが使えれば何とかなるので今回はカメラに付いて見ていきたいと思います。

  現在 FreeBSD で使えるカメラと言えば Bt848 系チップを使った bktr ドライバ経由のカメラしか有りません。これに付いては以前に書いているのでそちらを参考にしてください。

  今回の出番は USB カメラです。しかし、全ての USB カメラが動くと言うわけには行かないです。ov511 と ov511+ のチップを使っている USB カメラは FreeBSD で動作するのでそれを利用する事にします。
  僕の場合は秋葉を徘徊していたら ov511 チップを内蔵したカメラを 1,980yen で購入してきました。こらまた安いなぁぁ;-)。買った店は、テクノハウス東映です。まだまだ沢山ありましたよ;-)。

  あんまりおしゃれなカメラでは無いですが、安いので、ま、許して上げましょう;-)。

カーネルの設定から
  ま、一番最初はカーネルの設定からですが、 USB を使える様にしましょう。あ、カーネルモジュールをロードしても多分問題は無いと思われますが・・。

----------------
# USB support
device          uhci            # UHCI PCI->USB interface
device          ohci            # OHCI PCI->USB interface
device          usb             # USB Bus (required)
device          ugen            # Generic
device          uhid            # "Human Interface Devices"
device          ukbd            # Keyboard
device          ulpt            # Printer
device          umass           # Disks/Mass storage - Requires scbus and da
device          ums             # Mouse
device          uscanner        # Scanners
device          urio            # Diamond Rio MP3 Player
# USB Ethernet, requires mii
device         aue             # ADMtek USB ethernet
device         cue             # CATC USB ethernet
device         kue             # Kawasaki LSI USB ethernet
----------------

  この辺りが入っていれば USB が使える様になります。多くは語りませんがきっと皆さんご存じと言う事で;-)。
  そして、 /etc/rc.conf 内で usbd を起動する様に usbd_enable="YES" とすれば OK でしょう;-)。

vid で利用してみる
  では、実際に USB カメラをさしてみましょう。基本的には以下の様に出力されるかと思います。 ugen0 として認識できればグーですね。

ugen0: at uhub0 port 1 (addr 2) disconnected
ugen0: detached
ugen0: OmniVision OV511 Camera, rev 1.00/1.00, addr 2

  これで認識された事になります。ぱちぱち。では、実際にプログラムで利用してみる事にします。今回は vid と言うプログラムを利用します。 /usr/ports/graphics/vid にあるので make してインストールしておきましょう。また、 vid を使う時には netpbm-9.25 と言う、画像タイプ変換モジュールが必要なのですが、packages/ports からインストールすると関連性によりインストールされます。

  では実際に vid を使ってみますが、/dev/ugen0 は一般ユーザでのアクセス権限が有りませんので root で作業します。

----------------
# vid
vid: couldn't locate an OV511 or OV511+ device
----------------

  こんな感じで帰ってくると 接続した USB カメラは OV511 や OV511+ では無いので利用できないと言う事になります。しくしく。で、使えるカメラであるならばすかさず以下の様に実行してみましょう。

----------------
# vid --small | pnmtopng > output.png
----------------

  vid は標準出力に画像イメージを出力しますが、それを pipe で pnmtopng と言うプログラムに食わせた後で png 形式のファイルに出力して上げます。これを xv とかで見ると静止画像を撮る事が可能です。vid はそう言うプログラムです;-)。僕の場合、最初とんでもない色の画像が出力されていましたが、USB に挿してあるカメラを一旦抜いて再度 USB に接続すると、だんだんと色が綺麗になります;-)。どう言う事なんでしょうかね(^^;;。

  尚、vid は非常に小さいプログラム(けど、ハードを知っていないとソースに手が出せない;-)なので、パッチがいろいろな所にあります。 key's さん の書かれた web ページには色を制御するパッチがあるのでそれを利用してみると良いかもしれません。

  vid.patch を取ってきて、ports の下で以下の様にパッチを当てればグーです。

----------------
#cd /usr/ports/graphics/vid
# make fetch
# make patch
# cat ~/vid.patch | patch -p1
# make;make install
% vid --help
usage: vid [options]
Capture an image frame from an OV511/OV511+ based USB video camera
and write image data to standard output in PNM format

--version              print program version information
--usage                summarize command line options
--help                 print this description
--small                capture as 320x240 image (default is 640x480)
-d device, --device-name=device
                       specify OV511 ugen device
-b num, --brightness=num
                       brightness control option (default is 128)
--saturation=num       saturation control option (default is 128)
--sharp=num            sharp control option (default is 195)
--gain=num             gain control option (default is 0)
--rgain=num            Red cannel gain control option (default is 128)
--bgain=num            Blue cannel gain control option (default is 128)
--noauto               do not use auto adjust mode. enable setting \
                       manual gain status. (default is auto)
----------------

  と、言う事でオプションが増えます。後は色々試してみてください;-)。

動画にチャレンジ
  XCAST6 をやる為にはやっぱり動画が不可欠です。動画を流して会議するためのプログラムとしては vic と言うのがあります。これを利用すると XCAST6 で皆が利用している風景になります(真ん中に小さく写っているのは僕ですね;-)。

  しかし、ports/packages にある vic は ov511 、 ov511+ には対応していません。悲しい・・。しかし、XCAST6 の web ページには vic を IPv6 対応にしてなおかつ ov511 、 ov511+ に対応するためのパッチがあるのでそれを利用する事にします;-)。ちなみにこのパッチ、NetBSD 用です。これに合せてソースを変更して上げましょう。

  FreeBSD で vic を ov511 対応にするパッチを作成してみました。基本的には以下の様に適用してみてください。このパッチは XCAST6 のパッチと ports のパッチを足して 2 で割った様な感じです。だらしなくて申しわけない・・(^^;;。対応するバージョンは一応 4.6-RELEASE と言う事にしといてください。5/6 版の CURRENT に適用して vic を起動したらマシンが凍りつきました(^^;;。

  どうも凍りつくのは ohci コントローラに原因がある様です。Intel/VIA などで使われている uhci 系コントローラでは無事に動いています。

----------------
% tar xvzfp vic-2.8ucl-1.1.3.tar.gz
% cd vic-2.8ucl-1.1.3
% cat ~/FreeBSD-vic-2.8ucl-1.1.3.patch | patch -p1
% cd common.new
% sh configure --enable-ipv6
% make
% cd ../vic
% ./configure --enable-ipv6 --without-ucltcl --without-ucltk \
--with-tcl=/usr/local --with-tk=/usr/local
% make
# make install
----------------

  無事に make が通ったらすかさず起動してみましょう;-)。起動する時には % vic localhost/20000 とかして、ホスト名と port 番号を指定します。すると以下の様に現れたかと思います。

  [Menu] ボタンを押すと以下のメニュー画面が表示されます。

  一番上の [Transmit] ボタンを押すと動画が流れ出します;-)。真ん中辺りには [Device...] と言うボタンが有りますがこれを見ると [ov511] と言うのがあるのでそれを選択する事が可能です。パッチを当てるとこのデバイスが現れます(もとは XCAST6 のバッチですけど;-)。凄いですねぇぇ。と、言う事で実際に試してみたのが以下のキャプチャです。

  あぁれーー。すっかりモザイクが表示されて写らないですねぇぇ。しくしく。と、言う事で今回はこれまでにしましょう(^^;;。僕の能力ではこれが限界です。画像処理に詳しい方、もしくは USB に詳しい方居ましたら是非助けてください。とーびーーこんてぃにゅーー。と言う事で(^^;;。これが正しく動く様になると、ov511 で動画を見る事が可能になります。そしたら XCAST6 の FreeBSD 版パッチがリリースされても OK ですねぇぇ;-)。

  後、もしかしたら僕のカメラがダメダメなのかもしれません。皆さん、是非試してみていただけませんでしょうか。宜しくお願いします。

以下は 2002/08/26 追加分です;-)。
  FreeBSD-uses-jp な ML に投げてみた所、なんとっ!!無事に見ている人が居る様です。でもって、詳しい話をお聞きすると、ov511+ では動くらしいけど、ov511 ではモザイクがかかると言う事を教えていただきました。

  で、はちまん@OFUG さん が書いてくださったパッチを吸収すると見事に動きます。ov511/ov511+ 両方で無事に動く様になります。パチパチパチ。やっぱり実際に表示できると感動するモノが有りますねぇぇ。嬉しいですねぇぇ;-)。 ov511/ov511+ の両方に対応したパッチはここに置いておきます。 FreeBSD-vic-2.8ucl-1.1.3.20020826.patch.gz と言う名です

  ちなみに音声の方は rat と言うプログラムが用意されています。vic&rat の XCAST6 については FreeBSD 版パッチがリリースされてから再度書きますね;-)。



Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.