Armadilloフォーラム

MTP/PTPプロトコル使用方法について

k-fukui

2015年7月21日 14時19分

お世話になります。
福井と申します。

Armadillo-420で、デジカメをMTP/PTPプロトコルにて制御したいのですが、
コンフィグ設定や必要なライブラリをお教え頂けませんでしょうか?

初歩的な質問で申し訳ありませんが、ご教示いただけると助かります。

宜しくお願い致します。

コメント

at_takashi.sasayama

2015年7月22日 14時36分

笹山です。

> Armadillo-420で、デジカメをMTP/PTPプロトコルにて制御したいのですが、
> コンフィグ設定や必要なライブラリをお教え頂けませんでしょうか?

gPhoto2 で制御する方法があります。
Armadillo-420 で gPhoto2 を使用する方法は下記が参考になると思います。

USBスマートストレージの接続
https://users.atmark-techno.com/comment/1980#comment-1980

福井です。

ご連絡誠に有難うございます。

> gPhoto2 で制御する方法があります。
> Armadillo-420 で gPhoto2 を使用する方法は下記が参考になると思います。
>
> USBスマートストレージの接続
> https://users.atmark-techno.com/comment/1980#comment-1980

上記内容確認致しました。

実施したい内容ですが、デジカメ画像を取得するというものではなく、
コマンドを送信しての「制御」(例:ISOをダウンさせる)を実施したいと考えております。
この場合、どのような手段で実施したら宜しいのでしょうか?

以上、宜しくお願い致します。

福井です。

ご連絡誠に有難うございます。

> gphotoでできるみたいですね。
>
> http://www.linux-magazine.com/Issues/2009/109/gPhoto

標準コマンドはできそうな気配がありそうですね。
ベンダー特有のコマンドプロトコルまで実施できるかどうかはわかりませんので、試してみたいと思います。

もし、ベンダー特有のコマンドプロトコルに対応していない場合、
対処方法をご存じでしたら、お教え頂けますと幸いです。

以上、宜しくお願い致します。

福井です。

笹山さまにお教え頂きましたパッケージを入れて確認致しましたところ、
当該バージョン(2.4.x)ではカメラが非対応となっておりました。

先日リリースされた2.5.8(libgphoto2 )にて対応されたようです。
http://www.gphoto.org/news/

debianパッケージではまだ最新バージョンが未対応のため、
本家より、photo2とlibgphoto2 をダウンロードし、ビルドしようとしましたが、
configure実行後に、下記のようなエラーが出ました。

configure: error: cannot compile and link against libltdl
libgphoto2 requires libltdl (the libtool dl* library),
but cannot compile and link against it.
Aborting.

対処の仕方を教えて頂けませんでしょうか?

尚、configureは、下記のようなオプションをつけております。
./configure --prefix=/usr CC=/usr/bin/arm-linux-gnueabi-gcc --build=i686-pc-linux-gnu --host=arm-linux

花田です。

このクロスビルドは手でやるにもわりと面倒なので、Atmark Distへの追加パッチ作ってみました。
(ご質問のlibltdlの解決も含む)クロスライブラリインストールの事前準備が必要です。

まず、ATDE3にcrosslib.tar.gzに含まれるクロスライブラリ群(20種)をインストールします。

atmark@atde3:~/work$ mkdir deb
atmark@atde3:~/work/deb$ tar zxf ../crosslib.tar.gz
atmark@atde3:~/work/deb$ ls
libaa1-armel-cross_1.4p5-37+b1_all.deb
libaa1-dev-armel-cross_1.4p5-37+b1_all.deb
libexif-dev-armel-cross_0.6.16-2.1_all.deb
libexif12-armel-cross_0.6.16-2.1_all.deb
libgpm-dev-armel-cross_1.20.4-3.1_all.deb
libgpm2-armel-cross_1.20.4-3.1_all.deb
libltdl-dev-armel-cross_2.2.6b-2~bpo50+1_all.deb
libltdl7-armel-cross_2.2.6b-2~bpo50+1_all.deb
libncurses5-armel-cross_5.7+20081213-1_all.deb
libncurses5-dev-armel-cross_5.7+20081213-1_all.deb
libpng12-0-armel-cross_1.2.27-2+lenny5_all.deb
libpng12-dev-armel-cross_1.2.27-2+lenny5_all.deb
libpopt-dev-armel-cross_1.14-4_all.deb
libpopt0-armel-cross_1.14-4_all.deb
libslang2-armel-cross_2.1.3-3_all.deb
libslang2-dev-armel-cross_2.1.3-3_all.deb
libusb-1.0-0-armel-cross_1.0.6-1~bpo50+1_all.deb
libusb-1.0-0-dev-armel-cross_1.0.6-1~bpo50+1_all.deb
libxml2-armel-cross_2.6.32.dfsg-5+lenny5_all.deb
libxml2-dev-armel-cross_2.6.32.dfsg-5+lenny5_all.deb
atmark@atde3:~/work/deb$ su
root@atde3:/home/atmark/work/deb$ dpkg -i *.deb
 :
root@atde3:/home/atmark/work/deb$ exit
atmark@atde3:~/work/deb$ cd ..

次に、atmark-distにパッチatmark-dist_gphoto2.patch.gzを当てます。

atmark@atde3:~/work$ cd atmark-dist
atmark@atde3:~/work/atmark-dist$ gzip -cd ../atmark-dist_gphoto2.patch.gz | patch -p1
 :

パッチによって生成された一部のファイルに実行権限を付加するため、chmodx.shを実行します。

atmark@atde3:~/work/atmark-dist$ chmod +x ../chmodx.sh
atmark@atde3:~/work/atmark-dist$ ../chmodx.sh

この状態からmake menuconfigしてCustomize Vendor/User Settingsすると、Miscellaneous Applications中のVideo toolsに
[ ] gphoto2
が増えているはずですので、これを有効化してください。

当方の環境ではスムーズにビルドでき、gphoto2コマンドのいくつかが使えることを確認できました。

[root@armadillo-iotg (ttymxc1) ~]# gphoto2 --auto-detect
Model                          Port
----------------------------------------------------------
Nikon Coolpix P330 (PTP mode)  usb:002,002
[root@armadillo-iotg (ttymxc1) ~]# gphoto2 --list-config
/main/settings/datetime
/main/settings/fastfs
/main/settings/capturetarget
/main/status/serialnumber
/main/status/manufacturer
/main/status/cameramodel
/main/status/deviceversion
/main/status/vendorextension
/main/status/batterylevel
/main/other/5001
/main/other/5011
/main/other/d280
/main/other/d303
/main/other/d406
/main/other/d407
[root@armadillo-iotg (ttymxc1) ~]# gphoto2 --get-config datetime
Label: Camera Date and Time
Type: DATE
Current: 1438265340
Printable: Thu Jul 30 23:09:00 2015
Help: Use 'now' as the current time when setting.
 
[root@armadillo-iotg (ttymxc1) ~]# gphoto2 --set-config datetime=now

特定のカメラで実際にうまくいくかやや不安な面もありますが、お試しくださいませ。

ファイル ファイルの説明
crosslib.tar.gz
atmark-dist_gphoto2.patch.gz
chmodx.sh

福井です。

ご連絡誠に有難うございます。
お教え頂きましたパッチを入れたところ、カメラ認識及びいくつかのコマンドは実行できました。
gphoto2の使い方は調査中ではございますが、Armadilloとしてはこれで大丈夫だと思います。
また何か不明点がでてきましたた、お教え頂けますと幸いです。

福井です。

先日は、gphoto2をご対応頂き誠に有難うございました。

今回、別カメラでの対応が必要となり最新リリースされた
gphoto2の「2.5.10」が必要となってきました。

「2.5.8」では花田さまにパッチ対応頂いたのですが、
同様な対処が必要があると思っております。

そこで、パッチの作成方法を教えて頂けませんでしょうか?
初歩的な質問で申し訳ありませんが、ご教示いただけると助かります。

以上、宜しくお願い致します。