2012年2月11日土曜日

[Linux]MTPってなかなかに扱いが難しいのねぇ

A500はPCとUSBケーブルで接続すると、MTPモードでファイルをやり取りするらしいと。
それについては買ってすぐ把握してたんですが、Amarokからファイルをうまく配置できないことが気になっていました。

AmarokはMTPクライアントとしてMTPデバイスに楽曲ファイルを転送できるんですが、AmarokからA500にファイルを渡すと/Musicフォルダに楽曲ファイルを直置きしよるんですよね。
できれば
/Music/Artist/Album/Track.ext
って置いて欲しいところ。同名のトラックとかどうすんのよ、と。

で、MTPのことなんて全然知らなかったので、これはAmarok側の実装の問題なのだろうとか思っていて。

ところがどっこい! 悪いのはAmarokではなくA500でしたOrz

Amarokからしか転送したことなかったので、他アプリからも試してみようと。MTP接続できるアプリというとどうやらRythmBoxが行けるらしいってことでこいつをインストールして実行。
が、mtpfsコマンドがないとマウントできないのか、さっぱり反応しない。
しゃーねーのでmtp-どうたらってコマンドを試してみるか−って思ったら入ってない。

おかしい、libmtpはインストールしてあるのに・・・? とか思って
$ yum whatprovides "*/mtp-detect"
で調べてみたところ、「libmtp-sample」ってなパッケージに入っているとか。

気付かねぇ、気付かねぇよそれ!

なにはともあれ、そいつを入れて色々と試す。
悲しいかなMTPコマンド群、-hオプションとかは存在せず、manも存在せずなので結構勘でやるしかなく。しかもコマンド叩くと必ず接続してるMTPデバイスと通信始めて、そんでからコマンド構文にエラーがあるとUsageを出すという仕様なので事前に調べておくほうが幸せに。
結構通信を確立するまでに時間掛かるんだよね。

で、色々とコマンドを叩いて解ったことは、
「A500はMTPデバイスではあるけれどアルバム情報とかをMTPクライアントとやり取りはできない」
ということ。

mtp-albumartってコマンドがあって、それで既存のトラックにアルバムアートを設定できるんだけれど、このコマンドが画像転送には成功するけれどアルバム情報更新に失敗する。また、mtp-albumってコマンドも、実行しても「アルバム情報がない」っていってエラーに。

このことから察するに、Amarokは楽曲転送でアルバム情報とかも恐らく渡しつつアルバムアートも渡しつつ(Amarok MTPとかでググったらアルバムアートは転送しているような記事がちらほら)良きに計らってくれているようだ。

実際、mtp-connectコマンドでもってファイルを送信するとうまく送信できる。MTPクライアントからMTPデバイスを見ると、フォルダって番号で管理されててフラットに見えるんだね。ファイル送信でフォルダ名じゃなくてフォルダ管理番号を指定するとはなかなか斬新。

逆に、フォルダ名指定しての送信はどうやってもうまくいかず。ファイル自体は送信されるけどフォルダ情報は完全に無視された。なるほどAmarokからファイルを送信しても悲しい結果になるわけだわ。

つまるところ、他のMTPクライアントで、かつミュージックプレイヤーであれば問題なく転送されるんじゃなかろうか。といっても試せる端末は何もないんだけれど。J3はMTPモードで接続できたんだよなぁ。ほんと、惜しい端末を壊してしまった。

このことから、多分A500はWindowsと接続してもうまく転送はできないものと思われる。まぁWindowsにはドライバが提供されてて、USBマスストレージとして見えるようだから問題にはならないか?

個人的にはMTPの仕組みは気に入ってるんだけどなー。端末によって挙動が違うってことなのね。
このあたり、他のMTP接続可能なAndroid端末のことも気になるさね。
うーん、Android bug flagsとか立ってるのが問題なのかなぁ。 デバッグモードをOFFにしていたらまた挙動が違う?
そのあたりは今度試しておこう。変わらない気はするけれど。

しっかし、アルバム情報とかのやり取りがちゃんと出来る端末だったらAmarokと同期とかしやすかったろうになー。惜しい!