MTP
関連記事
MTP は多くの mp3 プレイヤー (例: Creative Zen) やモバイル端末 (例: Android 3+ デバイス) で使われているメディア転送プロトコル (Media Transfer Protocol) です。"Windows Media" フレームワークの一部であり、Windows Media Player と密接な関係があります。
目次
インストール
MTP のサポートは libmtp によって提供されており、公式リポジトリ の libmtp パッケージでインストールできます。
MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください:
- GVFS を使用するファイルマネージャ (GNOME の Nautilus, Xfce の Thunar) の場合、MTP のサポートは gvfs-mtp を、PTP のサポートは gvfs-gphoto2 をインストールしてください。
- KIO (KDE の Dolphin) を使用するファイルマネージャの場合、kio-mtp をインストールしてください (PTP のサポートはデフォルトで含まれています)。
必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、mtp://[usb:002,013]/
というような URL でアクセスすることができます。
使用方法
インストール後、複数の MTP ツールを使うことができます。MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用:
# mtp-detect
パーミッションについてのエラーが表示される場合は、USB システムにアクセスするためには uucp グループにユーザーを追加する必要があることを思い出して下さい。
MTP デバイスに接続するには、以下を使用:
# mtp-connect
接続が成功すると、mtp-connect
と一緒に複数のスイッチオプションを使ってデバイスのデータにアクセスすることができます。
以下のように、MTP デバイスにアクセスするのに使える単独のコマンドも存在します:
mtp-albumart mtp-emptyfolders mtp-getplaylist mtp-reset mtp-trexist mtp-albums mtp-files mtp-hotplug mtp-sendfile mtp-connect mtp-folders mtp-newfolder mtp-sendtr mtp-delfile mtp-format mtp-newplaylist mtp-thumb mtp-detect mtp-getfile mtp-playlists mtp-tracks
以下のようなメッセージが表示される場合:
Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN. Please report this VID/PID and the device model to the libmtp development team
デバイスが次のリストに含まれているか確認する必要があります: Supported devices list。リストに入っていない場合は、開発チームに報告してください。リストに含まれている場合は、libmtp が少しだけ旧式になっている可能性があります。libmtp によって適切に使用されるように、デバイスを次のファイルに追加することが可能です:
/usr/lib/udev/rules.d/69-libmtp.rules
メディアプレイヤーを使う
Amarok などの音楽プレイヤーで MTP デバイスを使うこともできます。これには /usr/lib/udev/rules.d/51-android.rules
を編集する必要があります (以下では MTP デバイスの例として Galaxy Nexus を使っています):
まず次を実行してデバイスを確認してください:
$ lsusb
以下のように表示されます:
Bus 003 Device 011: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-P7500 [Galaxy Tab 10.1]
上記の場合は以下のようにエントリを記述します:
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666", OWNER="[username]"
記述したら、udev ルールをリロードしてください:
# udevadm control --reload
mtpfs
Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。
Mtpfs は公式リポジトリの mtpfs パッケージでインストールすることが可能です。
- まず
/etc/fuse.conf
を編集して以下の行をアンコメントしてください:
user_allow_other
- デバイスをマウントするには:
$ mtpfs -o allow_other /media/YOURMOUNTPOINT
- デバイスをアンマウントするには:
$ fusermount -u /media/YOURMOUNTPOINT
- デバイスを root でアンマウントするには:
# umount /media/YOURMOUNTPOINT
また、~/.bashrc
に以下を記述すると便利です:
alias android-connect="mtpfs -o allow_other /media/YOURMOUNTPOINT" alias android-disconnect="fusermount -u /media/YOURMOUNTPOINT"
もしくは sudo を使って:
alias android-disconnect="sudo umount -u /media/YOURMOUNTPOINT"
jmtpfs
jmtpfs は MTP (Media Transfer Protocol) デバイスへのアクセスを提供する FUSE と libmtp ベースのファイルシステムです。MTP はサポートしているが USB マスストレージはサポートしていない新しい Android デバイスと Linux システム間でのファイルの交換を特に目的にしています。jmtpfs は AUR の jmtpfsAUR でインストール可能です。
デバイスをマウントするには次のコマンドを使用:
$ jmtpfs ~/mtp
デバイスをアンマウントするには次のコマンドを使用:
$ fusermount -u ~/mtp
go-mtpfs
上記のやり方では芳しい結果が得られない場合、AUR から go-mtpfs-gitAUR を試してみて下さい。以下の手順は Samsung Galaxy Nexus GSM, Asus/Google Nexus 7 (2012年の第一世代), Samsung Galaxy S 3 mini, Google Nexus 4 でテスト済みです (Nexus 4 で動作する mtp ソフトウェアは go-mtpfs だけでした。usb デバッグを有効にして、メディアデバイスとして接続する設定です)。
上のセクションで説明されているように android-udev をインストールすると /usr/lib/udev/rules.d/51-android.rules
が作成されるので、あなたの idVendor と idProduct に適用されるように編集してください。ID は mtp-detect を実行することでわかります。行末にカンマと OWNER="yourusername"
を追加して、ファイルを保存します。
- "fuse" グループにユーザーを追加:
gpasswd -a [user] fuse
- "fuse" グループが存在しない場合は次のコマンドでグループを作成:
groupadd fuse
ログアウトまたは再起動して変更を適用してください。
- "Android" という名前のマウントポイントを作成するために次のコマンドを実行:
mkdir Android
- スマートフォンをマウントするには次を使用:
go-mtpfs Android
- スマートフォンをアンマウントするには:
fusermount -u Android
上の例と同じように .bashrc
にエイリアスを作成すると便利です。
simple-mtpfs
MTP デバイスのためのもうひとつの FUSE ファイルシステムです。mtpfs よりも信頼性が上回っています。AUR から simple-mtpfsAUR をインストールするか、ソースからビルドすることができます。以下のコマンドは root で実行しないで下さい。
MTP デバイスをリストアップするには次を実行:
$ simple-mtpfs --list-devices
MTP デバイス (この例ではデバイス0) をマウントするには次を実行
$ simple-mtpfs /path/to/your/mount/point
アンマウントするには次を実行:
$ fusermount -u /path/to/your/mount/point
gvfs-mtp のトラブルシューティング
gvfs-mtp パッケージをインストールしても、デバイスがファイルマネージャに表示されない場合、デバイスが自動マウントされるように udev ルールを書く必要があるかもしれません。
デバイスを接続して、vendor-id と product-id をそれぞれ取得してください:
$ lsusb Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920 (...)
ID の文字の後の2つの数字が vendorID : productID です。
ID がわかったら udev ルールを作成します。例:
# nano /usr/lib/udev/rules.d/51-android.rules
ルールの中身は以下のようにしてください:
ATTR{idVendor}=="YOUR VENDOR ID HERE", ATTR{idProduct}=="YOUR PRODUCT ID HERE", SYMLINK+="libmtp", MODE="660", ENV{ID_MTP_DEVICE}="1"
udev ルールをリロードします:
# udevadm control --reload
そしてシステムを再起動してください。これで (Thunar などの) ファイルマネージャは MTP デバイスを自動でマウントできるようになったはずです [1]。
kio-mtp のトラブルシューティング
"ファイルマネージャで開く"が使えない場合は、/usr/share/apps/solid/actions/solid_mtp.desktop
ファイルを編集することで問題を解決できます。
次の行を:
Exec=kioclient exec mtp:udi=%i/
以下のように変更してください:
Exec=dolphin "mtp:/"
GNOME gMTP
gMTP は MTP のアクセスに使用する Gnome のネイティブアプリケーションです。
Android
AirDroid
AirDroid はウェブブラウザからファイルにアクセスできるようにする Android アプリです。
FTP
Arch でローカル FTP サーバーを動かしてスマートフォンから接続します。Android には多数の FTP クライアントが存在します。
もしくは、スマートフォン上で FTP サーバーを動作させて Arch から接続します。
アプリケーション一覧/インターネット#FTP を見て下さい。
SSH サーバー
Android には多数の SSH サーバーがあります。scp
コマンドを使ってファイルを転送することができます。SSH を参照。
Samba
Samba を見て下さい。
ADB
ADB (Android Debug Bridge) は Android SDK に含まれています。AUR から android-sdk-platform-toolsAUR をインストールしてください。デバイスにファイルを送受信するのに使うことができます。Android#実機に接続 - Android Debug Bridge (ADB) を見て下さい。
- ファイルをデバイスに送信するには次のコマンドを使用:
$ adb push <what-to-copy> <where-to-place>
- ファイルを受信するには:
$ adb pull <what-to-pull> <where-to-place>
VirtualBox 上の Microsoft Windows
まず、ホスト側で、公式リポジトリから virtualbox を、AUR から virtualbox-ext-oracleAUR をインストールしてください。それからゲスト OS で VirtualBox Guest Additions をインストールします。その後 VM Settings -> USB から Enable USB Controller を有効にしてください。
これで Devices -> USB Devices を通して仮想マシン上の Windows に MTP デバイスを引き渡すことができるようになります。VM の共有ディレクトリを設定するのも忘れずに。
VirtualBox を見て下さい。