Question Faire fonctionner les appareils compatibles MTP avec Ubuntu?


Depuis Ubuntu 13.04 accès au stockage des périphériques externes via MTP est supposé travailler hors de la boîte via un module GVFS-MTP.

Alors que cette question concerne le Galaxy Nexus, d'autres appareils Android ainsi que Téléphones Windows et lecteurs multimédias compatibles MTP sont également pris en charge.

Pour dépannage voir cette réponse.


J'ai beaucoup de mal à faire fonctionner les transferts de fichiers sur MTP avec le Galaxy Nexus. J'utilise Kubuntu 11.10 64-bit, et c'est ce que j'ai fait et les résultats que j'ai obtenus:

  1. Règle ajoutée pour périphérique dans /etc/udev/rules.d/51-android.rules. La règle est la suivante et fonctionne pour adb:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. Redémarré udev (et ordinateur juste pour être sûr).

Adb fonctionne, et toutes les méthodes de lecture depuis le périphérique via MTP semblent fonctionner (j'ai essayé de monter avec mtpfs, gmtp et d'utiliser directement le paquet mtp-tools). Lorsque j'essaie d'écrire sur l'appareil, rien n'a été essayé.

A titre d'exemple, en cours d'exécution mtp-newfolder test_dir 0 0 donne la sortie suivante:

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!

Si je cours mtp-folders après un mtp-newfolder échoué sans avoir à rebrancher le périphérique, j'obtiens la sortie suivante:

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.

Accompagné de ce qui suit dans 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

Est-ce que quelqu'un a une idée de ce qu'il faut faire?

MODIFIER:

J'ai aussi essayé le mode PTP. Encore une fois, la lecture fonctionne bien, mais je ne peux rien écrire sur l'appareil.


67
2017-12-14 09:01


origine


Je ne pense pas que ce soit Samsung .... et je pense que c'est Android. Mon appareil alimenté par Honeycomb est exactement le même que celui où vous devez utiliser MTP uniquement. Je pense que c'est comme ça que vont tous les appareils Android post 2.3.


Réponses:


Depuis Ubuntu 13.04, l'accès au stockage sur des périphériques externes via MTP fonctionne directement via un module GVFS-MTP.

Question connexe: Y a-t-il des plans pour améliorer le support mtp sur les futures versions d'Ubuntu?

Pour le dépannage, voir cette réponse.


Pour moi, c'était un problème de ne pas avoir la dernière libmtp fichiers sur mon système. J'ai donc corrigé le problème et fait cet article pour aider les autres.

Résumé du lien: Il y avait un bug dans le libmtp livré avec les anciennes versions d'Ubuntu. Ce bogue était déjà corrigé dans le dernière source de libmtp.


37
2017-12-18 10:22



Le problème semble être résolu dans les paquets pour Ubuntu 12.04, donc ceux-ci peuvent être utilisés si vous êtes assez courageux pour le faire. Je les ai attrapés de launchpad.net/ubuntu/+source/libmtp/1.1.1-1 et créé les paquets pour le système (et la même chose pour gmtp) - Tatu Lahtela
@ Shannon. Merci. C'est la meilleure solution. J'aurais aimé l'avoir trouvé en premier. - MountainX
rhythmbox se fige toujours et donne des erreurs (LIBMTP_Send_Representative_Sample (): impossible d'obtenir les informations sur l'objet.) en essayant d'accéder au nexus, et nautilus donne: Impossible de monter Galaxy Nexus; Erreur lors de l'initialisation de la caméra: -60: Impossible de verrouiller le périphérique. Caca. - waspinator
Ce serait bien de mettre à jour les instructions pour obtenir la dernière version de mtp, et non 1.1.1 - Kostiantyn Rybnikov


As-tu essayé Bilal Akhtar's suggestion à omgubuntu?

Connecter votre téléphone ou tablette Android à Ubuntu avec MTPFS

  1. Installer

    Tout d'abord, installez les outils nécessaires avec sudo apt-get install mtp-tools mtpfs

    Connectez votre Galaxy Nexus à votre ordinateur. Sur votre téléphone, ouvrez le tiroir de notification et cliquez sur "Type de connexion USB". Assurez-vous que MTP est sélectionné.

    image showing Android USB connection settings

    Ensuite, exécutez ces commandes:

    mtp-detect | grep idVendor
    mtp-detect | grep idProduct
    

    Vous obtiendrez une sortie comme celle-ci: enter image description here

    Maintenant, exécutez ces commandes:

    gksu gedit /etc/udev/rules.d/51-android.rules
    

    Une fenêtre Gedit devrait s'ouvrir. Tapez ce texte, le tout dans un une seule ligne:

    SUBSYSTEM=="usb", ATTR{idVendor}=="VENDORID", ATTR{idProduct}=="PRODUCTID", MODE="0666"
    

    Remplacer VENDORID avec le idVendor vous aviez noté plus tôt. De même, remplacer PRODUCTID avec le idProduct vous aviez noté. Dans mon cas, ils étaient 04e8 et 685c respectivement, mais ils ont peut-être été différents pour vous.

    Enregistrez et fermez le fichier. Alors, déconnecter votre téléphone et lancez ces commandes:

    sudo service udev restart
    sudo mkdir /media/GalaxyNexus
    sudo chmod a+rwx /media/GalaxyNexus
    sudo adduser $USER fuse
    

    $USERest une variable shell par défaut et devrait être l'utilisateur que vous souhaitez ajouter (généralement vous-même). Maintenant, lancez cette commande:

    gksu gedit /etc/fuse.conf
    

    Dans la fenêtre Gedit, supprimez le # au début de la dernière ligne (celle qui commence par #user_allow_other) comme ça:

    enter image description here

    Vous avez presque fini! Maintenant, redémarrez votre ordinateur, puis exécutez ces trois commandes:

    echo "alias android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
    echo "alias android-disconnect=\"fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
    source ~/.bashrc
    
  2. Usage

    Connectez votre téléphone, assurez-vous que votre téléphone utilise MTP et exécutez android-connect.

    Voila! Vous pouvez maintenant parcourir le contenu de votre téléphone Android à l'aide de Nautilus. Il suffit de lancer le gestionnaire de fichiers, puis dans la barre latérale, cliquez sur GalaxyNexus pour parcourir le contenu de votre téléphone comme vous le feriez avec une clé USB. Vous pouvez également ajouter, supprimer et modifier des fichiers comme un système de fichiers normal.

    screenshot of nautilus displaying phone contents

    Pour retirer le téléphone en toute sécurité, exécutez simplement android-disconnect.

  3. Conclusion

    À partir de maintenant, il vous suffit de courir android-connect pour monter votre téléphone puis android-disconnect pour retirer votre téléphone en toute sécurité. Tout le reste devrait être traité automatiquement. J'ai essayé de nombreuses façons d'obtenir le montage et le démontage automatique du câble, mais c'était la meilleure solution possible.

    Ces deux commandes ne nécessitera pas d'autorisations root courir. Tous les utilisateurs membres du groupe d'utilisateurs de fusibles doivent pouvoir exécuter ces commandes sans accès root.

    C'est tout! Vous avez connecté avec succès votre téléphone Ice Cream Sandwich à votre ordinateur Ubuntu. Le processus peut être long pour un débutant, mais je suis sûr que quelqu'un viendra créer une interface graphique pour tout cela afin que tout se passe bien. :)


21
2017-12-17 18:13



Oui, déjà essayé la plupart des façons d'utiliser les outils mtpfs. Comme Shannon l'a découvert, il s'agissait apparemment d'un bug dans libmtp. - Leo
Cela fonctionne, mais j'ai quelques questions. 1. Que fait cette configuration udev, pourquoi cela ne fonctionne-t-il pas? 2. De quelle magie sait-il quel appareil monter quand vous le faites? mtpfs, ou supporte-t-il seulement 1 périphérique connecté à la fois? - Bart van Heukelom
De même, lors de la copie d'un fichier volumineux (avec Nautilus), il semblera copier très rapidement (50 Mo / s) mais pendant ce temps, il ne copiera rien. Ce n'est que lorsque la barre de progression atteint 100% qu'elle démarre la copie réelle (et l'interface se bloque). Peut-être qu'une sorte d'option de tampon peut être désactivée? - Bart van Heukelom
Malheureusement, je ne connais pas les réponses que vous voulez. Je suis désolé. - desgua
Tout cela, mais obtenir ce message en essayant de connecter Android: fusermount: n'a pas réussi à ouvrir /etc/fuse.conf: Permission refusée fusermount: option allow_other seulement autorisée si 'user_allow_other' est défini dans /etc/fuse.conf même bien que j'ai édité /etc/fuse.conf comme indiqué. - Dmitry Shvedov


Connexion d'appareils via MTP avec GVFS

Depuis qu'Ubuntu 13.04, l'accès au stockage aux périphériques compatibles MTP fonctionne parfaitement via un GVFS backend. S'il vous plaît jeter un oeil à Y a-t-il des plans pour améliorer le support mtp sur les futures versions d'Ubuntu? pour les instructions d'installation avant 13.04.

Cette solution devrait fonctionner pour tous les appareils Android fournissant des fonctionnalités MTP et probablement tous les appareils non-Android avec des fonctionnalités MTP comme Téléphones Windows et Lecteurs multimédia portables.

Ne soyez pas confus

Il y a eu une certaine confusion, essayons de clarifier les choses:

  • Toi ne pas besoin de faire tout ce qui peut annuler votre garantie!

    • Vous n'avez pas besoin de rooter votre appareil.
    • Vous n'avez pas besoin de déverrouiller le chargeur de démarrage. (Vous pouvez trouver les instructions pour Android ellee.)

    Le déverrouillage fait simplement référence à l'écran de verrouillage du système d'exploitation dans cette réponse.

  • Vous n'avez pas besoin de configurer l'accès des développeurs à votre appareil comme ADB, fastboot ou quelque chose de similaire avec certaines règles udev. (Vous pouvez trouver des instructions pour Android dans le chapitre Configuration de l'accès USB sae ou ellee.)

  • Pour autant que je sache, vous n'avez pas non plus besoin de FUSE ou de configurer des options liées à FUSE.

Problèmes de dépannage

  1. Je ne peux pas mettre de fichiers sur l'appareil.

    Votre appareil doit être débloqué accéder au stockage de l'appareil avec Ubuntu via MTP.

    showing device in nautilus in locked and unlocked state

  2. Je reçois un message d'erreur indiquant que le périphérique ne peut pas être monté.

    Si vous obtenez le message d'erreur ci-dessous, essayez de le rebrancher une fois que.

    error message that might pop up when connecting

    Si le message d'erreur apparaît à nouveau, ouvrez une nouvelle fenêtre Nautilus à partir du lanceur (de préférence en cliquant sur l'icône du périphérique) et probablement en fermant la fenêtre nautile actuelle. Peut-être lié: Comment créer des règles udev pour désactiver l'un des appareils Android?

  3. Vérifiez s'il existe des règles udev pour votre appareil

    Ouvrez un terminal et tapez lsusb. Trouvez votre appareil dans la sortie et notez l'ID (par ex. 0fce:01b1). La première partie est l'ID du fournisseur, la dernière partie de l'ID du produit.

    Ouvrez le fichier de règles mdp udev correspondant avec nano /lib/udev/rules.d/69-libmtp.rules et rechercher votre identifiant de produit (utiliser Ctrl+W). Si vous ne le trouvez pas, vous devez créer une entrée personnalisée dans /etc/udev/rules.d/69-libmtp.rules en suivant le modèle ci-dessous et redémarrer.

    # 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"
    

    Vous devriez considérer classer un bug contre la paquet libmtp (plus précisément libmtp-common) d’inclure votre appareil dans les futures versions, si cela a fonctionné pour vous.

  4. Je n'arrive toujours pas à me connecter

    Votre appareil n'est pas pris en charge par le sous-jacent libmtp ou vous pourriez rencontrer le même problème que j'ai avec mon Lumia 620, s'il vous plaît suivez la solution de contournement (étapes pour reproduire) j'ai posté dans LP # 1247572: Le Nokia Lumia 620 (WP8) ne se monte pas de manière fiable via gvfs-mtp dans Nautilus. (L'appareil ne fonctionne toujours pas sans problème ici, mais en utilisant mtp-detect aide.)

    Vous devriez chercher le libmtp traqueur de bogues pour votre appareil et suivez les instructions pour les nouveaux appareils sur la page du projet pour ouvrir un rapport de bogue.

  5. Le traqueur de bogues répertorie mon appareil comme supporté, mais cela ne fonctionne toujours pas

    Dans certains cas, un rapport de bogue concernant votre appareil peut déjà avoir été archivé et résolu dans une version plus récente de libmtp que celle fournie par votre distribution (par exemple: Motorola Moto G). Si tel est le cas, vous devrez soit attendre la mise à jour des dépôts officiels, soit rechercher un PPA mis à jour.

    Une liste mise à jour de toutes les versions de libmtp disponibles via les canaux officiels du logiciel Ubuntu et les PPA privés peut être trouvée ici (assurez-vous de développer Autres versions de 'libmtp' dans des archives non fiables). À partir de 2014/02/13 cette PPA par Matthieu Baerts propose le dernier paquet libmtp disponible pour Ubuntu.

    Attention: ce PPA contient une variété de packages différents et éventuellement instables. Je déconseille de l'ajouter à votre système. Au lieu de cela, vous pouvez télécharger les paquets libmtp séparément et les installer manuellement sur votre système.

    Veuillez vous familiariser avec PPA et leurs risques avant d'aller plus loin. Veuillez également lire le paragraphe ci-dessous sur la restauration de vos paquets originaux avant de procéder aux étapes suivantes:

    1. Allez à la page de détail du package de la PPA et développez l'entrée libmtp
    2. Téléchargez les packages suivants: libmtp-common, libmtp-runtime, libmtp9, mtp-tools. Assurez-vous de choisir la bonne architecture pour votre système (ce sera généralement amd64).

      Voici les liens du package à partir de 2014/02/13: libmtp-common, libmtp-runtime, libmtp9, mtp-tools

    3. Procédez à l’installation manuelle des paquets mis à jour avec dpkg (changez $HOME/Downloads dans votre dossier de téléchargement et assurez-vous qu'aucun autre fichier deb n'est présent:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Une fois que tout a été installé avec succès, redémarrez votre ordinateur, déverrouillez votre appareil Android, connectez-le via USB et il devrait apparaître dans votre gestionnaire de fichiers.

    Cela a bien fonctionné pour moi (@Glutanimate) avec mon Motorola Moto G. Parce que j'étais sous Ubuntu 12.04 LTS, je devais d'abord installer une version mise à jour de gnome-gvfs. S'il te plait regarde instructions d'installation avant 13.04 en haut pour plus d'informations.

    Pour annuler les modifications en cas de problème ou si l'appareil n'est toujours pas reconnu, vous devrez installer manuellement les packages d'origine. Allez à la aperçu de la source libmtp et trouvez votre version Ubuntu. Développez l'entrée en question et téléchargez les packages, comme vous l'avez fait précédemment. Continuez l'installation comme décrit à l'étape 3 et redémarrez votre système. Tout devrait redevenir normal maintenant.


19
2018-06-14 23:04



Travaillé parfaitement pour moi ... Merci! - Emmanuel Okeke
+1 pour 'Ne soyez pas confus' Ne fonctionne pas pour ma galaxie s3 mini cependant :( - hugo der hungrige
J'ai travaillé sur ma tablette Samsung Galaxy avec Android 4.1.2, mais je ne peux pas modifier les fichiers lors de vos déplacements. Avez-vous une solution pour cela aussi? - Vesnog
"Certains guides proposent d’ajouter des règles udev à un fichier appelé 51-android.rules. Celles-ci ne sont pas destinées au MTP, ..."  Vous avez perdu toute crédibilité lorsque vous avez dit cela. Les règles dans udev / rules.d / sont entièrement flexibles. 51-android-rules est un endroit parfaitement approprié pour eux. Vous pourriez tout aussi bien mettre la règle dans 52 règles de téléphone - Auspex
@Auspex Je ne comprends pas ce que vous essayez de réaliser ici. Je répète: comment vous gérez vos fichiers /etc C'est à toi de voir. /lib/udev/rules.d/69-libmtp.rules C'est ce que les responsables de paquets ont choisi et je suggère de déposer un bogue contre ce paquet (j'ai mis à jour ma réponse) pour les utilisateurs qui rencontrent ce problème. Si vous avez toujours un problème avec cela, veuillez contacter les responsables ou poster votre propre réponse. Je suis en train de sortir de cette conversation avec vous sur ce sujet. - LiveWireBT


Tous les programmes basés sur libmtp semblent toujours avoir des problèmes avec le Galaxy Nexus (à partir de libmtp 1.1.3). Programmes basés sur gphoto2 travaille pour moi.

Personnellement j'utilise gphotofs, disponible dans un package du même nom.

Utilisation gphotofs ~/mymountpoint monter, alors fusermount -u ~/mymountpoint démonter lorsque vous avez terminé.


5
2017-07-07 13:28



Juste mis à jour vers 12.04 et il semble que libmtp 1.1.3 ne fonctionne pas correctement comme vous l'avez dit. Devra enquêter un peu plus. gphotofs fonctionne parfaitement, alors merci pour la suggestion! - Leo
En utilisant gphotofs me laisse avec un seul répertoire qui est vide. - Nathan Osman


Installez les éléments suivants et redémarrez:

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

3
2017-10-11 11:10



Et oui, cette réponse s'applique également à "Ubuntu 13.04 [et supérieur; où] l'accès au stockage sur des périphériques externes via MTP est censé fonctionner immédiatement via un module GVFS-MTP". Parce qu'il ne peut tout simplement pas être installé hors de la boîte. Même lorsque votre périphérique MTP est déjà monté en série! (Mais en vous donnant un accès en lecture seule ou d'autres problèmes.) - tanius
@tanius Je dois dire que MTP est tellement lent que je ne l'utilise même plus. esfile explorer a un serveur ftp et j'utilise simplement curl pour télécharger des fichiers sur le périphérique sur mon réseau local. - mchid


Dans un premier temps, j'installerais jmtpfs (sudo apt-get install jmtpfs dans le terminal - Ctrl+Alt+T ), puis créez un dossier avec mkdir foldername puis montez l'appareil avec jmtpfs foldername, puis allez à Nautilus (Fichiers).

Si votre appareil n'est pas compatible avec le libmtp version dans Ubuntu. Vous devez télécharger et construire un récent libmtp (> 1.1.12), comme dans: Comment puis-je installer la dernière version de libmtp?

Vous devriez pouvoir voir les dossiers aussi en utilisant mtp-folders dans un terminal ou avec l'interface graphique gmtp.

Les étapes précédentes peuvent afficher une erreur si vous les exécutez sans sudo:

libusb_open() failed!: Permission denied

Pour éviter d’utiliser sudo, vous devez ajouter votre appareil au /etc/udev/rules.d/51-android.rules fichier comme ci-dessus et recharger les règles ou redémarrer.


0
2017-07-05 20:01





Juste une petite solution de contournement, connectez votre téléphone ICS avec le bon vieux MASS STORAGE http://forum.xda-developers.com/showthread.php?t=1556367

adb install UMS1.0.apk

-1
2018-03-23 19:57



Bien que ce soit une bonne solution pour certains téléphones, cela ne fonctionne que si un téléphone a une carte SD séparée. En relation avec la question initiale, cela ne fonctionnerait pas avec le Nexus Galaxy. - coversnail
Même avec une carte SD séparée, je ne pense pas que le montage en tant que périphérique de stockage de masse soit une option sur les nouvelles versions d'Android. Bien que, "il y a toujours une porte dérobée quelque part", alors je n'irai pas jusqu'à dire que ce n'est pas possible. - mchid
C'était il y a 4 ans;) - jflaflamme