Ubuntu 13.04MTPを介した外部デバイスへのストレージアクセスが想定されているためGVFS-MTPモジュールを介してすぐに使用できます。
この質問はGalaxy Nexusに関するものですが、他のAndroidデバイスとWindows PhonesおよびMTP対応メディアプレーヤーもサポートされています。
troubleshootingについては、 this anwser を参照してください。
Galaxy NexusでMTPを介してファイル転送を動作させるのにかなりの問題があります。 Kubuntu 11.10 64ビットを使用していますが、これが私がやったことであり、結果は次のとおりです:
/etc/udev/rules.d/51-Android.rules
にデバイスのルールを追加しました。ルールは次のとおりであり、adb
に対して機能します。
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
udev
(および念のためコンピューター)を再起動しました。
Adbは機能し、MTPを介してデバイスから読み取るためのすべての方法が機能するようです(mtpfs、gmtpでマウントして、mtp-toolsパッケージを直接使用してみました)。ただし、デバイスに書き込もうとすると、何も動作しません。
例として、mtp-newfolder test_dir 0 0
を実行すると、次の出力が得られます。
libmtp version: 1.1.0
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
Folder creation failed.
ERROR: Could not close session!
デバイスを再接続せずにmtp-newfolderの失敗後にmtp-folders
を実行すると、次の出力が表示されます。
Attempting to connect device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
mtp-folders: Successfully connected
Friendly name: (NULL)
Error 1: Get Storage information failed.
Error 2: PTP Layer error 02fe: get_all_metadata_fast(): could not get proplist of all objects.
Error 2: (Look this up in ptp.h for an explanation.)
Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
Error 2: (Look this up in ptp.h for an explanation.)
LIBMTP_Get_Storage()
: Resource temporarily unavailable
OK.
Dmesgには次のものが付属しています。
[ 1000.912082] usb 2-4: reset high speed USB device number 7 using ehci_hcd
[ 1001.045877] usb 2-4: usbfs: process 3166 (mtp-folders) did not claim interface 0 before use
誰が何をすべきかについての考えを持っていますか?
編集:
PTPモードも試しました。繰り返しますが、読み取りは正常に機能しますが、デバイスに何かを書き込むことはできません。
Ubuntu 13.04以降、MTPを介した外部デバイスへのストレージアクセスは、GVFS-MTPモジュールを介してそのまま使用できます。
関連質問: 今後のUbuntuリリースでmtpサポートを改善する計画はありますか?
トラブルシューティングについては、 この回答 を参照してください。
私にとっては、システムに最新のlibmtp
ファイルがないという問題でした。そこで、私は問題を修正し、 他の人を助けるためのこの記事 を作成しました。
リンクの概要:古いUbuntuリリースにバンドルされているlibmtp
にバグがありました。このバグは、libmtp
の- 最新のソース ですでに修正されています。
Ubuntu 13.04ストレージは、MTP対応デバイスへのアクセスが GVFS バックエンドを介してすぐに機能するためです。 13.04以前のインストール手順については、将来のUBUNTUリリースでMTPサポートを改善する計画はありますか?をご覧ください。
このソリューションは、すべてAndroidデバイスで動作するはずです。MTP機能と、おそらくすべての非AndroidデバイスにWindows PhonesやポータブルMedia Players。
多少の混乱がありました。物事を整理してみましょう。
しない保証が無効になる可能性のあることを行う必要があります。
ロック解除とは、この回答のオペレーティングシステムのロック画面を指します。
特定のudevルールを介して、ADB、fastbootなどのデバイスへの開発者アクセスを設定する必要はありません。 (Androidの説明は、SBアクセスの設定her e またはher e の章にあります。)
私の知る限り、FuseもFuse関連オプションも必要ありません。
デバイスにファイルを配置できません。
MTPを介してUbuntuでデバイスのストレージにアクセスするには、デバイスがnlockedである必要があります。
デバイスをマウントできないというエラーメッセージが表示されます。
以下のエラーメッセージが表示される場合は、デバイスonceを再接続してみてください。
エラーメッセージが再び表示される場合は、ランチャーから新しいnautilusウィンドウを開き(デバイスのアイコンをクリックすることをお勧めします)、おそらく現在のnautilusウィンドウを閉じます。おそらく関連する: Androidデバイスのいずれかを無効にするudevルールを作成する方法?
デバイスにudevルールがあるかどうかを確認
ターミナルを開き、lsusb
と入力します。出力でデバイスを見つけ、IDを書き留めます(例:0fce:01b1
)。最初の部分はベンダーID、最後の部分は製品IDです。
nano /lib/udev/rules.d/69-libmtp.rules
と対応するmtp udevルールファイルを開き、製品IDを検索します(使用 Ctrl+W)。見つからない場合は、以下のパターンとrebootに従って/etc/udev/rules.d/69-libmtp.rules
にカスタムエントリを作成する必要があります。
# SONY Xperia Z2 MTP
ATTR{idVendor}=="01b1", ATTR{idProduct}=="01b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
バグを報告するを libmtp packageより正確には libmtp-common )に対して考慮してください。 。
まだ接続できない
お使いのデバイスは、基になるlibmtp
でサポートされていないか、Lumia 620で同じ問題が発生する可能性があります。回避策(再現手順)に従ってください LP#1247572:Nokia Lumia 620 (WP8)nautilusのgvfs-mtpで確実にマウントできません 。 (ここでもデバイスは問題なく動作しませんが、mtp-detect
を使用すると役立ちます。)
デバイスの libmtpバグトラッカー を検索し、 プロジェクトページ の新しいデバイスの指示に従ってバグレポートを開いてください。
バグトラッカーはデバイスをサポート対象としてリストしますが、それでも動作しません
場合によっては、ご使用のデバイスに関するバグレポートが、ディストリビューションに同梱されているものよりも新しいlibmtpリリースで既に提出および解決されている場合があります(例: Motorola Moto G )。その場合は、公式リポジトリが更新されるのを待つか、更新されたPPAを探す必要があります。
公式のUbuntuソフトウェアチャンネルとプライベートPPAで利用可能なすべてのlibmtpバージョンの更新されたリストは、 こちら にあります(信頼できないアーカイブ内の 'libmtpの他のバージョン)。/02/13 このPPA Matthieu BaertsによるUbuntuで利用可能な最新のlibmtpパッケージを提供しています。
警告:このPPAには、さまざまな、おそらく不安定なパッケージが含まれています。システムに追加することはお勧めしません。代わりに、libmtpパッケージを個別にダウンロードして、システムに手動でインストールできます。
先に進む前に、 PPAとそのリスク をよく理解してください。次の手順に進む前に、元のパッケージの復元に関する次の段落もお読みください。
次のパッケージをダウンロードします:libmtp-common
、libmtp-runtime
、libmtp9
、mtp-tools
。システムに適したアーキテクチャを選択してください(これは通常AMD64
です)。
2014/02/13現在のパッケージリンクは次のとおりです。 libmtp-common 、 libmtp-runtime 、 libmtp9 、 mtp-tools
Dpkgを使用して更新パッケージを手動でインストールします($HOME/Downloads
をダウンロードフォルダーに変更し、他のdebファイルが存在しないことを確認します。
cd "$HOME/Downloads"
Sudo dpkg -i *.deb
すべてが正常にインストールされたら、コンピューターを再起動し、Androidデバイスのロックを解除し、USB経由で接続すると、ファイルマネージャーに表示されます。
これは私(@Glutanimate)とMotorola Moto Gでうまく機能しました。Ubuntu12.04 LTSを実行していたため、最初にgnome-gvfs
の更新バージョンをインストールする必要がありました。詳細については、上部の13.04より前のインストール手順を参照してください。
何か問題が発生した場合やデバイスがまだ認識されない場合に変更を取り消すには、元のパッケージを手動でインストールする必要があります。 libmtp source overview に進み、Ubuntuのリリースを見つけます。前の手順2で行ったように、問題のエントリを展開し、パッケージのダウンロードに進みます。手順3の説明に従ってインストールを続行し、システムを再起動します。すべてが正常に戻ります。
omgubunt で Bilal Akhtar's 提案を試みましたか?
セットアップ
最初に、Sudo apt-get install mtp-tools mtpfs
を使用して必要なツールをインストールします
Galaxy Nexusをコンピューターに接続します。電話機で通知ドロワーを開き、「USB接続タイプ」をクリックします。 MTPが選択されていることを確認してください。
次に、次のコマンドを実行します。
mtp-detect | grep idVendor
mtp-detect | grep idProduct
次のような出力が得られます。
次に、これらのコマンドを実行します。
gksu gedit /etc/udev/rules.d/51-Android.rules
Geditウィンドウが開きます。このテキストをすべて単一行に入力します:
SUBSYSTEM=="usb", ATTR{idVendor}=="VENDORID", ATTR{idProduct}=="PRODUCTID", MODE="0666"
VENDORID
を以前に書き留めたidVendor
に置き換えます。同様に、PRODUCTID
を書き留めたidProduct
に置き換えます。私の場合、それらはそれぞれ04e8
と685c
でしたが、それらはあなたにとって異なるかもしれません。
ファイルを保存して閉じます。次に、disconnect電話機を開き、次のコマンドを実行します。
Sudo service udev restart
Sudo mkdir /media/GalaxyNexus
Sudo chmod a+rwx /media/GalaxyNexus
Sudo adduser $USER Fuse
$USER
はデフォルトのシェル変数であり、追加するユーザー(通常は自分)でなければなりません。ここで、次のコマンドを実行します。
gksu gedit /etc/Fuse.conf
Geditウィンドウで、次のように、最後の行(#
で始まる行)の先頭にある#user_allow_other
を削除します。
ほぼ終わりです!次に、コンピューターを再起動してから、次の3つのコマンドを実行します。
echo "alias Android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
echo "alias Android-disconnect=\"fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
source ~/.bashrc
使用法
電話機を接続し、電話機がMTPを使用していることを確認して、Android-connect
を実行します。
出来上がり! Nautilusを使用して、Android電話のコンテンツを参照できるようになりました。ファイルマネージャーを起動し、サイドバーで[GalaxyNexus]をクリックして、USBスティックの場合と同じように電話のコンテンツを参照します。通常のファイルシステムと同様に、ファイルを追加、削除、および変更することもできます。
電話を安全に取り外すには、Android-disconnect
を実行するだけです。
結論
今後は、Android-connect
を実行して電話をマウントし、Android-disconnect
を実行して電話を安全に取り外すだけです。その他はすべて自動的に処理される必要があります。ケーブル接続でマウントとアンマウントを自動的に実行する多くの方法を試しましたが、これは私が思いつく最高のソリューションでした。
これらの2つのコマンドは、実行するのにルート権限を必要としません。 Fuseユーザーグループのメンバーであるすべてのユーザーは、ルートアクセスなしでこれらのコマンドを実行できる必要があります。
それでおしまい!アイスクリームサンドイッチ電話をUbuntuコンピューターに正常に接続しました。プロセスは初心者には長いかもしれませんが、すべてがスムーズに行われるように、誰かが来てこのすべてのGUIを作成すると確信しています。 :)
libmtp
に基づくすべてのプログラムは、まだGalaxy Nexusに問題があるようです(libmtp 1.1.3以降)。 gphoto2
に基づいたプログラムは私のために機能します。
個人的には、同じ名前のパッケージで利用可能なgphotofs
を使用しています。
gphotofs ~/mymountpoint
を使用してマウントし、完了したらfusermount -u ~/mymountpoint
を使用してアンマウントします。
以下をインストールして再起動します。
Sudo apt-get install gvfs-backends mtpfs jmtpfs libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9 gmtp libdbus-cpp5 libgflags2v5 libgoogle-glog0v5 libmtp-dbg libmtp-doc libmtpserver-dev libmtpserver1 libprocess-cpp3 mtp-server
最初のステップとして、jmtpfs
(Sudo apt-get install jmtpfs
をターミナルにインストールします- Ctrl+Alt+T )、mkdir foldername
でフォルダーを作成し、jmtpfs foldername
でデバイスをマウントしてから、nautilus(ファイル)に移動します。
デバイスがubuntuのlibmtp
バージョンと互換性がない場合。次のように、最新のlibmtp
(> 1.1.12)をダウンロードしてビルドする必要があります。 libmtpの最新バージョンをインストールするにはどうすればよいですか?
端末でmtp-folders
を使用するか、グラフィックインターフェイスgmtp
を使用して、フォルダーを表示することもできます。
Sudo
なしで実行すると、前の手順でエラーが表示される場合があります。
libusb_open() failed!: Permission denied
Sudoを使用しないようにするには、上記のようにデバイスを/etc/udev/rules.d/51-Android.rules
ファイルに追加し(desguaを参照)、ルールをリロードするか、再起動する必要があります。