「MTP」の版間の差分
細 (文字列「[[zh-CN:」を「[[zh-hans:」に置換) |
(TranslationStatus) |
||
(4人の利用者による、間の16版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category:サウンド]] |
||
− | [[Category:イメージング]] |
||
[[Category:ストレージ]] |
[[Category:ストレージ]] |
||
[[Category:携帯端末]] |
[[Category:携帯端末]] |
||
− | [[ |
+ | [[de:MTP]] |
+ | [[en:Media Transfer Protocol]] |
||
− | [[ru:MTP]] |
||
− | [[zh-hans: |
+ | [[zh-hans:Media Transfer Protocol]] |
{{Related articles start}} |
{{Related articles start}} |
||
+ | {{Related|Android#ファイル転送}} |
||
{{Related|USB ストレージデバイス}} |
{{Related|USB ストレージデバイス}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
+ | [[Wikipedia:ja:メディア転送プロトコル|メディア転送プロトコル]] (Media Transfer Protocol, MTP) は、多くの携帯電話 (全 Windows Phone 7/8/10 デバイスやほとんどの新しい [[Android]] デバイス) やメディアプレイヤ (例: Creative Zen) との間でメディアファイルの転送を行うために使用できます。 |
||
− | MTP は多くの mp3 プレイヤー (例: Creative Zen) やモバイル端末 (例: Android 3+ デバイス) で使われているメディア転送プロトコル (Media Transfer Protocol) です。"Windows Media" フレームワークの一部であり、Windows Media Player と密接な関係があります。 |
||
− | == |
+ | == 接続 == |
+ | MTP を介してコンピュータをデバイスに接続するには: |
||
− | === 機能性 === |
||
+ | * 対象デバイスがあなたのコンピュータと USB で接続されている必要があります |
||
− | Linux の MTP サポートは {{Pkg|libmtp}} パッケージを[[インストール]]することで得られます。libmtp をインストールするだけでデバイスにアクセスできますが、特定のデバイスタイプで便利な機能 (例: ファイルマネージャ) と互換性を提供するパッケージが多数存在します。転送速度を向上させるパッケージもあります。 |
||
+ | * MTP が対象デバイスで有効化されている必要があります |
||
+ | * デバイスのスクリーンがアンロックされている必要があります (セキュリティ上の理由により) |
||
+ | == FUSE ファイルシステム == |
||
− | 以下のパッケージはどれも [[Wikipedia:Filesystem in Userspace]] で実装されています: |
||
+ | 以下のプログラムは、[[FUSE]] ファイルシステムを介して MTP デバイスにアクセスできるようにします。 |
||
− | * {{Pkg|mtpfs}} |
||
+ | {{Note|MTP は複雑であり、その実装はデバイス間で異なっています。下記のクライアントを試し、どのクライアントがあなたのデバイスで最もうまく機能するか調べてください。}} |
||
− | * {{Pkg|android-file-transfer}} - ミニマルな UI が付属している MTP クライアント |
||
+ | {{Tip|MTP 関連のパッケージをインストールした後は、コンピュータを再起動することが推奨されます。}} |
||
− | * {{AUR|jmtpfs}} - Android 4 以降の新しいデバイスで上手く動作します |
||
+ | FUSE ベースのファイルシステムを使用する場合、まず先にマウントポイントのディレクトリを作成する必要があるかもしれません。以下の例では {{ic|~/mnt}} ディレクトリが使われています。 |
||
− | * {{AUR|go-mtpfs-git}} - Android 3 以降の新しいデバイスで上手く動作します |
||
− | * {{AUR|simple-mtpfs}} |
||
+ | 通常、FUSE のマウントは {{ic|fusermount -u ''マウントポイント''}} を使ってアンマウントできます。 |
||
− | 上記の全てが {{ic|libmtp}} よりも優れた機能とパフォーマンスを誇っています。USB デバイスは多数存在するので、まずどれか一番適しているか試すことから始めて下さい。 |
||
+ | === Android File Transfer === |
||
− | {{Tip|MTP 関連のパッケージをインストールした後はコンピュータを再起動することを推奨します。}} |
||
+ | {{App|Android File Transfer|CLI、Qt UI、カスタムの MTP 実装を使用する FUSE ラッパを搭載している MTP クライアント|https://whoozle.github.io/android-file-transfer-linux/|{{Pkg|android-file-transfer}}}} |
||
− | === ファイルマネージャと統合 === |
||
+ | {{ic|~/mnt}} にデバイスをマウントするには: |
||
− | MTP を使ってファイルマネージャ上で Android デバイスのストレージの中身を表示するには、適当なプラグインをインストールしてください: |
||
+ | $ aft-mtp-mount ~/mnt |
||
+ | アルバムアートを表示させたい場合は、{{ic|albumart.xxx}} という名前にし、一番最初にマウント先のフォルダに配置しておかなければなりません。その後で、他のファイルをコピーしてください。また、fuse は ui/cli のファイル転送よりも 7~8 倍遅くなる可能性があることに注意してください。 |
||
− | * [[GVFS]] を使用するファイルマネージャ (GNOME の [[Nautilus]], Xfce の [[Thunar]]) の場合、MTP のサポートは {{Pkg|gvfs-mtp}} を、PTP のサポートは {{Pkg|gvfs-gphoto2}} をインストールしてください。 |
||
− | * KIO (KDE の Dolphin) を使用するファイルマネージャの場合、MTP サポートは {{Pkg|kio-extras}} に含まれています (Dolphin に依存)。 |
||
+ | コマンドラインインターフェイスでデバイスと対話したい場合は、以下のコマンドを実行してください: |
||
− | 必要なパッケージをインストールすれば、ファイルマネージャに自動的にデバイスが表示され、{{ic|mtp://[usb:002,013]/}} というような URL でアクセスすることができます。 |
||
+ | $ aft-mtp-cli |
||
+ | ''help'' と入力すると、利用可能な全コマンドが一覧表示されます。''exit'' と入力すると終了します。 |
||
+ | グラフィカルユーザインターフェイスでデバイスと対話したい場合は、''android-file-transfer'' アプリケーションを起動し、マウント先フォルダを選択して、ツールバーの任意のボタンを押してください。利用可能なオプションは、''Upload Album''、''Upload Directory''、''Upload Files'' です。最後の2つは自明です。''Upload album'' は、ソースディレクトリからアルバムカバーを検索し、利用可能な最も良いカバーを設定します。 |
||
− | == 使用方法 == |
||
+ | === MTPfs === |
||
− | まず最初にマウントポイントのディレクトリを作成する必要があります。以下の例では {{ic|~/mnt}} ディレクトリを使っています。また、コンピュータに接続する前にデバイスのロック画面を解除するようにしてください。 |
||
+ | {{App|MTPfs|[[#libmtp|libmtp]] ベース。任意の MTP デバイスに対して読み書きをサポートする FUSE ファイルシステムです|https://www.adebenham.com/mtpfs/|{{Pkg|mtpfs}}}} |
||
− | === libmtp === |
||
+ | {{Note|以下は機能しない可能性が高く、[[libgphoto2]] や、[[PCManFM]] などの gvfs サポートのあるファイルマネージャに頼らなくてはならないかもしれません。}} |
||
+ | まず、{{ic|/etc/fuse.conf}} を編集して、以下の行をアンコメントしてください: |
||
− | MTP デバイスの接続時に、MTP デバイスが検出されたかどうかを確認するには次のコマンドを使用: |
||
+ | user_allow_other |
||
− | # mtp-detect |
||
− | エラーが表示される場合、[[#libmtp 2|トラブルシューティング]]を参照。 |
||
+ | {{ic|~/mnt}} にデバイスをマウントします: |
||
− | {{Note|通常ユーザーは {{ic|uucp}} グループに属している必要があります。}} |
||
+ | $ mtpfs -o allow_other ~/mnt |
||
+ | === jmtpfs === |
||
− | MTP デバイスに接続するには、以下を使用: |
||
− | # mtp-connect |
||
+ | {{App|jmtpfs|[[#libmtp|libmtp]] ベース。MTP (Media Transfer Protocol) デバイスにアクセスします。|https://github.com/JasonFerrara/jmtpfs|{{AUR|jmtpfs}}}} |
||
− | 接続が成功すると、{{ic|mtp-connect}} と一緒に複数のスイッチオプションを使ってデバイスのデータにアクセスすることができます。 |
||
− | + | {{ic|~/mnt}} にデバイスをマウントします: |
|
+ | $ jmtpfs ~/mnt |
||
− | 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 |
||
+ | 2つのステップを行うことにより、Linux の残りの部分と一致させます (通常の mount/umount コマンドを使用する): |
||
− | {{Warning|コマンドによっては MTP デバイスに悪影響を与えることがあるので注意してください。}} |
||
+ | $# ln -s <実際の mount コマンドのパス/名前> <Linux の mount 規則と一致する名前> |
||
− | === mtpfs === |
||
+ | $ ln -s /sbin/jmtpfs /sbin/mount.jmtpfs |
||
+ | 以下の行を {{ic|/etc/fstab}} に追加してください: |
||
− | {{Note|以下の方法が使えない時は [[デジタルカメラ#libgphoto2|gphoto2]] や、[[PCManFM]] などの gvfs をサポートしているファイルマネージャを用いる必要があります。}} |
||
+ | #jmtpfs <mount path> fuse nodev,allow_other,<other options> 0 0 |
||
− | Mtpfs はあらゆる MTP デバイスの読み書きをサポートする FUSE ファイルシステムです。外付けデバイスとして MTP デバイスをマウントできるようにします。 |
||
+ | jmtpfs /home/sam/run/motog fuse nodev,allow_other,rw,user,noauto,noatime,uid=1000,gid=1000 0 0 |
||
+ | そして、デバイスをマウントし、オプションが渡されていることを確認してください: |
||
− | Mtpfs は[[公式リポジトリ]]の {{Pkg|mtpfs}} パッケージでインストールすることが可能です。 |
||
− | * まず {{ic|/etc/fuse.conf}} を編集して以下の行をアンコメントしてください: |
||
− | user_allow_other |
||
+ | $ mount /home/sam/run/motog |
||
− | * デバイスをマウントするには: |
||
+ | Device 0 (VID=22b8 and PID=2e82) is a Motorola Moto G (ID2). |
||
− | $ mtpfs -o allow_other /media/YOURMOUNTPOINT |
||
+ | Android device detected, assigning default bug flags |
||
− | * デバイスをアンマウントするには: |
||
+ | $ mount |
||
− | $ fusermount -u /media/YOURMOUNTPOINT |
||
+ | ... |
||
− | * デバイスを root でアンマウントするには: |
||
+ | jmtpfs on /home/sam/run/motog type fuse.jmtpfs (rw,nosuid,nodev,noexec,noatime,user_id=1000,group_id=1000,allow_other,user=sam) |
||
− | # umount /media/YOURMOUNTPOINT |
||
+ | === SIMPLE-MTPFS === |
||
− | また、{{ic|~/.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 ストレージデバイス]]を参照してください。}} |
||
+ | {{App|SIMPLE-MTPFS|[[#libmtp|libmtp]] ベース。Simple Media Transfer Protocol FileSystem は、USB でローカルマシンに接続された MTP デバイス上のファイルを操作できるファイルシステムです|https://github.com/phatina/simple-mtpfs/|{{AUR|simple-mtpfs}}}} |
||
− | === jmtpfs === |
||
+ | 検出されたデバイスを一覧表示するには {{ic|simple-mtpfs -l}} を実行してください。 |
||
− | [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}} でインストール可能です。 |
||
− | デバイスをマウントするには |
+ | リストの最初のデバイスを {{ic|~/mnt}} にマウントするには、{{ic|simple-mtpfs --device 1 ~/mnt}} を実行してください。 |
− | $ jmtpfs ~/mtp |
||
− | |||
− | デバイスをアンマウントするには次のコマンドを使用: |
||
− | $ fusermount -u ~/mtp |
||
=== go-mtpfs === |
=== go-mtpfs === |
||
+ | |||
+ | {{App|go-mtpfs|カスタムの MTP 実装を持つ、Go で書かれた FUSE ファイルシステム|https://github.com/hanwen/go-mtpfs|{{AUR|go-mtpfs-git}}}} |
||
+ | |||
+ | {{Pkg|android-udev}} をインストールしてください。これは、{{ic|/etc/udev/rules.d/51-android.rules}} を編集して、(''mtp-detect'' を実行後に見られる) {{ic|idVendor}} と {{ic|idProduct}} に適用できるようにします。行の最後にはあなたのユーザ {{ic|<nowiki>OWNER="<user>"</nowiki>}} を追加してください。 |
||
+ | |||
+ | {{ic|~/mnt}} 上にデバイスをマウントします: |
||
+ | |||
+ | $ go-mtpfs ~/mnt |
||
{{Note| |
{{Note| |
||
+ | * 複数のデバイスを使用する際は、{{ic|-d}} フラグを使用してデバイスを指定する必要があるかもしれません ({{ic|mtp-detect}} を実行することで id を調べられます)。 |
||
− | * デバイスによってはファイルの書き込みについて go-mtpfs は mtpfs/jmtpfs よりも良いパフォーマンスを発揮します。速度が遅いときは試してみて下さい。 |
||
− | * 外 |
+ | * 外部 SD カードがあると、{{ic|go-mtpfs}} でのマウントが失敗するかもしれません。SD カードが存在している状態でデバイスへアクセスしようとして go-mtpfs がエラーを吐く場合は、SD カードを取り出して、もう一度マウントしてみてください。}} |
− | }} |
||
+ | == libmtp == |
||
− | 上記のやり方では芳しい結果が得られない場合、[[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 デバッグを有効にして、メディアデバイスとして接続する設定です)。 |
||
+ | [http://libmtp.sourceforge.net/ libmtp] はライブラリ MTP 実装です。いくつかのコマンドラインツールの例も付属しています ({{ic|pacman -Ql libmtp}} でリストアップできます)。 |
||
− | 上のセクションで説明されているように {{Pkg|android-udev}} をインストールすると {{ic|/usr/lib/udev/rules.d/51-android.rules}} が作成されるので、あなたの idVendor と idProduct に適用されるように編集してください。ID は mtp-detect を実行することでわかります。行末にカンマと {{ic|<nowiki>OWNER="yourusername"</nowiki>}} を追加して、ファイルを保存します。 |
||
+ | {{Pkg|libmtp}} パッケージを[[インストール]]してください。 |
||
− | * "fuse" グループにユーザーを追加: |
||
− | # gpasswd -a [user] fuse |
||
+ | デバイスを検出するには {{ic|mtp-detect}} を実行してください。 |
||
− | * "fuse" グループが存在しない場合は次のコマンドでグループを作成: |
||
− | # groupadd fuse |
||
− | + | エラーが返ってくる場合、あなたのユーザが {{ic|adbusers}} [[ユーザグループ]]に属していることを確認してください。 |
|
+ | {{ic|mtp-connect}} コマンドでファイルを転送できます。 |
||
− | * "Android" という名前のマウントポイントを作成するために次のコマンドを実行: |
||
− | $ mkdir Android |
||
+ | === フロントエンド === |
||
− | * スマートフォンをマウントするには次を使用: |
||
− | $ go-mtpfs Android |
||
+ | {{App|gMTP|libmtp のためのグラフィカルフロントエンド。デスクトップに依存しない GUI で Android デバイスに接続し、ファイルを管理できます。|https://gmtp.sourceforge.io/|{{Pkg|gmtp}}}} |
||
− | * スマートフォンをアンマウントするには: |
||
− | $ fusermount -u Android |
||
+ | == メディアプレイヤー == |
||
− | 上の例と同じように {{ic|.bashrc}} にエイリアスを作成すると便利です。 |
||
+ | [[Amarok]] などの音楽プレイヤーで MTP デバイスを使うこともできます。これには {{ic|/etc/udev/rules.d/51-android.rules}} を編集する必要があります (以下では MTP デバイスの例として Galaxy Nexus を使っています): |
||
− | === simple-mtpfs === |
||
+ | 次を実行してください: |
||
− | MTP デバイスのためのもうひとつの FUSE ファイルシステムです。{{Pkg|mtpfs}} よりも信頼性が上回っています。AUR から {{AUR|simple-mtpfs}} をインストールするか、ソースからビルドすることができます。以下のコマンドは root で実行しないで下さい。 |
||
+ | $ lsusb |
||
− | MTP デバイスをリストアップするには次を実行: |
||
+ | あなたのデバイスを探してください。以下のように出力されるはずです: |
||
− | $ simple-mtpfs --list-devices |
||
+ | Bus 003 Device 011: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-P7500 [Galaxy Tab 10.1] |
||
+ | {{ic|/etc/udev/rules.d/51-android.rules}} へのエントリは以下のようになります: |
||
− | MTP デバイス (この例ではデバイス0) をマウントするには次を実行 |
||
+ | SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666", OWNER="[username]" |
||
+ | udev ルールをリロードしてください: |
||
− | $ simple-mtpfs /path/to/your/mount/point |
||
+ | # udevadm control --reload |
||
+ | == ファイルマネージャ統合 == |
||
− | アンマウントするには次を実行: |
||
+ | MTP で接続された Android デバイスのストレージのコンテンツをファイルマネージャで閲覧するには、対応するプラグインをインストールしてください: |
||
− | $ fusermount -u /path/to/your/mount/point |
||
+ | * [[GVFS]] (GNOME Files) を使用するファイルマネージャの場合は、MTP 用の {{Pkg|gvfs-mtp}} か PTP サポート用の {{Pkg|gvfs-gphoto2}} をインストールしてください。 |
||
− | === Android File Transfer === |
||
+ | * KIO (KDE の Dolphin) を使用するファイルマネージャの場合は、{{Pkg|kio-extras}} (dolphin の依存パッケージ) に MTP サポートが含まれています。 |
||
+ | 必要なパッケージをインストールしたら、デバイスがファイルマネージャに自動的に表示され、URL (例: {{ic|mtp://[usb:002,013]/}}) からアクセスできるはずです。 |
||
− | ;FUSE インターフェイス |
||
+ | === gvfs-mtp === |
||
− | $ mkdir ~/my-device |
||
− | $ ./aft-mtp-mount ~/my-device |
||
+ | {{Pkg|gvfs-mtp}} は公式リポジトリで利用可能です。 |
||
− | アルバムアートを表示したい場合、{{ic|albumart.xxx}} という名前を付けて一番最初にフォルダに配置してください。それから他のファイルをコピーしてください。また、fuse では ui/cli ファイル転送よりも7-8倍転送が遅くなるので注意してください。 |
||
+ | {{ic|lsusb}} を使うことで、あなたのデバイスの情報を取得できます。Bus 番号と Device 番号は、{{ic|gvfs-mtp}} で使ったり、[[udev]] ルールを作成する際のデバイス ID として使ったりできます。 |
||
− | ;Qt ユーザーインターフェイス |
||
+ | Bus '''002''' Device '''018''': ID '''04b7''':'''88a9''' Compal Electronics, Inc. |
||
+ | 検出された、MTP が有効化されたデバイスを見るには |
||
− | アプリケーションを起動して、コピー先のフォルダを選択してツールバーのボタンをクリックしてください。利用できるオプション: ''Upload Album'', ''Upload Directory'', ''Upload Files''。''Upload Album'' はアルバムカバーのディレクトリを検索して、適当なカバーを設定します。 |
||
+ | ''gio mount'' を使うか: |
||
− | === メディアプレイヤー === |
||
+ | {{hc|gio mount -li {{!}} grep -e ^Volume -e activation_root|2= |
||
− | Amarok などの音楽プレイヤーで MTP デバイスを使うこともできます。これには {{ic|/usr/lib/udev/rules.d/51-android.rules}} を編集する必要があります (以下では MTP デバイスの例として Galaxy Nexus を使っています): |
||
+ | Volume(0): MT65xx Android Phone |
||
+ | activation_root=mtp://[usb:'''002''','''018''']/ |
||
+ | }} |
||
− | + | ''lsusb'' を使ってください: |
|
− | $ 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 |
||
+ | {{hc|lsusb -v 2> /dev/null {{!}} grep -e Bus -e iInterface -e bInterfaceProtocol| |
||
− | {{Note|MTP をインストールした後、デバイスを認識させるために再起動が必要なことがあります。}} |
||
+ | ... |
||
+ | Bus 002 Device 018: ID 04b7:88a9 Compal Electronics, Inc. |
||
+ | bInterfaceProtocol 0 |
||
+ | iInterface 5 MTP |
||
+ | ...}} |
||
+ | 利用可能なすべての接続済み MTP デバイスをマウントするには、インラインスクリプトを使用してください: |
||
− | == トラブルシューティング == |
||
+ | gio mount -li | awk -F= '{if(index($2,"mtp") == 1)system("gio mount "$2)}' |
||
− | === libmtp === |
||
+ | gvfs-mtp でコマンドからマウント/ディスマウントするには、Bus 番号と Device 番号を使用してください。例えば、マウントする場合は {{ic|gio mount mtp://[usb:001,007]/}}、アンマウントする場合は {{ic|gio mount -u mtp://[usb:001,007]/}} となります。マウント済みデバイスは ''mtp:host='' で始まるディレクトリ内で利用でき、''/run/user/$UID/gvfs/'' 下に配置されています。 |
||
− | ==== 未知のデバイス ==== |
||
+ | gvfs で MTP デバイスの自動マウントを無効化するには、{{ic|/usr/share/gvfs/mounts/mtp.mount}} 内の ''AutoMount'' 変数の値を ''true'' から ''false'' に変更してください。 |
||
− | 以下のようなメッセージが表示される場合: |
||
+ | {{Note|(上記の) ファイルマネージャは自動マウントのオプションを独自に持つことができます。起動時に、これらのファイルマネージャは利用可能なマウント可能デバイスをすべてチェックします。}} |
||
− | Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN. |
||
− | Please report this VID/PID and the device model to the libmtp development team |
||
− | デバイスが |
+ | ファイルマネージャにあなたのデバイスが表示されない場合、[[#libmtp]] にネイティブサポートが存在せず、[https://sourceforge.net/p/libmtp/code/ci/HEAD/tree/src/music-players.h サポートされているデバイス]のリストに入っていません。コマンドラインを使ってマウントを試みる場合は、エラーが発生する場合もあります: |
− | /usr/lib/udev/rules.d/69-libmtp.rules |
||
+ | {{bc|1=Device 0 (VID=''XXXX'' and PID=''XXXX'') is UNKNOWN. |
||
− | ==== Unable to enumerate USB device ==== |
||
+ | Please report this VID/PID and the device model to the libmtp development team}} |
||
+ | デバイスをファイルマネージャに表示させるための回避策は、対象デバイス用の [[udev]] ルールを記述することです。しかし、MTP 接続を用いてデバイスをマウントできる保証はありません。 |
||
− | システムログ ({{ic|journalctl}}) に以下のようなメッセージが表示される場合: |
||
+ | '''vendorId''':'''productID''' という形式の ID を使用してください (例: '''04b7''':'''88a9''')。そして、設定ファイルを作成して udev ルールを作成してください: |
||
− | usb usb4-port2: unable to enumerate USB device |
||
+ | {{hc|/etc/udev/rules.d/51-android.rules|<NOWIKI> |
||
− | 以下のコマンドを実行してみてください [https://bbs.archlinux.org/viewtopic.php?pid=1087323#p1087323]: |
||
+ | SUBSYSTEM=="usb", ATTR{idVendor}=="04b7", ATTR{idProduct}=="88a9", MODE="0660", GROUP="uucp", ENV{ID_MTP_DEVICE}="1", SYMLINK+="libmtp"</NOWIKI> |
||
+ | }} |
||
+ | udev ルールを再読込してください: |
||
+ | # udevadm control --reload |
||
− | # modprobe -vr uhci_hcd |
||
− | # modprobe -va ohci_hcd |
||
− | # modprobe -va uhci_hcd |
||
+ | [[gvfs]] をサポートしているファイルマネージャは、MTP デバイスを表示でき、[[#libmtp]] によってサポートされていればマウントできます。しかし、サポートがなく、デバイスを開けない場合、携帯電話の設定を PTP に変更し、{{Pkg|gvfs-gphoto2}} をインストールして、最低限、写真へのアクセスをできるようにしてください。PTP のマウントを行うコマンドラインは MTP デバイスのそれに少し似ています: {{ic|gio mount gphoto2://[usb:002,019]/}}。 |
||
− | 上記のコマンドで直る場合、以下の内容で {{ic|/etc/modprobe.d/usb_hci_order.conf}} を作成してください: |
||
+ | {{Note|デバイスへのアクセスが制限され、コマンドラインから標準的なコマンド (例: {{ic|cp}}、{{ic|ls}}) を使用できない場合、[[gvfs]] 独自の代替コマンドを探してみてください: {{ic|ls -1 /usr/bin/gvfs-*}}。}} |
||
− | # 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 === |
||
+ | === libmtp (gvfs-mtp): ファイルマネージャ (nautilus、pcmanfm、vifm など) が Android デバイスの DCIM/Camera にアクセスする際にハングする === |
||
− | {{Pkg|gvfs-mtp}} パッケージをインストールしても、デバイスがファイルマネージャに表示されない場合、デバイスが自動マウントされるように udev ルールを書く必要があるかもしれません。 |
||
+ | 症状: DCIM/Camera ディレクトリに入る事以外、うまく機能する。この場合、ファイルマネージャがフリーズし、コマンドラインからそのディレクトリで {{ic|ls}} を実行することさえできなくなるs。 |
||
− | デバイスを接続して、vendor-id と product-id をそれぞれ取得してください: |
||
+ | 可能性の高い原因は libmtp のバグです。 |
||
− | $ lsusb |
||
− | Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920 |
||
− | (...) |
||
+ | どうやら {{ic|20180915_180351(0).jpg}} のような名前のファイルが原因のようです。例として、Samsung の電話はそのような名前のファイルを作成する傾向にあります。 |
||
− | ID の文字の後の2つの数字が ''vendorID'' : ''productID'' です。 |
||
+ | これに関するチケット ([https://sourceforge.net/p/libmtp/bugs/1830/ 1]、[https://sourceforge.net/p/libmtp/bugs/1808/ 2] など) と質問 ([https://askubuntu.com/questions/995383/nautilus-hangs-on-accessing-dcim-camera-on-android 1]、[https://askubuntu.com/questions/1030736/cant-open-photos-stored-on-android-system-from-ubuntu/1148034#1148034 2]) が複数存在します。 |
||
− | ID がわかったら udev ルールを作成します。例: |
||
+ | 可能な回避策は、そのようなディレクトリに対しては [[#FUSE ファイルシステム]] にある go-mtpfs などの異なるオプションを使うか、あるいは、どうにかして携帯カメラのファイル命名ポリシーを変更する (または、[https://opencamera.sourceforge.io/ Open Camera] などの他のカメラアプリに変える) ことです。 |
||
− | # nano /etc/udev/rules.d/51-android.rules |
||
+ | === jmtpfs: 初回アクセス時に入出力エラー === |
||
− | ルールの中身は以下のようにしてください: |
||
+ | 症状: jmtpfs はマウントに成功するが、デバイス上のファイルに ({{ic|ls}} などで) アクセスすると、エラーが報告される: |
||
− | ATTR{idVendor}=="YOUR VENDOR ID HERE", ATTR{idProduct}=="YOUR PRODUCT ID HERE", SYMLINK+="libmtp", MODE="660", ENV{ID_MTP_DEVICE}="1" |
||
+ | cannot access <mount-point>: Input/output error |
||
− | udev ルールをリロードします: |
||
+ | これはセキュリティ機能のようです: 携帯電話がロックスクリーンによってロックされているとき、MTP は機能しません。電話をアンロックすれば、ケーブルで繋がっている限り再び機能するはずです。 |
||
− | # udevadm control --reload |
||
+ | === kio-mtp: 「ファイルマネージャで開く」アクションを使用できない === |
||
− | そしてシステムを再起動してください。これで (Thunar などの) ファイルマネージャは MTP デバイスを自動でマウントできるようになったはずです [https://bbs.archlinux.org/viewtopic.php?id=180719]。 |
||
+ | 「ファイルマネージャで開く」アクションを使うことができない場合、{{ic|/usr/share/solid/actions/solid_mtp.desktop}} ファイルを編集することでこの問題を回避できます。 |
||
− | === kio-mtp === |
||
+ | |||
+ | {{ic|1=Exec=kioclient exec mtp:udi=%i/}} の行を {{ic|1=Exec=dolphin "mtp:/"}} に変更してください。 |
||
+ | |||
+ | === kio-mtp が異なるサービスから同時に呼び出される === |
||
+ | |||
+ | [https://bbs.archlinux.org/viewtopic.php?pid=1657736#p1657736 このフォーラム]で言及されている通り、mtpfs と kio-mtp (及び、音楽プレイヤを含む、kio-mtp を使用する、衝突するサービス) を並列に使用するのは避けるべきです。 |
||
+ | |||
+ | 例えば、MTP サービス用の Amarok のプラグインは、Dolphin (plasma) が異なるモデルの電話のファイルにアクセスできなくするかもしれません。そのプラグインをオフにすることで、少なくとも1つのユーザに対してはこれを解決できます。 |
||
+ | |||
+ | === Android File Transfer: connect failed: no MTP device found === |
||
+ | |||
+ | {{Pkg|android-file-transfer}} をインストールした後に MTP デバイスをマウントしようとすると以下のエラーが発生する場合: |
||
+ | |||
+ | {{hc|$ aft-mtp-mount /path/to/folder| |
||
+ | connect failed: no MTP device found |
||
+ | }} |
||
+ | {{Pkg|android-udev}} をインストールしてください。このパッケージには製造業者/デバイス毎に対して MTP デバイスの [[udev|udev ルール]]が含まれていて、[[ADB]] や MTP をより簡単に使えるようにします。 |
||
− | "ファイルマネージャで開く"が使えない場合は、{{ic|/usr/share/apps/solid/actions/solid_mtp.desktop}} ファイルを編集することで問題を解決できます。 |
||
+ | {{TranslationStatus|Media Transfer Protocol|2023-03-22|773401}} |
||
− | 次の行を: |
||
− | Exec=kioclient exec mtp:udi=%i/ |
||
− | 以下のように変更してください: |
||
− | Exec=dolphin "mtp:/" |
2023年3月22日 (水) 16:38時点における最新版
メディア転送プロトコル (Media Transfer Protocol, MTP) は、多くの携帯電話 (全 Windows Phone 7/8/10 デバイスやほとんどの新しい Android デバイス) やメディアプレイヤ (例: Creative Zen) との間でメディアファイルの転送を行うために使用できます。
接続
MTP を介してコンピュータをデバイスに接続するには:
- 対象デバイスがあなたのコンピュータと USB で接続されている必要があります
- MTP が対象デバイスで有効化されている必要があります
- デバイスのスクリーンがアンロックされている必要があります (セキュリティ上の理由により)
FUSE ファイルシステム
以下のプログラムは、FUSE ファイルシステムを介して MTP デバイスにアクセスできるようにします。
FUSE ベースのファイルシステムを使用する場合、まず先にマウントポイントのディレクトリを作成する必要があるかもしれません。以下の例では ~/mnt
ディレクトリが使われています。
通常、FUSE のマウントは fusermount -u マウントポイント
を使ってアンマウントできます。
Android File Transfer
Android File Transfer — CLI、Qt UI、カスタムの MTP 実装を使用する FUSE ラッパを搭載している MTP クライアント
~/mnt
にデバイスをマウントするには:
$ aft-mtp-mount ~/mnt
アルバムアートを表示させたい場合は、albumart.xxx
という名前にし、一番最初にマウント先のフォルダに配置しておかなければなりません。その後で、他のファイルをコピーしてください。また、fuse は ui/cli のファイル転送よりも 7~8 倍遅くなる可能性があることに注意してください。
コマンドラインインターフェイスでデバイスと対話したい場合は、以下のコマンドを実行してください:
$ aft-mtp-cli
help と入力すると、利用可能な全コマンドが一覧表示されます。exit と入力すると終了します。
グラフィカルユーザインターフェイスでデバイスと対話したい場合は、android-file-transfer アプリケーションを起動し、マウント先フォルダを選択して、ツールバーの任意のボタンを押してください。利用可能なオプションは、Upload Album、Upload Directory、Upload Files です。最後の2つは自明です。Upload album は、ソースディレクトリからアルバムカバーを検索し、利用可能な最も良いカバーを設定します。
MTPfs
MTPfs — libmtp ベース。任意の MTP デバイスに対して読み書きをサポートする FUSE ファイルシステムです
まず、/etc/fuse.conf
を編集して、以下の行をアンコメントしてください:
user_allow_other
~/mnt
にデバイスをマウントします:
$ mtpfs -o allow_other ~/mnt
jmtpfs
jmtpfs — libmtp ベース。MTP (Media Transfer Protocol) デバイスにアクセスします。
~/mnt
にデバイスをマウントします:
$ jmtpfs ~/mnt
2つのステップを行うことにより、Linux の残りの部分と一致させます (通常の mount/umount コマンドを使用する):
$# ln -s <実際の mount コマンドのパス/名前> <Linux の mount 規則と一致する名前> $ ln -s /sbin/jmtpfs /sbin/mount.jmtpfs
以下の行を /etc/fstab
に追加してください:
#jmtpfs <mount path> fuse nodev,allow_other,<other options> 0 0 jmtpfs /home/sam/run/motog fuse nodev,allow_other,rw,user,noauto,noatime,uid=1000,gid=1000 0 0
そして、デバイスをマウントし、オプションが渡されていることを確認してください:
$ mount /home/sam/run/motog Device 0 (VID=22b8 and PID=2e82) is a Motorola Moto G (ID2). Android device detected, assigning default bug flags $ mount ... jmtpfs on /home/sam/run/motog type fuse.jmtpfs (rw,nosuid,nodev,noexec,noatime,user_id=1000,group_id=1000,allow_other,user=sam)
SIMPLE-MTPFS
SIMPLE-MTPFS — libmtp ベース。Simple Media Transfer Protocol FileSystem は、USB でローカルマシンに接続された MTP デバイス上のファイルを操作できるファイルシステムです
検出されたデバイスを一覧表示するには simple-mtpfs -l
を実行してください。
リストの最初のデバイスを ~/mnt
にマウントするには、simple-mtpfs --device 1 ~/mnt
を実行してください。
go-mtpfs
go-mtpfs — カスタムの MTP 実装を持つ、Go で書かれた FUSE ファイルシステム
android-udev をインストールしてください。これは、/etc/udev/rules.d/51-android.rules
を編集して、(mtp-detect を実行後に見られる) idVendor
と idProduct
に適用できるようにします。行の最後にはあなたのユーザ OWNER="<user>"
を追加してください。
~/mnt
上にデバイスをマウントします:
$ go-mtpfs ~/mnt
libmtp
libmtp はライブラリ MTP 実装です。いくつかのコマンドラインツールの例も付属しています (pacman -Ql libmtp
でリストアップできます)。
デバイスを検出するには mtp-detect
を実行してください。
エラーが返ってくる場合、あなたのユーザが adbusers
ユーザグループに属していることを確認してください。
mtp-connect
コマンドでファイルを転送できます。
フロントエンド
gMTP — libmtp のためのグラフィカルフロントエンド。デスクトップに依存しない GUI で Android デバイスに接続し、ファイルを管理できます。
メディアプレイヤー
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]
/etc/udev/rules.d/51-android.rules
へのエントリは以下のようになります:
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666", OWNER="[username]"
udev ルールをリロードしてください:
# udevadm control --reload
ファイルマネージャ統合
MTP で接続された Android デバイスのストレージのコンテンツをファイルマネージャで閲覧するには、対応するプラグインをインストールしてください:
- GVFS (GNOME Files) を使用するファイルマネージャの場合は、MTP 用の gvfs-mtp か PTP サポート用の gvfs-gphoto2 をインストールしてください。
- KIO (KDE の Dolphin) を使用するファイルマネージャの場合は、kio-extras (dolphin の依存パッケージ) に MTP サポートが含まれています。
必要なパッケージをインストールしたら、デバイスがファイルマネージャに自動的に表示され、URL (例: mtp://[usb:002,013]/
) からアクセスできるはずです。
gvfs-mtp
gvfs-mtp は公式リポジトリで利用可能です。
lsusb
を使うことで、あなたのデバイスの情報を取得できます。Bus 番号と Device 番号は、gvfs-mtp
で使ったり、udev ルールを作成する際のデバイス ID として使ったりできます。
Bus 002 Device 018: ID 04b7:88a9 Compal Electronics, Inc.
検出された、MTP が有効化されたデバイスを見るには
gio mount を使うか:
gio mount -li | grep -e ^Volume -e activation_root
Volume(0): MT65xx Android Phone activation_root=mtp://[usb:002,018]/
lsusb を使ってください:
lsusb -v 2> /dev/null | grep -e Bus -e iInterface -e bInterfaceProtocol
... Bus 002 Device 018: ID 04b7:88a9 Compal Electronics, Inc. bInterfaceProtocol 0 iInterface 5 MTP ...
利用可能なすべての接続済み MTP デバイスをマウントするには、インラインスクリプトを使用してください:
gio mount -li | awk -F= '{if(index($2,"mtp") == 1)system("gio mount "$2)}'
gvfs-mtp でコマンドからマウント/ディスマウントするには、Bus 番号と Device 番号を使用してください。例えば、マウントする場合は gio mount mtp://[usb:001,007]/
、アンマウントする場合は gio mount -u mtp://[usb:001,007]/
となります。マウント済みデバイスは mtp:host= で始まるディレクトリ内で利用でき、/run/user/$UID/gvfs/ 下に配置されています。
gvfs で MTP デバイスの自動マウントを無効化するには、/usr/share/gvfs/mounts/mtp.mount
内の AutoMount 変数の値を true から false に変更してください。
ファイルマネージャにあなたのデバイスが表示されない場合、#libmtp にネイティブサポートが存在せず、サポートされているデバイスのリストに入っていません。コマンドラインを使ってマウントを試みる場合は、エラーが発生する場合もあります:
Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN. Please report this VID/PID and the device model to the libmtp development team
デバイスをファイルマネージャに表示させるための回避策は、対象デバイス用の udev ルールを記述することです。しかし、MTP 接続を用いてデバイスをマウントできる保証はありません。
vendorId:productID という形式の ID を使用してください (例: 04b7:88a9)。そして、設定ファイルを作成して udev ルールを作成してください:
/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="04b7", ATTR{idProduct}=="88a9", MODE="0660", GROUP="uucp", ENV{ID_MTP_DEVICE}="1", SYMLINK+="libmtp"
udev ルールを再読込してください:
# udevadm control --reload
gvfs をサポートしているファイルマネージャは、MTP デバイスを表示でき、#libmtp によってサポートされていればマウントできます。しかし、サポートがなく、デバイスを開けない場合、携帯電話の設定を PTP に変更し、gvfs-gphoto2 をインストールして、最低限、写真へのアクセスをできるようにしてください。PTP のマウントを行うコマンドラインは MTP デバイスのそれに少し似ています: gio mount gphoto2://[usb:002,019]/
。
トラブルシューティング
libmtp (gvfs-mtp): ファイルマネージャ (nautilus、pcmanfm、vifm など) が Android デバイスの DCIM/Camera にアクセスする際にハングする
症状: DCIM/Camera ディレクトリに入る事以外、うまく機能する。この場合、ファイルマネージャがフリーズし、コマンドラインからそのディレクトリで ls
を実行することさえできなくなるs。
可能性の高い原因は libmtp のバグです。
どうやら 20180915_180351(0).jpg
のような名前のファイルが原因のようです。例として、Samsung の電話はそのような名前のファイルを作成する傾向にあります。
これに関するチケット (1、2 など) と質問 (1、2) が複数存在します。
可能な回避策は、そのようなディレクトリに対しては #FUSE ファイルシステム にある go-mtpfs などの異なるオプションを使うか、あるいは、どうにかして携帯カメラのファイル命名ポリシーを変更する (または、Open Camera などの他のカメラアプリに変える) ことです。
jmtpfs: 初回アクセス時に入出力エラー
症状: jmtpfs はマウントに成功するが、デバイス上のファイルに (ls
などで) アクセスすると、エラーが報告される:
cannot access <mount-point>: Input/output error
これはセキュリティ機能のようです: 携帯電話がロックスクリーンによってロックされているとき、MTP は機能しません。電話をアンロックすれば、ケーブルで繋がっている限り再び機能するはずです。
kio-mtp: 「ファイルマネージャで開く」アクションを使用できない
「ファイルマネージャで開く」アクションを使うことができない場合、/usr/share/solid/actions/solid_mtp.desktop
ファイルを編集することでこの問題を回避できます。
Exec=kioclient exec mtp:udi=%i/
の行を Exec=dolphin "mtp:/"
に変更してください。
kio-mtp が異なるサービスから同時に呼び出される
このフォーラムで言及されている通り、mtpfs と kio-mtp (及び、音楽プレイヤを含む、kio-mtp を使用する、衝突するサービス) を並列に使用するのは避けるべきです。
例えば、MTP サービス用の Amarok のプラグインは、Dolphin (plasma) が異なるモデルの電話のファイルにアクセスできなくするかもしれません。そのプラグインをオフにすることで、少なくとも1つのユーザに対してはこれを解決できます。
Android File Transfer: connect failed: no MTP device found
android-file-transfer をインストールした後に MTP デバイスをマウントしようとすると以下のエラーが発生する場合:
$ aft-mtp-mount /path/to/folder
connect failed: no MTP device found
android-udev をインストールしてください。このパッケージには製造業者/デバイス毎に対して MTP デバイスの udev ルールが含まれていて、ADB や MTP をより簡単に使えるようにします。