2010年11月8日月曜日

gphoto2 on OSX (Snow Leopard)

Canon EOS 20D を持っている。 USB で MacBookPro に繋いでシャッターを切ってみたくなった。

こういうことを可能にする gphoto2 というツールがある。4 年程前 Linux でデジカメの制御をした事があって、その際使わせてもらったことがある。デジカメは PTP というプロトコルを使ってパソコンと通信をする。実際にはカメラメーカーや機種によって PTP の対応具合が違ったり、独自の拡張コマンドを持つカメラもあるようだが、gphoto2 が使っている ptp ライブラリ (libptp) はある程度この辺の違いを吸収した API を提供しているようだ。そして PTP ライブラリは USB インターフェースを使う際 libusb というライブラリを使うのだが、OSX でも最近の libptp, libusb であれば使うことができる。

ただ一連のコンパイルは多少手間取ったのでメモしておく。

まず、 pkg-config と libusbを入れる:
cd pkg-config-0.25/
./configure --prefix=/usr/local
make clean
make
sudo make install
cd ../libusb-1.0.8/
./configure --prefix=/usr/local/
make
sudo make install 

libusb-compat-0.1.3 というのも入れる。これがないと libptp を作れない。( libusb の昔のバージョンとの互換性を保つ為のオプションと思われる。)
cd ../libusb-compat-0.1.3/
./configure --prefix=/usr/local
make clean
make
sudo make install

続いて libptp を入れる。
cd libptp2-1.1.10/
./configure --prefix=/usr/local/
make clean
make
sudo make install

ここまで来ると libgphoto2 が 作れるはずだったが configure すると jpeg ライブラリが無いよとなるので、jpeg ライブラリを入れた後に libgphoto2 を入れる。
cd jpeg-8b/
./configure --prefix=/usr/local/
make clean
make
sudo make install
cd ../libgphoto2-2.4.10.1/
./configure --prefix=/usr/local/
make clean
make
sudo make install

あと一息なのだが、 gphoto2 は popt ライブラリを使っている。この popt が多言語対応のプログラムのようなのだが configure で --disable-nls としても gettext を入れろと言ってくる。もうあれこれ入れる元気がなくなってきたので popt2 の configure スクリプトで gettext の有無をチェック所を↓のようにコメントアウトして

#if test ! -f ../rpm.c
#then
#  echo "$as_me:$LINENO: checking for GNU xgettext" >&5
#echo $ECHO_N "checking for GNU xgettext... $ECHO_C" >&6
#  xgettext --version 2>&1 | grep 'GNU gettext' >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error:
#  *** GNU gettext is required. The latest version
#  *** is always available from ftp://ftp.gnu.org/gnu/gettext/." >&5
#echo "$as_me: error:
#  *** GNU gettext is required. The latest version
#  *** is always available from ftp://ftp.gnu.org/gnu/gettext/." >&2;}
#   { (exit 1); exit 1; }; }
#  echo "$as_me:$LINENO: result: yes" >&5
#echo "${ECHO_T}yes" >&6
#fi

ビルドした。
cd popt-1.7/
vi configure 
./configure --prefix=/usr/local/ --disable-nls
make clean
make
sudo make install 

やっと gphoto2 にたどり着いてちょっとつまずいたが↓のように configure を叩くと make が通るようになった
cd ../gphoto2-2.4.10/
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure --prefix=/usr/local/ --disable-nls --with-libgphoto2=/usr/local/ --without-readline
make clean
make
sudo make install 

PTP というのはカメラメーカー、機種によって対応具合がまちまちなようだが、EOS 20D ではシャッターを切って、画像を転送することが出来た。カメラを PTP モードにして試すとうまくいかず、何故か通常モードにするとうまくいった(色々と試していると、たまに BUS エラーとか出たが私にとっては一応使えそうだ)。IXY digital 930IS も試してみたがこっちはシャッターが切れなかった。(あるいは画像の転送は出来るのかもしれないが試していない)。

参考リンク: harvey.nu

0 件のコメント:

コメントを投稿