「MTP」の版間の差分
細 (→FTP) |
|||
13行目: | 13行目: | ||
== インストール == |
== インストール == |
||
+ | === 機能性 === |
||
− | MTP のサポートは [http://libmtp.sourceforge.net/ libmtp] によって提供されており、[[公式リポジトリ]] の {{Pkg|libmtp}} パッケージで[[インストール]]できます。 |
||
+ | |||
+ | Linux の MTP サポートは {{Pkg|libmtp}} パッケージを[[インストール]]することで得られます。libmtp をインストールするだけでデバイスにアクセスできますが、特定のデバイスタイプで便利な機能 (例: ファイルマネージャ) と互換性を提供するパッケージが多数存在します。転送速度を向上させるパッケージもあります。 |
||
+ | |||
+ | 以下のパッケージはどれも [[Wikipedia:Filesystem in Userspace]] で実装されています: |
||
+ | |||
+ | * {{Pkg|mtpfs}} |
||
+ | * {{AUR|jmtpfs}} - Android 4 以降の新しいデバイスで上手く動作します |
||
+ | * {{AUR|go-mtpfs-git}} - Android 3 以降の新しいデバイスで上手く動作します |
||
+ | * {{AUR|simple-mtpfs}} |
||
+ | * {{AUR|android-file-transfer}} - ミニマルな UI が付属している MTP クライアント |
||
+ | |||
+ | 上記の全てが {{ic|libmtp}} よりも優れた機能とパフォーマンスを誇っています。USB デバイスは多数存在するので、まずどれか一番適しているか試すことから始めて下さい。 |
||
+ | |||
+ | {{Tip|MTP 関連のパッケージをインストールした後はコンピュータを再起動することを推奨します。}} |
||
+ | |||
+ | === ファイルマネージャと統合 === |
||
MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください: |
MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください: |
||
− | * [[ |
+ | * [[GVFS]] を使用するファイルマネージャ (GNOME の [[Nautilus]], Xfce の [[Thunar]]) の場合、MTP のサポートは {{Pkg|gvfs-mtp}} を、PTP のサポートは {{Pkg|gvfs-gphoto2}} をインストールしてください。 |
* KIO (KDE の Dolphin) を使用するファイルマネージャの場合、{{Pkg|kio-mtp}} をインストールしてください (PTP のサポートはデフォルトで含まれています)。 |
* KIO (KDE の Dolphin) を使用するファイルマネージャの場合、{{Pkg|kio-mtp}} をインストールしてください (PTP のサポートはデフォルトで含まれています)。 |
||
必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、{{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 デバイスが検出されたかどうかを確認するには次のコマンドを使用: |
||
+ | === libmtp === |
||
+ | |||
+ | MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用: |
||
# mtp-detect |
# mtp-detect |
||
− | + | エラーが表示される場合、[[#libmtp 2|トラブルシューティング]]を参照。 |
|
+ | |||
+ | {{Note|通常ユーザーは {{ic|uucp}} グループに属している必要があります。}} |
||
MTP デバイスに接続するには、以下を使用: |
MTP デバイスに接続するには、以下を使用: |
||
37行目: | 56行目: | ||
以下のように、MTP デバイスにアクセスするのに使える単独のコマンドも存在します: |
以下のように、MTP デバイスにアクセスするのに使える単独のコマンドも存在します: |
||
− | {{Warning|コマンドによっては MTP デバイスに悪影響を与えることがあるので注意してください。}} |
||
mtp-albumart mtp-emptyfolders mtp-getplaylist mtp-reset mtp-trexist |
mtp-albumart mtp-emptyfolders mtp-getplaylist mtp-reset mtp-trexist |
||
45行目: | 63行目: | ||
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|以下の方法が使えない時は [[デジタルカメラ#libgphoto2|gphoto2]] や、[[PCManFM|PCManFM]] などの gvfs をサポートしているファイルマネージャを用いる必要があります。}} |
||
Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。 |
Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。 |
||
90行目: | 87行目: | ||
もしくは sudo を使って: |
もしくは sudo を使って: |
||
alias android-disconnect="sudo umount -u /media/YOURMOUNTPOINT" |
alias android-disconnect="sudo umount -u /media/YOURMOUNTPOINT" |
||
− | {{Note|sudo を使用するときにパスワードを聞いて欲しくない場合は、[[ |
+ | {{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 は [[ |
+ | [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行目: | 99行目: | ||
$ fusermount -u ~/mtp |
$ fusermount -u ~/mtp |
||
− | == go-mtpfs == |
+ | === go-mtpfs === |
+ | {{Note| |
||
− | {{Note|デバイスによってはファイルの書き込みについて go-mtpfs は mtpfs/jmtpfs よりも良いパフォーマンスを発揮します。速度が遅いときは試してみて下さい。}} |
||
− | + | * デバイスによってはファイルの書き込みについて go-mtpfs は mtpfs/jmtpfs よりも良いパフォーマンスを発揮します。速度が遅いときは試してみて下さい。 |
|
+ | * 外付け SD カードが存在する場合は go-mtpfs によるマウントは失敗します。外付け SD カードがあるときは取り除いてからマウントしてみてください。 |
||
+ | }} |
||
− | 上記のやり方では芳しい結果が得られない場合、[[ |
+ | 上記のやり方では芳しい結果が得られない場合、[[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|/usr/lib/udev/rules.d/51-android.rules}} が作成されるので、あなたの idVendor と idProduct に適用されるように編集してください。ID は mtp-detect を実行することでわかります。行末にカンマと {{ic|<nowiki>OWNER="yourusername"</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 で実行しないで下さい。 |
||
146行目: | 145行目: | ||
$ fusermount -u /path/to/your/mount/point |
$ fusermount -u /path/to/your/mount/point |
||
+ | === Android File Transfer === |
||
− | == gvfs-mtp のトラブルシューティング == |
||
+ | ;FUSE インターフェイス |
||
− | {{Pkg|gvfs-mtp}} パッケージをインストールしても、デバイスがファイルマネージャに表示されない場合、デバイスが自動マウントされるように udev ルールを書く必要があるかもしれません。 |
||
+ | $ mkdir ~/my-device |
||
− | デバイスを接続して、vendor-id と product-id をそれぞれ取得してください: |
||
+ | $ ./aft-mtp-mount ~/my-device |
||
+ | アルバムアートを表示したい場合、{{ic|albumart.xxx}} という名前を付けて一番最初にフォルダに配置してください。それから他のファイルをコピーしてください。また、fuse では ui/cli ファイル転送よりも7-8倍転送が遅くなるので注意してください。 |
||
− | $ lsusb |
||
− | Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920 |
||
− | (...) |
||
+ | ;Qt ユーザーインターフェイス |
||
− | ID の文字の後の2つの数字が ''vendorID'' : ''productID'' です。 |
||
+ | アプリケーションを起動して、コピー先のフォルダを選択してツールバーのボタンをクリックしてください。利用できるオプション: ''Upload Album'', ''Upload Directory'', ''Upload Files''。''Upload Album'' はアルバムカバーのディレクトリを検索して、適当なカバーを設定します。 |
||
− | ID がわかったら udev ルールを作成します。例: |
||
+ | === メディアプレイヤー === |
||
− | # nano /usr/lib/udev/rules.d/51-android.rules |
||
+ | Amarok などの音楽プレイヤーで MTP デバイスを使うこともできます。これには {{ic|/usr/lib/udev/rules.d/51-android.rules}} を編集する必要があります (以下では MTP デバイスの例として Galaxy Nexus を使っています): |
||
− | ルールの中身は以下のようにしてください: |
||
+ | まず次を実行してデバイスを確認してください: |
||
− | ATTR{idVendor}=="YOUR VENDOR ID HERE", ATTR{idProduct}=="YOUR PRODUCT ID HERE", SYMLINK+="libmtp", MODE="660", ENV{ID_MTP_DEVICE}="1" |
||
+ | $ 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 をインストールした後、デバイスを認識させるために再起動が必要なことがあります。}} |
||
− | udev ルールをリロードします: |
||
+ | == トラブルシューティング == |
||
− | # udevadm control --reload |
||
+ | === libmtp === |
||
− | そしてシステムを再起動してください。これで (Thunar などの) ファイルマネージャは MTP デバイスを自動でマウントできるようになったはずです [https://bbs.archlinux.org/viewtopic.php?id=180719]。 |
||
+ | ==== 未知のデバイス ==== |
||
− | == kio-mtp のトラブルシューティング == |
||
+ | 以下のようなメッセージが表示される場合: |
||
− | "ファイルマネージャで開く"が使えない場合は、{{ic|/usr/share/apps/solid/actions/solid_mtp.desktop}} ファイルを編集することで問題を解決できます。 |
||
+ | Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN. |
||
− | 次の行を: |
||
+ | Please report this VID/PID and the device model to the libmtp development team |
||
− | Exec=kioclient exec mtp:udi=%i/ |
||
− | 以下のように変更してください: |
||
− | Exec=dolphin "mtp:/" |
||
+ | デバイスが次のリストに含まれているか確認する必要があります: [http://sourceforge.net/p/libmtp/code/ci/HEAD/tree/src/music-players.h Supported devices list]。リストに入っていない場合は、開発チームに報告してください。リストに含まれている場合は、libmtp が少しだけ旧式になっている可能性があります。libmtp によって適切に使用されるように、デバイスを次のファイルに追加することが可能です: |
||
− | == GNOME gMTP == |
||
+ | /usr/lib/udev/rules.d/69-libmtp.rules |
||
+ | ==== Unable to enumerate USB device ==== |
||
− | gMTP は MTP のアクセスに使用する Gnome のネイティブアプリケーションです。 |
||
+ | システムログ ({{ic|journalctl}}) に以下のようなメッセージが表示される場合: |
||
− | {{Pkg|gmtp}} は現在 [[AUR|AUR]] に入っています。 |
||
+ | usb usb4-port2: unable to enumerate USB device |
||
− | == Android == |
||
+ | 以下のコマンドを実行してみてください [https://bbs.archlinux.org/viewtopic.php?pid=1087323#p1087323]: |
||
− | === AirDroid === |
||
+ | # modprobe -vr uhci_hcd |
||
− | AirDroid はウェブブラウザからファイルにアクセスできるようにする Android アプリです。 |
||
+ | # modprobe -va ohci_hcd |
||
+ | # modprobe -va uhci_hcd |
||
+ | 上記のコマンドで直る場合、以下の内容で {{ic|/etc/modprobe.d/usb_hci_order.conf}} を作成してください: |
||
− | === FTP === |
||
+ | # create a dependency on ohci for uhci, which fixes problems |
||
− | Arch でローカル FTP サーバーを動かしてスマートフォンから接続します。Android には多数の FTP クライアントが存在します。 |
||
+ | # with external usb devices not showing up |
||
+ | # |
||
+ | softdep uhci_hcd pre: ohci_hcd |
||
+ | === gvfs-mtp === |
||
− | もしくは、スマートフォン上で FTP サーバーを動作させて Arch から接続します。 |
||
+ | {{Pkg|gvfs-mtp}} パッケージをインストールしても、デバイスがファイルマネージャに表示されない場合、デバイスが自動マウントされるように udev ルールを書く必要があるかもしれません。 |
||
− | [[アプリケーション一覧/インターネット#FTP]] を見て下さい。 |
||
+ | デバイスを接続して、vendor-id と product-id をそれぞれ取得してください: |
||
− | === SSH サーバー === |
||
+ | $ lsusb |
||
− | Android には多数の SSH サーバーがあります。{{ic|scp}} コマンドを使ってファイルを転送することができます。[[SSH|SSH]] を参照。 |
||
+ | Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920 |
||
+ | (...) |
||
+ | ID の文字の後の2つの数字が ''vendorID'' : ''productID'' です。 |
||
− | === Samba === |
||
+ | ID がわかったら udev ルールを作成します。例: |
||
− | [[Samba|Samba]] を見て下さい。 |
||
+ | # nano /etc/udev/rules.d/51-android.rules |
||
− | === ADB === |
||
+ | ルールの中身は以下のようにしてください: |
||
− | ADB (Android Debug Bridge) は Android SDK に含まれています。[[AUR|AUR]] から {{Aur|android-sdk-platform-tools}} をインストールしてください。デバイスにファイルを送受信するのに使うことができます。[[Android#実機に接続 - Android Debug Bridge (ADB)|Android#実機に接続 - Android Debug Bridge (ADB)]] を見て下さい。 |
||
+ | ATTR{idVendor}=="YOUR VENDOR ID HERE", ATTR{idProduct}=="YOUR PRODUCT ID HERE", SYMLINK+="libmtp", MODE="660", ENV{ID_MTP_DEVICE}="1" |
||
− | * ファイルをデバイスに送信するには次のコマンドを使用: |
||
− | $ adb push ''<what-to-copy>'' ''<where-to-place>'' |
||
− | + | udev ルールをリロードします: |
|
− | $ adb pull ''<what-to-pull>'' ''<where-to-place>'' |
||
+ | # udevadm control --reload |
||
− | === VirtualBox 上の Microsoft Windows === |
||
+ | そしてシステムを再起動してください。これで (Thunar などの) ファイルマネージャは MTP デバイスを自動でマウントできるようになったはずです [https://bbs.archlinux.org/viewtopic.php?id=180719]。 |
||
− | まず、ホスト側で、公式リポジトリから {{Pkg|virtualbox}} を、[[AUR|AUR]] から {{Aur|virtualbox-ext-oracle}} を[[インストール]]してください。それからゲスト OS で VirtualBox Guest Additions をインストールします。その後 ''VM Settings -> USB'' から ''Enable USB Controller'' を有効にしてください。 |
||
+ | === kio-mtp === |
||
− | これで ''Devices -> USB Devices'' を通して仮想マシン上の Windows に MTP デバイスを引き渡すことができるようになります。VM の共有ディレクトリを設定するのも忘れずに。 |
||
+ | "ファイルマネージャで開く"が使えない場合は、{{ic|/usr/share/apps/solid/actions/solid_mtp.desktop}} ファイルを編集することで問題を解決できます。 |
||
− | [[VirtualBox|VirtualBox]] を見て下さい。 |
||
+ | |||
+ | 次の行を: |
||
+ | Exec=kioclient exec mtp:udi=%i/ |
||
+ | 以下のように変更してください: |
||
+ | Exec=dolphin "mtp:/" |
2015年8月16日 (日) 16:31時点における版
関連記事
MTP は多くの mp3 プレイヤー (例: Creative Zen) やモバイル端末 (例: Android 3+ デバイス) で使われているメディア転送プロトコル (Media Transfer Protocol) です。"Windows Media" フレームワークの一部であり、Windows Media Player と密接な関係があります。
目次
インストール
機能性
Linux の MTP サポートは libmtp パッケージをインストールすることで得られます。libmtp をインストールするだけでデバイスにアクセスできますが、特定のデバイスタイプで便利な機能 (例: ファイルマネージャ) と互換性を提供するパッケージが多数存在します。転送速度を向上させるパッケージもあります。
以下のパッケージはどれも Wikipedia:Filesystem in Userspace で実装されています:
- mtpfs
- jmtpfsAUR - Android 4 以降の新しいデバイスで上手く動作します
- go-mtpfs-gitAUR - Android 3 以降の新しいデバイスで上手く動作します
- simple-mtpfsAUR
- android-file-transferAUR - ミニマルな UI が付属している MTP クライアント
上記の全てが libmtp
よりも優れた機能とパフォーマンスを誇っています。USB デバイスは多数存在するので、まずどれか一番適しているか試すことから始めて下さい。
ファイルマネージャと統合
MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください:
- GVFS を使用するファイルマネージャ (GNOME の Nautilus, Xfce の Thunar) の場合、MTP のサポートは gvfs-mtp を、PTP のサポートは gvfs-gphoto2 をインストールしてください。
- KIO (KDE の Dolphin) を使用するファイルマネージャの場合、kio-mtp をインストールしてください (PTP のサポートはデフォルトで含まれています)。
必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、mtp://[usb:002,013]/
というような URL でアクセスすることができます。
使用方法
まず最初にマウントポイントのディレクトリを作成する必要があります。以下の例では ~/mnt
ディレクトリを使っています。また、コンピュータに接続する前にデバイスのロック画面を解除するようにしてください。
libmtp
MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用:
# mtp-detect
エラーが表示される場合、トラブルシューティングを参照。
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
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
Android File Transfer
- FUSE インターフェイス
$ mkdir ~/my-device $ ./aft-mtp-mount ~/my-device
アルバムアートを表示したい場合、albumart.xxx
という名前を付けて一番最初にフォルダに配置してください。それから他のファイルをコピーしてください。また、fuse では ui/cli ファイル転送よりも7-8倍転送が遅くなるので注意してください。
- Qt ユーザーインターフェイス
アプリケーションを起動して、コピー先のフォルダを選択してツールバーのボタンをクリックしてください。利用できるオプション: Upload Album, Upload Directory, Upload Files。Upload Album はアルバムカバーのディレクトリを検索して、適当なカバーを設定します。
メディアプレイヤー
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
トラブルシューティング
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]。
kio-mtp
"ファイルマネージャで開く"が使えない場合は、/usr/share/apps/solid/actions/solid_mtp.desktop
ファイルを編集することで問題を解決できます。
次の行を:
Exec=kioclient exec mtp:udi=%i/
以下のように変更してください:
Exec=dolphin "mtp:/"