「MTP」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(同期)
(3人の利用者による、間の8版が非表示)
4行目: 4行目:
 
[[Category:携帯端末]]
 
[[Category:携帯端末]]
 
[[en:MTP]]
 
[[en:MTP]]
  +
[[fa:MTP]]
 
[[ru:MTP]]
 
[[ru:MTP]]
[[zh-CN:MTP]]
+
[[zh-hans:MTP]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|USB ストレージデバイス}}
 
{{Related|USB ストレージデバイス}}
 
{{Related articles end}}
 
{{Related articles end}}
MTP は多くの mp3 プレイヤー (例: Creative Zen) やモバイル端末 (例: Android 3+ デバイス) で使われているメディア転送プロトコル (Media Transfer Protocol) です。"Windows Media" フレームワークの一部であり、Windows Media Player と密接な関係があります。
+
MTP は多くの mp3 プレイヤー (例: Creative Zen) やモバイル端末 (例: Windows Phone 7/8/10 デバイスや最新の Android デバイス) で使われているメディア転送プロトコル (Media Transfer Protocol) です。"Windows Media" フレームワークの一部であり、Windows Media Player と密接な関係があります。
   
 
== インストール ==
 
== インストール ==
   
  +
=== 機能性 ===
MTP のサポートは [http://libmtp.sourceforge.net/ libmtp] によって提供されており、[[公式リポジトリ]] の {{Pkg|libmtp}} パッケージで[[インストール]]できます。
 
  +
  +
Linux の MTP サポートは {{Pkg|libmtp}} パッケージを[[インストール]]することで得られます。libmtp をインストールするだけでデバイスにアクセスできますが、特定のデバイスタイプで便利な機能 (例: ファイルマネージャ) と互換性を提供するパッケージが多数存在します。転送速度を向上させるパッケージもあります。
  +
  +
以下のパッケージはどれも [[Wikipedia:Filesystem in Userspace]] で実装されています:
  +
  +
* {{Pkg|mtpfs}}
  +
* {{Pkg|android-file-transfer}} - ミニマルな UI が付属している MTP クライアント
  +
* {{AUR|jmtpfs}} - Android 4 以降の新しいデバイスで上手く動作します
  +
* {{AUR|go-mtpfs-git}} - Android 3 以降の新しいデバイスで上手く動作します
  +
* {{AUR|simple-mtpfs}}
  +
  +
上記の全てが {{ic|libmtp}} よりも優れた機能とパフォーマンスを誇っています。USB デバイスは多数存在するので、まずどれか一番適しているか試すことから始めて下さい。
  +
  +
{{Warning|{{ic|libmtp}} は新しい Android デバイスを正しく扱えません。転送が止まったりリモートファイルシステムを使用した際に問題が発生したり、転送速度が劣化する可能性があります。さらに、USB ケーブルが破損していた場合、libmtp を使用するとクラッシュしたりデバイスを切断するまで永遠にフリーズするかもしれません。可能であれば USB マスストレージでデバイスと接続するか、({{aur|adbfs-rootless-git}} など) [[ADB]] を使用してファイルを転送することを推奨します。大抵のデバイスで MTP よりも高いパフォーマンスを得ることができ Android 固有の操作を行うことが可能です (APK のインストール、パッケージの管理、データのバックアップ、シェルへのアクセスなど)。}}
  +
  +
{{Tip|MTP 関連のパッケージをインストールした後はコンピュータを再起動することを推奨します。}}
  +
  +
=== ファイルマネージャと統合 ===
   
 
MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください:
 
MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください:
   
* [[GVFS|GVFS]] を使用するファイルマネージャ (GNOME の [[Nautilus|Nautilus]], Xfce の [[Thunar|Thunar]]) の場合、MTP のサポートは {{Pkg|gvfs-mtp}} を、PTP のサポートは {{Pkg|gvfs-gphoto2}} をインストールしてください。
+
* [[GVFS]] を使用するファイルマネージャ (GNOME の [[Nautilus]], Xfce の [[Thunar]]) の場合、MTP のサポートは {{Pkg|gvfs-mtp}} を、PTP のサポートは {{Pkg|gvfs-gphoto2}} をインストールしてください。
* KIO (KDE の Dolphin) を使用するファイルマネージャの場合、{{Pkg|kio-mtp}} をインストールしください (PTPサポトはデフォルトで含まれています)。
+
* KIO (KDE の Dolphin) を使用するファイルマネージャの場合、MTP サポートは {{Pkg|kio-extras}} に含まれています (Dolphin依存パッケ)。
   
 
必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、{{ic|mtp://[usb:002,013]/}} というような URL でアクセスすることができます。
 
必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、{{ic|mtp://[usb:002,013]/}} というような URL でアクセスすることができます。
 
{{Note|UMS (USB Mass Storage) をサポートしていない Android デバイスを使っていて {{Pkg|mtpfs}} が極端に遅かったり正しく動作しないときは、AUR から {{AUR|jmtpfs}} をインストールすることができます。}}
 
   
 
== 使用方法 ==
 
== 使用方法 ==
   
  +
まず最初にマウントポイントのディレクトリを作成する必要があります。以下の例では {{ic|~/mnt}} ディレクトリを使っています。また、コンピュータに接続する前にデバイスのロック画面を解除するようにしてください。
{{Note|接続する前に端末のロック (画面ロック) を忘れずに解除してください。そうしないとエラーメッセージが表示されます。}}
 
  +
インストール後、複数の MTP ツールを使うことができます。MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用:
 
  +
FUSE のマウントは基本的に {{ic|fusermount -u ''mountpoint''}} でアンマウントすることができます。
  +
  +
=== libmtp ===
  +
  +
MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用:
 
# mtp-detect
 
# mtp-detect
パーミッションについてのエラーが表示される場合USBムにアクセスするためには uucp ループにユーザー追加する必要があることを思い出して下さい
+
エラーが表示される場合、[[#libmtp 2|トラブルューィン]]参照
  +
  +
{{Note|通常ユーザーは {{ic|uucp}} グループに属している必要があります。}}
   
 
MTP デバイスに接続するには、以下を使用:
 
MTP デバイスに接続するには、以下を使用:
37行目: 61行目:
   
 
以下のように、MTP デバイスにアクセスするのに使える単独のコマンドも存在します:
 
以下のように、MTP デバイスにアクセスするのに使える単独のコマンドも存在します:
{{Warning|コマンドによっては MTP デバイスに悪影響を与えることがあるので注意してください。}}
 
   
mtp-albumart mtp-emptyfolders mtp-getplaylist mtp-reset mtp-trexist
+
mtp-albumart mtp-emptyfolders mtp-getplaylist mtp-reset mtp-trexist
mtp-albums mtp-files mtp-hotplug mtp-sendfile
+
mtp-albums mtp-files mtp-hotplug mtp-sendfile
mtp-connect mtp-folders mtp-newfolder mtp-sendtr
+
mtp-connect mtp-folders mtp-newfolder mtp-sendtr
mtp-delfile mtp-format mtp-newplaylist mtp-thumb
+
mtp-delfile mtp-format mtp-newplaylist mtp-thumb
mtp-detect mtp-getfile mtp-playlists mtp-tracks
+
mtp-detect mtp-getfile mtp-playlists mtp-tracks
   
  +
{{Warning|コマンドによっては MTP デバイスに悪影響を与えることがあるので注意してください。}}
以下のようなメッセージが表示される場合:
 
   
  +
=== mtpfs ===
Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN.
 
Please report this VID/PID and the device model to the libmtp development team
 
   
  +
{{Note|以下の方法が使えない時は [[デジタルカメラ#libgphoto2|gphoto2]] や、[[PCManFM]] などの gvfs をサポートしているファイルマネージャを用いる必要があります。}}
デバイスが次のリストに含まれているか確認する必要があります: [http://sourceforge.net/p/libmtp/code/ci/HEAD/tree/src/music-players.h Supported devices list]。リストに入っていない場合は、開発チームに報告してください。リストに含まれている場合は、libmtp が少しだけ旧式になっている可能性があります。libmtp によって適切に使用されるように、デバイスを次のファイルに追加することが可能です:
 
/usr/lib/udev/rules.d/69-libmtp.rules
 
 
== メディアプレイヤーを使う ==
 
 
Amarok などの音楽プレイヤーで MTP デバイスを使うこともできます。これには {{ic|/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|以下の方法が使えない時は [[Digital_Cameras#libgphoto2|gphoto2]] や、[[PCManFM|PCManFM]] などの gvfs をサポートしているファイルマネージャを用いる必要があります。}}
 
   
 
Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。
 
Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。
79行目: 81行目:
   
 
* デバイスをマウントするには:
 
* デバイスをマウントするには:
$ mtpfs -o allow_other /media/YOURMOUNTPOINT
+
$ mtpfs -o allow_other ~/mnt
 
* デバイスをアンマウントするには:
 
* デバイスをアンマウントするには:
$ fusermount -u /media/YOURMOUNTPOINT
+
$ fusermount -u ~/mnt
 
* デバイスを root でアンマウントするには:
 
* デバイスを root でアンマウントするには:
# umount /media/YOURMOUNTPOINT
+
# umount ~/mnt
   
 
また、{{ic|~/.bashrc}} に以下を記述すると便利です:
 
また、{{ic|~/.bashrc}} に以下を記述すると便利です:
90行目: 92行目:
 
もしくは sudo を使って:
 
もしくは sudo を使って:
 
alias android-disconnect="sudo umount -u /media/YOURMOUNTPOINT"
 
alias android-disconnect="sudo umount -u /media/YOURMOUNTPOINT"
{{Note|sudo を使用するときにパスワードを聞いて欲しくない場合は、[[USB storage devices|USB ストレージデバイス]]を参照してください。}}
+
{{Note|sudo を使用するときにパスワードを聞いて欲しくない場合は、[[USB ストレージデバイス]]を参照してください。}}
   
== jmtpfs ==
+
=== jmtpfs ===
   
[http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/ jmtpfs] は MTP (Media Transfer Protocol) デバイスへのアクセスを提供する FUSE と libmtp ベースのファイルシステムです。MTP はサポートしているが USB マスストレージはサポートしていない新しい Android デバイスと Linux システム間でのファイルの交換を特に目的にしています。jmtpfs は [[AUR|AUR]] の {{AUR|jmtpfs}} でインストール可能です。
+
[http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/ jmtpfs] は MTP (Media Transfer Protocol) デバイスへのアクセスを提供する FUSE と libmtp ベースのファイルシステムです。MTP はサポートしているが USB マスストレージはサポートしていない新しい Android デバイスと Linux システム間でのファイルの交換を特に目的にしています。jmtpfs は [[AUR]] の {{AUR|jmtpfs}} でインストール可能です。
   
 
デバイスをマウントするには次のコマンドを使用:
 
デバイスをマウントするには次のコマンドを使用:
102行目: 104行目:
 
$ fusermount -u ~/mtp
 
$ fusermount -u ~/mtp
   
== go-mtpfs ==
+
=== go-mtpfs ===
   
  +
{{Note|
{{Note|デバイスによってはファイルの書き込みについて go-mtpfs は mtpfs/jmtpfs よりも良いパフォーマンスを発揮します。速度が遅いときは試してみて下さい。}}
 
{{Note|外付け SD カードが存在する場合は go-mtpfs トは失敗します。外付け SD カードあるときは取り除いてからマウントしてみてください。}}
+
* デバイスによってファイルの書き込みについて go-mtpfs は mtpfs/jmtpfs りも良いパフォーマンスを発揮します。速度遅いときはしてみてさい。
  +
* 外付け SD カードが存在する場合は go-mtpfs によるマウントは失敗します。外付け SD カードがあるときは取り除いてからマウントしてみてください。
  +
}}
   
上記のやり方では芳しい結果が得られない場合、[[AUR|AUR]] から {{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 デバッグを有効にして、メディアデバイスとして接続する設定です)。
+
上記のやり方では芳しい結果が得られない場合、[[AUR]] から {{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 デバッグを有効にして、メディアデバイスとして接続する設定です)。
   
上のセクションで説明されているように {{Pkg|android-udev}} をインストールすると {{ic|/usr/lib/udev/rules.d/51-android.rules}} が作成されるのあなたの idVendor と idProduct に適用されるように編集してください。ID は mtp-detect を実行することでわかります。行末にカンマと {{ic|<nowiki>OWNER="yourusername"</nowiki>}} を追加して、ファイルを保存します。
+
{{Pkg|android-udev}} をインストールしてから {{ic|/etc/udev/rules.d/51-android.rules}} を編集し、''mtp-detect'' 確認できるあなたの idVendor と idProduct を使うようにしてください。行末にカンマと {{ic|<nowiki>OWNER="<user>"</nowiki>}} を追加して、ファイルを保存します。
   
 
* "fuse" グループにユーザーを追加:
 
* "fuse" グループにユーザーを追加:
gpasswd -a [user] fuse
+
# gpasswd -a [user] fuse
   
 
* "fuse" グループが存在しない場合は次のコマンドでグループを作成:
 
* "fuse" グループが存在しない場合は次のコマンドでグループを作成:
groupadd fuse
+
# groupadd fuse
   
 
ログアウトまたは再起動して変更を適用してください。
 
ログアウトまたは再起動して変更を適用してください。
   
 
* "Android" という名前のマウントポイントを作成するために次のコマンドを実行:
 
* "Android" という名前のマウントポイントを作成するために次のコマンドを実行:
mkdir Android
+
$ mkdir Android
   
 
* スマートフォンをマウントするには次を使用:
 
* スマートフォンをマウントするには次を使用:
go-mtpfs Android
+
$ go-mtpfs Android
   
 
* スマートフォンをアンマウントするには:
 
* スマートフォンをアンマウントするには:
fusermount -u Android
+
$ fusermount -u Android
   
 
上の例と同じように {{ic|.bashrc}} にエイリアスを作成すると便利です。
 
上の例と同じように {{ic|.bashrc}} にエイリアスを作成すると便利です。
   
== simple-mtpfs ==
+
=== simple-mtpfs ===
   
MTP デバイスのためのもうひとつの FUSE ファイルシステムです。{{Pkg|mtpfs}} よりも信頼性が上回っています。AUR から {{AUR|simple-mtpfs}} をインストールするか、ソースからビルドすることができます。以下のコマンドは root で実行しないで下さい。
+
MTP デバイスのためのの FUSE ファイルシステムです。{{Pkg|mtpfs}} よりも信頼性が上回っています。AUR から {{AUR|simple-mtpfs}} をインストールするか、ソースからビルドすることができます。以下のコマンドは root で実行しないで下さい。
   
 
MTP デバイスをリストアップするには次を実行:
 
MTP デバイスをリストアップするには次を実行:
138行目: 142行目:
 
$ simple-mtpfs --list-devices
 
$ simple-mtpfs --list-devices
   
MTP デバイス (この例ではデバイス0) をマウントするには次を実行
+
MTP デバイス (この例では1番目のデバイス) をマウントするには次を実行
   
$ simple-mtpfs /path/to/your/mount/point
+
$ simple-mtpfs --device 1 ~/mnt
   
 
アンマウントするには次を実行:
 
アンマウントするには次を実行:
   
$ fusermount -u /path/to/your/mount/point
+
$ fusermount -u ~/mnt
   
  +
=== Android File Transfer ===
== gvfs-mtp のトラブルシューティング ==
 
   
  +
;FUSE インターフェイス
{{Pkg|gvfs-mtp}} パッケージをインストールしても、デバイスがファイルマネージャに表示されない場合、デバイスが自動マウントされるように udev ルールを書く必要があるかもしれません。
 
   
  +
デバイスを {{ic|~/my-device}} にマウント:
デバイスを接続して、vendor-id と product-id をそれぞれ取得してください:
 
   
  +
$ mkdir ~/my-device
  +
$ aft-mtp-mount ~/my-device
  +
  +
アルバムアートを表示したい場合、{{ic|albumart.xxx}} という名前を付けて一番最初にフォルダに配置してください。それから他のファイルをコピーしてください。また、fuse では ui/cli ファイル転送よりも7-8倍転送が遅くなるので注意してください。
  +
  +
;Qt ユーザーインターフェイス
  +
  +
アプリケーションを起動して、コピー先のフォルダを選択してツールバーのボタンをクリックしてください。利用できるオプション: ''Upload Album'', ''Upload Directory'', ''Upload Files''。''Upload Album'' はアルバムカバーのディレクトリを検索して、適当なカバーを設定します。
  +
  +
=== メディアプレイヤー ===
  +
  +
Amarok などの音楽プレイヤーで MTP デバイスを使うこともできます。これには {{ic|/etc/udev/rules.d/51-android.rules}} を編集する必要があります (以下では MTP デバイスの例として Galaxy Nexus を使っています):
  +
  +
まず次を実行してデバイスを確認してください:
 
$ lsusb
 
$ lsusb
  +
以下のように表示されます:
Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920
 
  +
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 をインストールした後、デバイスを認識させるために再起動が必要なことがあります。}}
ID の文字の後の2つの数字が ''vendorID'' : ''productID'' です。
 
   
  +
== トラブルシューティング ==
ID がわかったら udev ルールを作成します。例:
 
   
  +
=== libmtp ===
# 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"
 
   
  +
Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN.
udev ルールをリロードします:
 
  +
Please report this VID/PID and the device model to the libmtp development team
   
  +
デバイスが次のリストに含まれているか確認する必要があります: [http://sourceforge.net/p/libmtp/code/ci/HEAD/tree/src/music-players.h Supported devices list]。リストに入っていない場合は、開発チームに報告してください。リストに含まれている場合は、libmtp が少しだけ旧式になっている可能性があります。libmtp によって適切に使用されるように、デバイスを次のファイルに追加することが可能です:
# udevadm control --reload
 
  +
/usr/lib/udev/rules.d/69-libmtp.rules
   
  +
==== Unable to enumerate USB device ====
そしてシステムを再起動してください。これで (Thunar などの) ファイルマネージャは MTP デバイスを自動でマウントできるようになったはずです [https://bbs.archlinux.org/viewtopic.php?id=180719]。
 
   
  +
システムログ ({{ic|journalctl}}) に以下のようなメッセージが表示される場合:
== kio-mtp のトラブルシューティング ==
 
   
  +
usb usb4-port2: unable to enumerate USB device
"ファイルマネージャで開く"が使えない場合は、{{ic|/usr/share/apps/solid/actions/solid_mtp.desktop}} ファイルを編集することで問題を解決できます。
 
   
  +
以下のコマンドを実行してみてください [https://bbs.archlinux.org/viewtopic.php?pid=1087323#p1087323]:
次の行を:
 
Exec=kioclient exec mtp:udi=%i/
 
以下のように変更してください:
 
Exec=dolphin "mtp:/"
 
   
  +
# modprobe -vr uhci_hcd
== GNOME gMTP ==
 
  +
# modprobe -va ohci_hcd
  +
# modprobe -va uhci_hcd
   
  +
上記のコマンドで直る場合、以下の内容で {{ic|/etc/modprobe.d/usb_hci_order.conf}} を作成してください:
gMTP は MTP のアクセスに使用する Gnome のネイティブアプリケーションです。
 
   
  +
# create a dependency on ohci for uhci, which fixes problems
{{Pkg|gmtp}} は現在 [[AUR|AUR]] に入っています。
 
  +
# with external usb devices not showing up
  +
#
  +
softdep uhci_hcd pre: ohci_hcd
   
== Android ==
+
=== gvfs-mtp ===
   
  +
{{Pkg|gvfs-mtp}} パッケージをインストールしても、デバイスがファイルマネージャに表示されない場合、デバイスが自動マウントされるように udev ルールを書く必要があるかもしれません。
=== AirDroid ===
 
   
  +
デバイスを接続して、vendor-id と product-id をそれぞれ取得してください:
AirDroid はウェブブラウザからファイルにアクセスできるようにする Android アプリです。
 
   
  +
$ lsusb
=== FTP ===
 
  +
Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920
  +
(...)
   
  +
ID の文字の後の2つの数字が ''vendorID'' : ''productID'' です。
Arch でローカル FTP サーバーを動かしてスマートフォンから接続します。Android には多数の FTP クライアントが存在します。
 
   
  +
ID がわかったら udev ルールを作成します。例:
もしくは、スマートフォン上で FTP サーバーを動作させて Arch から接続します。
 
   
  +
# nano /etc/udev/rules.d/51-android.rules
[[List of Applications/Internet#FTP|アプリケーション一覧/インターネット#FTP]] を見て下さい。
 
   
  +
ルールの中身は以下のようにしてください:
=== SSH サーバー ===
 
   
  +
ATTR{idVendor}=="YOUR VENDOR ID HERE", ATTR{idProduct}=="YOUR PRODUCT ID HERE", SYMLINK+="libmtp", MODE="660", ENV{ID_MTP_DEVICE}="1"
Android には多数の SSH サーバーがあります。{{ic|scp}} コマンドを使ってファイルを転送することができます。[[SSH|SSH]] を参照。
 
   
  +
udev ルールをリロードします:
=== Samba ===
 
   
  +
# udevadm control --reload
[[Samba|Samba]] を見て下さい。
 
   
  +
そしてシステムを再起動してください。これで (Thunar などの) ファイルマネージャは MTP デバイスを自動でマウントできるようになったはずです [https://bbs.archlinux.org/viewtopic.php?id=180719]。
=== ADB ===
 
   
  +
=== jmtpfs ===
ADB (Android Debug Bridge) は Android SDK に含まれています。[[AUR|AUR]] から {{Aur|android-sdk-platform-tools}} をインストールしてください。デバイスにファイルを送受信するのに使うことができます。[[Android#実機に接続 - Android Debug Bridge (ADB)|Android#実機に接続 - Android Debug Bridge (ADB)]] を見て下さい。
 
   
  +
jmtpfs でマウントは成功するがデバイス上のファイルにアクセスしようとすると以下のエラーが表示される場合:
* ファイルをデバイスに送信するには次のコマンドを使用:
 
$ adb push ''<what-to-copy>'' ''<where-to-place>''
 
   
  +
cannot access <mount-point>: Input/output error
* ファイルを受信するには:
 
$ adb pull ''<what-to-pull>'' ''<where-to-place>''
 
   
  +
上記のエラーはセキュリティ機能が原因です。スマートフォンがロック画面でロックされているときに MTP は使用できません。ロックを解除してもういちど試してみてください。
=== VirtualBox 上の Microsoft Windows ===
 
   
  +
=== kio-mtp ===
まず、ホスト側で、公式リポジトリから {{Pkg|virtualbox}} を、[[AUR|AUR]] から {{Aur|virtualbox-ext-oracle}} を[[インストール]]してください。それからゲスト OS で VirtualBox Guest Additions をインストールします。その後 ''VM Settings -> USB'' から ''Enable USB Controller'' を有効にしてください。
 
   
  +
"ファイルマネージャで開く"が使えない場合は、{{ic|/usr/share/apps/solid/actions/solid_mtp.desktop}} ファイルを編集することで問題を解決できます。
これで ''Devices -> USB Devices'' を通して仮想マシン上の Windows に MTP デバイスを引き渡すことができるようになります。VM の共有ディレクトリを設定するのも忘れずに。
 
   
  +
次の行を:
[[VirtualBox|VirtualBox]] を見て下さい。
 
  +
Exec=kioclient exec mtp:udi=%i/
  +
以下のように変更してください:
  +
Exec=dolphin "mtp:/"

2017年9月26日 (火) 23:07時点における版

関連記事

MTP は多くの mp3 プレイヤー (例: Creative Zen) やモバイル端末 (例: Windows Phone 7/8/10 デバイスや最新の Android デバイス) で使われているメディア転送プロトコル (Media Transfer Protocol) です。"Windows Media" フレームワークの一部であり、Windows Media Player と密接な関係があります。

インストール

機能性

Linux の MTP サポートは libmtp パッケージをインストールすることで得られます。libmtp をインストールするだけでデバイスにアクセスできますが、特定のデバイスタイプで便利な機能 (例: ファイルマネージャ) と互換性を提供するパッケージが多数存在します。転送速度を向上させるパッケージもあります。

以下のパッケージはどれも Wikipedia:Filesystem in Userspace で実装されています:

上記の全てが libmtp よりも優れた機能とパフォーマンスを誇っています。USB デバイスは多数存在するので、まずどれか一番適しているか試すことから始めて下さい。

警告: libmtp は新しい Android デバイスを正しく扱えません。転送が止まったりリモートファイルシステムを使用した際に問題が発生したり、転送速度が劣化する可能性があります。さらに、USB ケーブルが破損していた場合、libmtp を使用するとクラッシュしたりデバイスを切断するまで永遠にフリーズするかもしれません。可能であれば USB マスストレージでデバイスと接続するか、(adbfs-rootless-gitAUR など) ADB を使用してファイルを転送することを推奨します。大抵のデバイスで MTP よりも高いパフォーマンスを得ることができ Android 固有の操作を行うことが可能です (APK のインストール、パッケージの管理、データのバックアップ、シェルへのアクセスなど)。
ヒント: MTP 関連のパッケージをインストールした後はコンピュータを再起動することを推奨します。

ファイルマネージャと統合

MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください:

  • GVFS を使用するファイルマネージャ (GNOME の Nautilus, Xfce の Thunar) の場合、MTP のサポートは gvfs-mtp を、PTP のサポートは gvfs-gphoto2 をインストールしてください。
  • KIO (KDE の Dolphin) を使用するファイルマネージャの場合、MTP サポートは kio-extras に含まれています (Dolphin の依存パッケージ)。

必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、mtp://[usb:002,013]/ というような URL でアクセスすることができます。

使用方法

まず最初にマウントポイントのディレクトリを作成する必要があります。以下の例では ~/mnt ディレクトリを使っています。また、コンピュータに接続する前にデバイスのロック画面を解除するようにしてください。

FUSE のマウントは基本的に fusermount -u mountpoint でアンマウントすることができます。

libmtp

MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用:

# mtp-detect

エラーが表示される場合、トラブルシューティングを参照。

ノート: 通常ユーザーは 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
警告: コマンドによっては MTP デバイスに悪影響を与えることがあるので注意してください。

mtpfs

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

Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。

Mtpfs は公式リポジトリmtpfs パッケージでインストールすることが可能です。

  • まず /etc/fuse.conf を編集して以下の行をアンコメントしてください:
user_allow_other
  • デバイスをマウントするには:
$ mtpfs -o allow_other ~/mnt
  • デバイスをアンマウントするには:
$ fusermount -u ~/mnt
  • デバイスを root でアンマウントするには:
# umount ~/mnt

また、~/.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"
ノート: sudo を使用するときにパスワードを聞いて欲しくない場合は、USB ストレージデバイスを参照してください。

jmtpfs

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

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

$ jmtpfs ~/mtp

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

$ fusermount -u ~/mtp

go-mtpfs

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

上記のやり方では芳しい結果が得られない場合、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 をインストールしてから /etc/udev/rules.d/51-android.rules を編集し、mtp-detect で確認できるあなたの idVendor と idProduct を使うようにしてください。行末にカンマと OWNER="<user>" を追加して、ファイルを保存します。

  • "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 デバイス (この例では1番目のデバイス) をマウントするには次を実行

$ simple-mtpfs --device 1 ~/mnt

アンマウントするには次を実行:

$ fusermount -u ~/mnt

Android File Transfer

FUSE インターフェイス

デバイスを ~/my-device にマウント:

$ mkdir ~/my-device
$ aft-mtp-mount ~/my-device

アルバムアートを表示したい場合、albumart.xxx という名前を付けて一番最初にフォルダに配置してください。それから他のファイルをコピーしてください。また、fuse では ui/cli ファイル転送よりも7-8倍転送が遅くなるので注意してください。

Qt ユーザーインターフェイス

アプリケーションを起動して、コピー先のフォルダを選択してツールバーのボタンをクリックしてください。利用できるオプション: Upload Album, Upload Directory, Upload FilesUpload Album はアルバムカバーのディレクトリを検索して、適当なカバーを設定します。

メディアプレイヤー

Amarok などの音楽プレイヤーで MTP デバイスを使うこともできます。これには /etc/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
ノート: MTP をインストールした後、デバイスを認識させるために再起動が必要なことがあります。

トラブルシューティング

libmtp

未知のデバイス

以下のようなメッセージが表示される場合:

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

Unable to enumerate USB device

システムログ (journalctl) に以下のようなメッセージが表示される場合:

usb usb4-port2: unable to enumerate USB device

以下のコマンドを実行してみてください [1]:

# modprobe -vr uhci_hcd
# modprobe -va ohci_hcd
# modprobe -va uhci_hcd

上記のコマンドで直る場合、以下の内容で /etc/modprobe.d/usb_hci_order.conf を作成してください:

# create a dependency on ohci for uhci, which fixes problems
# with external usb devices not showing up
#
softdep uhci_hcd pre: ohci_hcd

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 /etc/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 デバイスを自動でマウントできるようになったはずです [2]

jmtpfs

jmtpfs でマウントは成功するがデバイス上のファイルにアクセスしようとすると以下のエラーが表示される場合:

cannot access <mount-point>: Input/output error

上記のエラーはセキュリティ機能が原因です。スマートフォンがロック画面でロックされているときに MTP は使用できません。ロックを解除してもういちど試してみてください。

kio-mtp

"ファイルマネージャで開く"が使えない場合は、/usr/share/apps/solid/actions/solid_mtp.desktop ファイルを編集することで問題を解決できます。

次の行を:

Exec=kioclient exec mtp:udi=%i/

以下のように変更してください:

Exec=dolphin "mtp:/"