USL-5Pでデジカメのシャッターを切る

gphoto2とcaptureで試したときのメモ。

シャッターを切れるカメラと切れないカメラ

gphoto-user-MLでの情報によれば、 シャッターを切れるカメラの一覧は存在しないようだ。 (シャッターを切るのはPTPのoption機能なのでサポートしていないカメラも多い)

USL-5Pでgphoto2コンパイル時に遭遇したエラーと対処法

gphoto2一般論

gPhoto2などから以下の3点を取得。 ちなみにセルフコンパイル環境でpkg-configを入れていない場合は その旨configure時にエラーが出るので、入れておく。
# apt-get install pkg-config

libusb

# ./configure --host=sh4-linux --build=i686-linux --exec-prefix=/mnt/sh
# make
# make install

libgphoto2

2.1.5が最新(2005.1.24現在) ここなどを参考に。 クロスコンパイルの場合の例。
# tar -zxvf libgphoto2-2.1.5.tar.gz
# cd libgphoto2-2.1.5
# ./configure --host=sh4-linux --build=i686-linux --exec-prefix=/mnt/sh
# make
# make install
ただしgccのバージョンによって、微妙なところで ひっかかる。
...
gphoto2-port-log.h:49: argument format specified for non-function `GPLogFunc'
make[2]: *** [gphoto2-port-info-list.lo] Error 1
小島さんの情報([Iohack-users 112])により
- #if (__GNUC__ >= 3)
+ #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
          __attribute__((__format__(printf,3,0)))
  #endif
と*.cを修正して、gcc-3.0.4をうまくすり抜けさせる。 (ほかにも数箇所あった)

gphoto2

2.1.5が最新(2005.1.24現在)
# tar -zxvf gphoto2-2.1.5.tar.gz
# cd gphoto2-2.1.5
# ./configure --host=sh4-linux --build=i686-linux --exec-prefix=/mnt/sh
と、こんなエラーがでる。
...
checking for libgphoto2 >= 2.1.2... Package libgphoto2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libgphoto2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libgphoto2' found

configure: error: Library requirements (libgphoto2 >= 2.1.2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
書いてあるとおり、libgphoto2.pcがある場所が見つからないようなので、 次のようにする。
# PKG_CONFIG_PATH=/mnt/sh/lib/pkgconfig ./configure --host=sh4-linux --build=i686-linux --exec-prefix=/mnt/sh
ちなみに/usr/local/libなどにlibgphoto2などがインストールされた場合は、 gphoto2が探せないので、
# export LD_LIBRARY_PATH=/usr/local/lib
として、LD_LIBRARY_PATHを設定しておく。 ちなみにこの変更を恒久的に設定するには、 ~/.bashrc_profileに書くか、/etc/profile(すべてのユーザの場合)に書く (ref)

capture

Canonのカメラ限定だが、 capture というソフトがあって、いろいろと機能が多い。 (事前にlibptp2を 入れておく。./configure→make→make install)

コンパイルは添付のREADME通りだが、 なぜかセルフコンパイルでは、 最後のリンクのところででの「-lusb -lptp2」を 最後にもってこないとなぜかだめみたい。

使い方は、

# capture --help
# capture 'capture hoge.jpg'
# capture 'flash off'
など。 ちなみにビープ音を消す(PDC_CANON_BeepMode)や AF補助光を光らせない(PDC_CANON_AssitLight)といった項目も 設定できる(カメラが多い)ので、command.c, capture.h, properties.{c,h}の書き方を 参考に拡張しておくと便利な場合も。

定点カメラへの道

メモ


戻る