MTP (日本語) - ArchWiki

# MTP (日本語)

関連記事

- USB ストレージデバイス

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 でアクセスすることができます。

Note: UMS (USB Mass Storage) をサポートしていない Android デバイスを使っていて mtpfs が極端に遅かったり正しく動作しないときは、AUR から jmtpfs をインストールすることができます。

## 使用方法

Note: 接続する前に端末のロック (画面ロック) を忘れずに解除してください。そうしないとエラーメッセージが表示されます。

インストール後、複数の MTP ツールを使うことができます。MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用:

    # mtp-detect

パーミッションについてのエラーが表示される場合は、USB システムにアクセスするためには uucp グループにユーザーを追加する必要があることを思い出して下さい。

MTP デバイスに接続するには、以下を使用:

    # mtp-connect

接続が成功すると、`mtp-connect` と一緒に複数のスイッチオプションを使ってデバイスのデータにアクセスすることができます。

以下のように、MTP デバイスにアクセスするのに使える単独のコマンドも存在します:

Warning: コマンドによっては 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

Note: MTP をインストールした後、デバイスを認識させるために再起動が必要なことがあります。

## mtpfs

Warning: 以下の方法が使えない時は gphoto2 や、PCManFM などの gvfs をサポートしているファイルマネージャを用いる必要があります。

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"

Note: sudo を使用するときにパスワードを聞いて欲しくない場合は、USB ストレージデバイスを参照してください。

## jmtpfs

jmtpfs は MTP (Media Transfer Protocol) デバイスへのアクセスを提供する FUSE と libmtp ベースのファイルシステムです。MTP はサポートしているが USB マスストレージはサポートしていない新しい Android デバイスと Linux システム間でのファイルの交換を特に目的にしています。jmtpfs は AUR の jmtpfs でインストール可能です。

デバイスをマウントするには次のコマンドを使用:

    $ jmtpfs ~/mtp

デバイスをアンマウントするには次のコマンドを使用:

    $ fusermount -u ~/mtp

## go-mtpfs

Note: デバイスによってはファイルの書き込みについて go-mtpfs は mtpfs/jmtpfs よりも良いパフォーマンスを発揮します。速度が遅いときは試してみて下さい。
Note: 外付け SD カードが存在する場合は go-mtpfs によるマウントは失敗します。外付け SD カードがあるときは取り除いてからマウントしてみてください。

上記のやり方では芳しい結果が得られない場合、AUR から go-mtpfs-git を試してみて下さい。以下の手順は 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-mtpfs をインストールするか、ソースからビルドすることができます。以下のコマンドは 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 のネイティブアプリケーションです。

gmtp は現在 AUR に入っています。

## 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-tools をインストールしてください。デバイスにファイルを送受信するのに使うことができます。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-oracle をインストールしてください。それからゲスト OS で VirtualBox Guest Additions をインストールします。その後 VM Settings -> USB から Enable USB Controller を有効にしてください。

これで Devices -> USB Devices を通して仮想マシン上の Windows に MTP デバイスを引き渡すことができるようになります。VM の共有ディレクトリを設定するのも忘れずに。

VirtualBox を見て下さい。

Categories:

- Sound (日本語)
- Imaging (日本語)
- Storage (日本語)
- Mobile devices (日本語)