Comment faire fonctionner des appareils compatibles MTP avec Ubuntu?

69

Depuis Ubuntu 13.04 , l'accès au stockage des périphériques externes via MTP est supposé fonctionner immédiatement via un module GVFS-MTP.

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

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


Je rencontre pas mal de problèmes pour que les transferts de fichiers fonctionnent sur MTP avec le Galaxy Nexus. J'utilise Kubuntu 11.10 64 bits, et voici ce que j'ai fait et les résultats obtenus:

  1. Ajout de la règle pour le 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 de l'appareil via MTP semblent fonctionner (j'ai essayé de monter avec mtpfs, gmtp et d'utiliser directement le package mtp-tools). Cependant, lorsque j'essaie d'écrire sur le périphérique, rien de ce que j'ai essayé ne fonctionne.

Par exemple, en cours d'exécution mtp-newfolder test_dir 0 0donne le résultat suivant:

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-foldersaprès un mtp-newfolder en échec sans rebrancher le périphérique, j'obtiens le résultat suivant:

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 le périphérique.

Leo
la source
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 procédé où vous devez utiliser uniquement MTP. Je pense que c'est ainsi que vont être tous les appareils Android post 2.3.

Réponses:

37

Depuis Ubuntu 13.04, l'accès au stockage des périphériques externes via MTP fonctionne immédiatement 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, le problème était de ne pas avoir les derniers libmtpfichiers sur mon système. J'ai donc corrigé le problème et créé cet article pour aider les autres .

Résumé du lien: Il existait un bogue dans les libmtpanciennes versions d’Ubuntu. Ce bogue était déjà corrigé dans la dernière source de libmtp.

Shannon_VanWagner
la source
1
Le problème semble être résolu dans les packages pour Ubuntu 12.04, donc ceux-ci peuvent être utilisés si vous êtes assez courageux pour le faire. Je les ai saisis sur launchpad.net/ubuntu/+source/libmtp/1.1.1-1 et créé les packages pour system (et la même chose pour gmtp)
Tatu Lahtela,
@ Shannon. Merci. C'est la meilleure solution. Si seulement je l'avais trouvé en premier.
MountainX
2
rhythmbox se bloque toujours et donne des erreurs (LIBMTP_Send_Representative_Sample (): impossible d'obtenir les informations sur l'objet.) lors d'une tentative d'accès au lien, et nautilus donne: Impossible de monter le Galaxy Nexus; Erreur lors de l'initialisation de la caméra: -60: Impossible de verrouiller le périphérique. Caca.
waspinator
Il serait bien de mettre à jour les instructions pour obtenir le dernier mtp, pas 1.1.1
Kostiantyn Rybnikov
21

Avez-vous essayé la suggestion de Bilal Akhtar à Omgubuntu ?

Connexion de 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 montrant les paramètres de connexion USB Android

    Ensuite, exécutez ces commandes:

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

    Vous obtiendrez une sortie comme celle-ci: entrez la description de l'image ici

    Maintenant, lancez ces commandes:

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

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

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

    Remplacez-le VENDORIDpar celui que idVendorvous aviez noté plus tôt. De même, remplacez PRODUCTIDpar le que idProductvous aviez noté. Dans mon cas, ils l'étaient 04e8et 685crespectivement, mais ils auraient pu être différents pour vous.

    Enregistrez et fermez le fichier. Ensuite, déconnectez votre téléphone et exécutez les commandes suivantes:

    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 doit ê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 de Gedit, supprimez le #au début de la dernière ligne (celle qui commence par #user_allow_other) comme ceci:

    entrez la description de l'image ici

    Vous avez presque fini! Maintenant, redémarrez votre ordinateur et ensuite 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 qu'il utilise le protocole MTP et lancez-le android-connect.

    Voila! Vous pouvez maintenant parcourir le contenu de votre téléphone Android à l'aide de Nautilus. Lancez simplement 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.

    capture d'écran de Nautilus affichant le contenu du téléphone

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

  3. Conclusion

    A partir de maintenant, il vous suffit de courir android-connectpour monter votre téléphone, puis android-disconnectde le retirer en toute sécurité. Tout le reste devrait être traité automatiquement. J'ai essayé de nombreuses manières de faire en sorte que le montage et le démontage se produisent automatiquement lors d'une connexion par câble, mais c'était la meilleure solution que je pouvais trouver.

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

    C'est ça! 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 va venir et faire une interface graphique pour tout cela afin que tout se passe bien. :)

desgua
la source
Oui, j'ai 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 bogue dans libmtp.
Leo
Cela fonctionne, mais j'ai quelques questions. 1. Que fait cette configuration udev, pourquoi ne fonctionne-t-elle pas sans elle? 2. Par quelle magie sait-il quel appareil monter quand vous le faites mtpfsou ne prend-il en charge qu'un seul appareil connecté à la fois?
Bart van Heukelom
De même, lors de la copie d'un fichier volumineux (avec Nautilus), il semblera que la copie est très rapide (50 Mo / s), mais pendant ce temps, elle ne copie rien. Ce n'est que lorsque la barre de progression atteint 100% que la copie réelle démarre (et l'interface se bloque). Peut-être qu'une sorte de tampon peut être désactivé?
Bart van Heukelom
Malheureusement, je ne connais pas les réponses que vous souhaitez. Je suis désolé.
Desgua
Est-ce que tout cela, mais obtenir ce message en essayant de connecter Android: fusermount: impossible d'ouvrir /etc/fuse.conf: Autorisation refusée fusermount: l'option allow_other n'est autorisée que 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
21

Connexion de périphériques via MTP avec GVFS

Depuis Ubuntu 13.04, l’accès de stockage aux périphériques compatibles MTP fonctionne immédiatement grâce à un backend GVFS . S'il vous plaît jeter un oeil sur Y at -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 offrant une fonctionnalité MTP et probablement tous les appareils non Android dotés de fonctionnalités MTP, tels que les téléphones Windows et les lecteurs multimédias portables .

Ne soyez pas confus

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

  • Vous n'avez rien à faire qui puisse 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 des instructions pour Android son e .)

    Le déverrouillage fait simplement référence au lockscreen 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 via certaines règles udev. (Vous pouvez trouver des instructions pour Android dans le chapitre Configuration de l' accès USB son e ou son e .)

  • Autant que je sache, vous n'avez pas non plus besoin de FUSE ni de configuration d'options liées à FUSE.

Dépannage des problèmes

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

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

    montrant le dispositif en nautile verrouillé et déverrouillé

  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 rebrancher le périphérique une fois .

    message d'erreur qui pourrait apparaître lors de la connexion

    Si le message d'erreur réapparaît, ouvrez une nouvelle fenêtre Nautile à partir du lanceur (de préférence en cliquant sur l'icône du périphérique) et fermez probablement 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 exemple 0fce:01b1). La première partie est l'ID du fournisseur, la dernière partie l'ID du produit.

    Ouvrez le fichier de règles mtp udev correspondant avec nano /lib/udev/rules.d/69-libmtp.ruleset recherchez l’ID de votre produit (utilisez Ctrl+ W). Si vous ne le trouvez pas, vous devez créer une entrée personnalisée en /etc/udev/rules.d/69-libmtp.rulessuivant le schéma 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 envisager de créer un bogue contre le paquetage libmtp (plus précisément libmtp-common ) pour que votre périphérique soit inclus dans les versions futures, si cela vous convient .

  4. Je n'arrive toujours pas à me connecter

    Votre appareil n'est pas pris en charge par le sous-jacent libmtpou vous risquez de rencontrer le même problème que mon Lumia 620. Suivez la solution de contournement (étapes à suivre pour la reproduction). J'ai posté dans LP # 1247572: Nokia Lumia 620 (WP8) ne parvient pas à monter de manière fiable via gvfs-mtp dans le nautile . (L'appareil ne fonctionne toujours pas sans problème ici, mais l'utilisation mtp-detectaide.)

    Vous devez rechercher le dispositif de suivi des bogues libmtp pour votre périphérique et suivre les instructions relatives aux nouveaux périphériques sur la page du projet pour ouvrir un rapport de bogue.

  5. Le système de suivi des bogues indique que mon périphérique est pris en charge, mais il ne fonctionne toujours pas.

    Dans certains cas, un rapport de bogue concernant votre appareil a peut-être déjà été enregistré 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 attendre que les référentiels officiels soient mis à jour ou rechercher un PPA mis à jour.

    Une liste mise à jour de toutes les versions de libmtp disponibles via les canaux logiciels officiels Ubuntu et les PPA privés est disponible ici (veillez à développer d' autres versions de 'libmtp' dans des archives non fiables ). À partir du 14/02/2014, ce PPA de Matthieu Baerts propose le dernier paquet libmtp disponible pour Ubuntu.

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

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

    1. Allez à la page de détail du paquet du PPA et développez l'entrée libmtp
    2. Télécharger 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 le cas amd64).

      Voici les liens de paquetage au 14/02/2013: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools

    3. Procédez à l'installation manuelle des packages mis à jour avec dpkg (accédez $HOME/Downloadsau 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 est installé avec succès, redémarrez votre ordinateur, déverrouillez votre appareil Android, connectez-le via USB et cela devrait apparaître dans votre gestionnaire de fichiers.

    Cela a bien fonctionné pour moi (@ Glutanimate) avec mon Motorola Moto G. Parce que j’utilisais Ubuntu 12.04 LTS, j’ai dû installer une version mise à jour de gnome-gvfs. Veuillez consulter les instructions d'installation avant 13.04 en haut pour plus d'informations.

    Pour annuler les modifications si quelque chose ne va pas ou si le périphérique n'est toujours pas reconnu, vous devrez installer manuellement les packages d'origine. Tête à la vue d' ensemble des sources de libmtp et trouver votre version d' Ubuntu. Développez l'entrée en question et procédez au téléchargement des packages, comme vous l'avez fait à l'étape 2 précédemment. Continuez l’installation comme décrit à l’étape 3 et redémarrez votre système. Tout devrait être revenu à la normale maintenant.

LiveWireBT
la source
1
+1 pour 'Ne vous y
trompez
A travaillé pour ma tablette Samsung Galaxy avec Android 4.1.2, mais je ne peux pas modifier les fichiers en déplacement. Avez-vous une solution pour cela aussi?
Vesnog
"Certains guides suggèrent d'ajouter des règles udev à un fichier nommé 51-android.rules. Elles ne sont pas destinées à MTP, ..." Vous avez perdu toute crédibilité lorsque vous avez dit cela. Les règles de udev / rules.d / sont entièrement flexibles. 51-android-rules est un endroit parfaitement approprié pour eux. Vous pourriez aussi raisonnablement mettre la règle dans la règle des 52 règles de téléphone
Auspex
@Auspex La ligne aurait pu être mieux écrite, mais au lieu de vous plaindre, vous auriez pu le faire (cela nécessiterait de lire et de comprendre l'intégralité du post) ou de fournir une meilleure réponse. En regardant votre profil, je suppose que vous savez comment les sites SE sont censés fonctionner. Comment vous (mal) gérez vos fichiers dans/etc est entièrement à vous. Comme expliqué ci-dessus, idéalement, toutes les règles udev devraient être fournies ootb. Sinon, il faut créer un bogue pour inclure la règle manquante /lib/.../69-libmtp.rulesafin que tout le monde soit satisfait de la prochaine version.
LiveWireBT
1
@Auspex Je ne comprends pas ce que vous essayez d'atteindre ici. Je répète: la gestion de vos fichiers /etcdépend de vous. /lib/udev/rules.d/69-libmtp.rulesest ce que les responsables du paquet ont choisi et je suggère de déposer un bogue sur ce paquet (j'ai mis à jour ma réponse) pour les utilisateurs rencontrant ce problème. Si cela vous pose toujours un problème, parlez-en aux responsables ou publiez votre propre réponse. Je me retire maintenant de cette conversation avec vous sur ce sujet.
LiveWireBT le
5

Tous les programmes basés sur libmtpsemblent toujours avoir des problèmes avec le Galaxy Nexus (à partir de libmtp 1.1.3). Des programmes basés sur le gphoto2travail pour moi.

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

Utilisez gphotofs ~/mymountpointpour monter, puis fusermount -u ~/mymountpointpour démonter lorsque vous avez terminé.

bseibold
la source
Vient de passer à 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
1
L'utilisation gphotofsme laisse avec un seul répertoire vide.
Nathan Osman
4

Installez ce qui suit 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
mchid
la source
Et oui, cette réponse s’applique également à "Ubuntu 13.04 [et supérieur; où] l’accès de stockage à des périphériques externes via MTP est supposé fonctionner immédiatement via un module GVFS-MTP" . Parce que cela risque de ne pas être installé tel quel. Même lorsque votre appareil MTP est déjà monté d'une manière ou d'une autre! (Mais en vous donnant un accès en lecture seule ou d'autres problèmes.)
tanius
1
@tanius Je dois dire que le MTP est tellement lent que je ne l'utilise même plus. esfile explorer a un serveur ftp et je viens d’utiliser curl pour télécharger des fichiers sur le périphérique de mon réseau local.
Mchid
Cette commande pointe vers la source du problème:The following packages have unmet dependencies: gvfs-backends : Depends: gvfs (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed Depends: gvfs-daemons (= 1.28.2-1ubuntu1~16.04.2) Depends: gvfs-libs (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed Depends: gvfs-common (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed E: Unable to correct problems, you have held broken packages.
NoBugs
1
Vous devriez noter que lorsque cela échoue comme dans le commentaire ci-dessus, supprimez et réinstallez "ubuntu-desktop" et le ci-dessus avec sudo apt-get install --reinstall. puis redémarrez.
NoBugs
0

Dans un premier temps, je voudrais installer jmtpfs( sudo apt-get install jmtpfsdans le terminal - Ctrl+ Alt+ T), puis créer un dossier avecmkdir foldername puis monter le périphérique avec jmtpfs foldername, puis aller à Nautilus (Fichiers).

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

Vous devriez être capable de voir les dossiers également en utilisant mtp-foldersdans 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.rulesfichier comme indiqué ci-dessus (voir manuel) et recharger les règles ou redémarrer.

Ferroao
la source
-1

Juste une 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
jflaflamme
la source
1
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 ce qui concerne la question initiale, cela ne fonctionnerait pas avec le Galaxy Nexus.
vignette
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 ait toujours une porte arrière quelque part", je n'irai pas jusqu'à dire que ce n'est pas possible.
mardi
C'était il y a 4 ans;)
jflaflamme