UVC(USB Device Class)に対応したWebカメラを使用して、ディスプレイに動画像を表示する方法を紹介します。UVC対応カメラは、Qcam Orbit AF(Logicool製)を使用します。また、動画像の表示にはuvcviewを使用します。
おおまかな手順は下記のようになります。
- uvcviewをクロスコンパイルする
- UVC対応カメラを使用可能なDebian GNU Linux (etch)を用意する
- 実行する
なお、本 Howto では、以下の環境を想定しています。
- 対象製品:Armadillo-500
- ユーザランド:Debian GNU Linux (etch)
- linux-kernel:UVC対応Webカメラを使用してストリーミング配信をおこなうで作成したカーネル
- UVC対応Webカメラ:Qcam Orbit AF(Logicool製)
- uvcvideoデバイスドライバ:リビジョン262(2008年10月29日現在の最新svnリポジトリ)
- uvcview:20070607
- 開発PC:Debian etch
1. uvcviewをクロスコンパイルする
uvcviewのクロスコンパイルには、libgtk2.0-devが必要です。libgtk2.0-devは多くのパッケージに依存しているため、一つ一つクロス開発用にインストールするのは大変です。そこで、libgtk2.0-devを含んでいるArmadillo-500 FX用の開発環境一式をインストールしてしまいます。
/etc/apt/sources.listに下記の1行を追加してください。
deb http://download.atmark-techno.com/debian etch/
以下のコマンドで、Armadillo-500 FX用の開発環境一式がインストールされます。
[PC ~]$ sudo apt-get update
[PC ~]$ sudo apt-get install a500fx-development-environment
uvcviewのソースコードを取得します。
[PC ~]$ wget http://www.nurs.or.jp/~ogochan/hack/uvcview-20070607.tar.gz
[PC ~]$ tar xzvf uvcview-20070607.tar.gz
クロスコンパイルします。
[PC ~]$ cd uvcview-20070607
[PC ~/uvcview-20070607]$ ./configure --host=arm-gnu-linux CC=arm-linux-gnu-gcc
[PC ~/uvcview-20070607]$ make
[PC ~/uvcview-20070607]$ ls src/uvcview
src/uvcview
srcディレクトリの下に、uvcviewが作成されます。
2. UVC対応カメラを使用可能なDebian GNU Linux (etch)を用意する
Armadillo-500 ソフトウェアマニュアルを参照して、コンパクトフラッシュカードにDebian GNU Linux (etch)をセットアップしてください。
カーネルは、video4linux2が有効になっている必要があります。コンパクトフラッシュカードのパーティション1の/boot/Image.gzには、UVC対応Webカメラを使用してストリーミング配信をおこなうで作成したカーネルを、名前を変更して保存してください。
また、uvcvideoデバイスドライバも必要ですので、UVC対応Webカメラを使用してストリーミング配信をおこなうと同じ手順でuvcvideo.koを用意してください。
準備ができたら、Armadillo-500にディスプレイ、USBキーボード、USBマウスを接続して、Debian GNU Linuxを起動してください。USBポートが足りなくなりますので、USBキーボードとUSBカメラはUSBハブ経由で接続するとよいでしょう。
Debian GNU Linuxが起動できたら、X windowシステム及びlibgtk2.0をインストールします。
armadillo:~# apt-get update
armadillo:~# apt-get install x-window-system-core
armadillo:~# apt-get install libgtk2.0-0
手順1. で作成した、uvcvideo.ko及びuvcviewをftp等でArmadillo-500にコピーしてください。uvcvideo.koはinsmodしておきます。
armadillo:~# insmod uvcvideo.ko
uvcvideo.koをinsmodしたあとに、UVC対応ビデオカメラをUSBポートに接続すると、カメラが認識されます。
usb 1-1: USB disconnect, address 5
usb 1-1: new high speed USB device using fsl-ehci and address 6
usb 1-1: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:0994)
uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
input: UVC Camera (046d:0994) as /class/input/input8
3. 実行する
まずは、Xを起動します。VGAコンソールで、以下のコマンドを実行してください。
armadillo:~# startx
ウィンドウマネージャをインストールしていないので、X serverが起動したあと、xtermのみが起動します。
xtermで、以下のコマンドを実行すると、uvcviewが起動されカメラで撮影している画像が画面に表示されます。
armadillo:~# ./uvcview -cam /dev/video0 -fps 5 -width 352 -height 288
dmesgに下記のように表示されて、画面が黒くなったり、表示が安定しない場合は、fpsや解像度の指定を変更してみてください。
uvcvideo: Failed to resubmit video URB (-45).
4. 関連情報
- uvcview
- Linux UVC driver and tools UVC対応Webカメラ一覧が掲載されています
- Logitech webcams Logitech製Webカメラのドライバ情報が掲載されています
- UVC対応Webカメラを使用してストリーミング配信をおこなう
- Armadillo-9でのWebカメラ動作情報
本Howtoは、Armadillo-500に適用できます。