Raspberry Pi (Arch Linux インストール済み)に一眼レフをUSBで繋いで制御してみよう。
gPhoto2のインストール
# pacman -S gphoto2
違うディストリ/パッケージマネージャーでも、何かしら gphoto2 みたいなパッケージはあると思う。
簡単な使い方
接続されたデバイスの一覧を見る:
$ gphoto2 --list-ports Devices found: 3 Path Description -------------------------------------------------------------- ptpip: PTP/IP Connection usb:001,005 Universal Serial Bus usb:001,003 Universal Serial Bus
機種名を表示:
$ gphoto2 --auto-detect Model Port ---------------------------------------------------------- Canon EOS 600D usb:001,005
EOS 600DというのはEOS Kiss X5のことで、同じ製品でも日本と海外で名前が違うとかいうアレだ。
パーミッションの罠
では、 gphoto2 --summary
でもっと詳しい情報を取得してみよう。
$ gphoto2 --summary *** Error *** An error occurred in the io-library ('I/O problem'): No error description available *** Error (-7: 'I/O problem') *** For debugging messages, please use the --debug option. Debugging messages may help finding a solution to your problem. If you intend to send any error or debug messages to the gphoto developer mailing list <gphoto-devel@lists.sourceforge.net>, please run gphoto2 as follows: env LANG=C gphoto2 --debug --debug-logfile=my-logfile.txt --summary Please make sure there is sufficient quoting around the arguments.
なんかエラーが出た。
しかし、このエラーはハードウエアの問題とかgPhoto2の問題ということとも限らない。なぜなら、
$ sudo gphoto2 --summary
としてみたり、
$ lsusb | grep Canon Bus 001 Device 005: ID 04a9:3218 Canon, Inc. EOS 600D / Rebel T3i (ptp) $ ls -l /dev/bus/usb/001/005 crw-rw-r-- 1 root root 189, 4 Feb 14 18:23 /dev/bus/usb/001/005 $ sudo chgrp users /dev/bus/usb/001/005 $ gphoto2 --summary
みたいな感じで /dev/bus/usb/ほにゃらら/ほにゃらら
のグループを変えてやるとうまくいく。つまり、USBデバイスのパーミッション的な問題だということだ。
そこで、 udev の設定をいじる。Arch WikiのDigital Camerasのページを参考にして、
# groupadd camera # /usr/lib/libgphoto2/print-camera-list udev-rules version 175 group camera > /etc/udev/rules.d/40-gphoto.rules # usermod -a -G camera (自分)
みたいなことをやったらうまくいった。(自分の環境だと 40-gphoto.rules
というファイルは /usr/lib/udev/rules.d/40-gphoto.rules
に既に存在したが、/etc/udev/rules.d/
に同名のファイルを置くとそっちの方が優先される。この辺は man udev を参照。)
設定を変えた後は再起動が必要かもしれない。
簡単な使い方その2
gPhoto2 で写真を撮ってみる:
$ gphoto2 --capture-image
写真を撮影&ダウンロード:
$ gphoto2 --capture-image-and-download
頑張れば露出とかシャッター速度とかいろいろ設定できそうだが、そういうのはまた今度。
Raspberry Pi じゃなくても
gPhoto2は別にRaspberry Piじゃなくても普通のLinuxとかあるいはOS Xでも動くのだが、お節介なリッチなデスクトップ環境とかが入っていると、そっちの方にカメラの制御権(?)を奪われてしまう場合があるので注意しよう。