« [chumby]chumbyを各種インターネット共有/WMWifiRouter経由でネットにつなぐ | Main | [iPhone]iPhone 3GのSafariと「マップ / Googleマップ / GMaps.app」の連携:ぐるなびの地図表示地点を「マップ」で表示 »

2008.07.08

[chumby]chumbyにUSBカメラをつないでみた

手近にEyeToyがあったので、chumbyに接続してみました。

果敢にも試してみる

以下のファイルをダウンロードします。
素人の仕事ですので、何が起こるか分かりませんというか、実際動作が不安定です。無保証です。

「chumby_eyetoy_set.tar.gz」をダウンロード

scpでchumbyの/pspに転送した後、sshでchumbyにログインして、解凍すれば準備OK。
「192.168.0.4」は、うちのchumbyのIPです。違う場合は読み替えてください。

$ scp chumby_eyetoy_set.tar.gz root@192.168.0.4:/psp/
$ ssh -lroot 192.168.0.4
# cd /psp
# tar xvzf chumby_eyetoy_set.tar.gz

/pspに以下のファイルが展開されます。
上書きされて困る場合は何も無いディレクトリの中に解凍して、子細検討してください。

rfs1/rcS
cjpeg
drivers/videodev.ko
drivers/ov51x-jpeg.ko
capture-V4L
libjpeg.so.62
cgi-bin/capture

chumbyの電源を落とし、起動し直します。
EyeToyを接続後、Mac/PCのブラウザから以下のようなURLをブラウズします。

http://192.168.0.4/cgi-bin/custom/capture

すると、こんな感じの画質でブラウザに表示されるはずです(chumbyに接続したEyeToyでchumby自身を撮影)。

ただ、自分のやった範囲ではちょっと不安定で、実用にはなりませんね。
しばらく使っているとストールしてしまいます。
きっちり知識のある方がやらないとダメでしょう。
cgiはstdoutに出力した画像を直接表示していますが、一度ファイルとして書き出してからなら、安定するかもです(それはそれでFlashの寿命うんぬんという話になりますが)。

EyeToyは数百円で入手できるそうですが、このために買うほどではないと思います。

やったことなどメモ

自分は素人なので、間違ったことを書いている可能性があります。
何かありましたらご指摘ください。

ドライバはov51x-jpegを使いました。オリジナルのov51xをビルドしてみたのですが、うまく通らなかったからです。

Kernelのビルドの方法はchumby WikiのBuilding and Installing a new chumby kernelに書いてありますが、自分が使っているubuntu 7.1だと失敗しました。

困って一度はあきらめたのですが、ISHさんのchumby関連のエントリがアップされて救われました。
ISHさんは凄いですね。僕も、chumbyはホームオートメーションセンターとして使うべきだと思います。

ISHさんのブログで紹介されているharadatさんのエントリによると、ubuntuにはKernelのビルドに必要なものが入っていないとのこと。以下の追加インストールが必要だそうで、

  • build-essential(これがなくては/usr/includeすらない)
  • kernel-package
  • libncurses5-dev(make menuconfigを行うために必要。本来kernel-packageに入っていると良いような気がする)
  • subversion, subversion-tools(TOMOYOのレポジトリの参照用)
  • quilt(もともとはAndrew Mortonが作成したパッチ管理用ツール。自分で使うことはないだろうけれども一応。依存関係でgawkとdiffstatが導入された)

今回はbuild-essential、libncurses5-devをインストールしました。

今回のものには関係無いですが、USB Serialに関連するモジュールを作っておくと便利なので、ISHさんのサイトにある通り、kernelを展開したディレクトリにある.configに以下を追記しました。
.configからはUSB Serialに関する記述が割愛されているので、USB Serial Converter supportの辺りに追記することになります。USB Serial関係のKernel Moduleは「linux-2.6.16-chumby-1.5.0/drivers/usb/serial」にできます。

#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_CONSOLE=m
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRPRIME is not set
# CONFIG_USB_SERIAL_ANYDATA is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
CONFIG_USB_SERIAL_CP2101=m
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
CONFIG_USB_SERIAL_PL2303=m
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set

カーネルをビルドしたら、Ov51x JPEG hacked Wikiからソースをもらってきます。

tar xvzf ov51x-jpeg-1.5.8.tar.gz
$ cd ov51x-jpeg-1.5.8
$ vi Makefile

MakefileのKDIRをchumbyのカーネルソースを展開したディレクトリに、CCとLDをそれぞれtoolchainのものを指定します。

CC = /usr/arm-linux/bin/gcc
LD = /usr/arm-linux/bin/ld
KDIR := /path/to/linux-2.6.16-chumby-1.5.0

でもってmake。

$ ARCH=arm CROSS_COMPILE=arm-linux- make

libjpegのソースパッケージをDebianからもらってきます。でもってビルド。.libs/の中に共有ライブラリが出来ます。

$ tar xvzf libjpeg6b_6b.orig.tar.gz
$ gzip -d libjpeg6b_6b-13.diff.gz
$ patch -p0 <libjpeg6b_6b-13.diff
$ cd libjpeg6b-6b
$ CC=/usr/arm-linux/bin/gcc ./configure  --host=arm-linux
$ make

capture-V4Lのソースをもらってきます。Makefileを編集してmake。

$ tar xvzf capture-V4L-v1.2.tgz
$ cd capture-V4L
$ vi Makefile

CCとCFLAGSを編集します。

CC            = /usr/arm-linux/bin/gcc
CFLAGS        = -O4 -Wall -fsigned-char

makeします。

$ make

キャプチャした画像を出力するcgiを書きます。
詳細はchumby_eyetoy_set.tar.gz内のcgi-bin/captureを参照。

|

« [chumby]chumbyを各種インターネット共有/WMWifiRouter経由でネットにつなぐ | Main | [iPhone]iPhone 3GのSafariと「マップ / Googleマップ / GMaps.app」の連携:ぐるなびの地図表示地点を「マップ」で表示 »