Raspberry Pi と gPhoto2 で一眼レフを叩く

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でも動くのだが、お節介なリッチなデスクトップ環境とかが入っていると、そっちの方にカメラの制御権(?)を奪われてしまう場合があるので注意しよう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です