web-dev-qa-db-fra.com

Comment faire fonctionner des appareils compatibles MTP avec Ubuntu?

Depuis Ubuntu 13.04 accès de stockage aux périphériques externes via MTP est supposé fonctionne immédiatement via un module GVFS-MTP.

Bien que cette question concerne le Galaxy Nexus, d’autres appareils Android, ainsi que des téléphones Windows et des lecteurs multimédias compatibles MTP sont également supportés .

Pour 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 adbname__:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. udevredémarré (et ordinateur juste pour en ê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, l'exécution de mtp-newfolder test_dir 0 0 donne 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 lance mtp-folders après un échec de mtp-newfolder 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?

EDIT:

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.

69
Leo

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

Question connexe: Y a-t-il des projets 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 fichiers libmtp sur mon système. Alors j'ai résolu le problème et fait cet article pour aider les autres .

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

37
Shannon_VanWagner

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

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

  1. Configuration

    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, 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 dans une ligne unique :

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

    Remplacez VENDORID par le idVendor que vous avez noté précédemment. De même, remplacez PRODUCTID par le idProduct que vous avez noté. Dans mon cas, ils étaient respectivement 04e8 et 685c, 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
    

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

    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. Utilisation

    Connectez votre téléphone, assurez-vous qu'il utilise MTP et exécutez 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.

    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 d’exécuter 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 de manière à ce que la connexion par câble soit automatique, 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 Fuse doivent pouvoir exécuter ces commandes sans accès root.

    C'est tout! Vous avez connecté avec succès votre téléphone sandwich à la crème glacée à 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
desgua

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 . Veuillez consulter Prévoyez-vous d'améliorer le support mtp sur les futures versions d'Ubuntu? pour les instructions d'installation antérieures à 13.04.

Cette solution devrait fonctionner pour tous les appareils Android fournissant des fonctionnalités MTP et probablement tous les appareils non Android dotés de fonctionnalités MTP telles que 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:

  • Vous n'avez pas devez faire quoi que ce soit 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 her 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 au chapitre Configuration de l'accès USB elle e ou elle 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 le périphérique.

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

    showing device in nautilus in locked and unlocked state

  2. Un message d'erreur m'indique que le périphérique ne peut pas être monté.

    Si vous obtenez le message d'erreur ci-dessous, essayez de reconnecter le périphérique une fois .

    error message that might pop up when connecting

    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 une règle udev pour désactiver l'un des Android appareils?

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

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

    Ouvrez le fichier de règles mtp udev correspondant avec nano /lib/udev/rules.d/69-libmtp.rules et recherchez l’ID de votre produit (utilisez 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 envisager de déposer un bogue contre le paquet libmtp (plus précisément libmtp-common ) avoir votre appareil inclus dans les versions futures, si cela a fonctionné pour vous.

  4. Je ne peux toujours pas me connecter

    Votre appareil n'est pas pris en charge par le libmtp sous-jacent ou vous risquez de rencontrer le même problème que mon Lumia 620, veuillez suivre la solution (étapes à reproduire) que j'ai postée dans LP # 1247572: Nokia Lumia 620 (WP8) ne parvient pas à monter de manière fiable via gvfs-mtp dans nautilus . (Le périphérique ne fonctionne toujours pas sans problème ici, mais utiliser mtp-detect peut vous aider.)

    Vous devez rechercher le libmtp bug tracker pour votre périphérique et suivre les instructions pour les nouveaux périphériques sur la page du projet ​​pour ouvrir un rapport de bogue.

  5. Le gestionnaire de bogues indique que mon périphérique est pris en charge mais ne fonctionne toujours pas

    Dans certains cas, un rapport de bogue concernant votre appareil a peut-être déjà été archivé et résolu dans une version de libmtp plus récente que celle livrée avec 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 peut être trouvée ici (assurez-vous de développer ) D'autres versions de 'libmtp' dans des archives non fiables ). À compter du 2014/02/13 ce PPA de Matthieu Baerts propose le dernier paquet libmtp disponible pour Ubuntu.

    Avertissement : 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 packages 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 packages d'origine avant de procéder aux étapes suivantes:

    1. Allez à la page page de détail du paquet 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 de package à partir du 14/02/2014: libmtp-common , libmtp-runtime , libmtp9 , mtp- outils

    3. Procédez à l'installation manuelle des packages 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'utilisais Ubuntu 12.04 LTS, j'ai d'abord dû installer une version mise à jour de gnome-gvfs. Veuillez consulter les instructions d'installation antérieures à 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. Allez dans le vue d'ensemble de la source libmtp et trouvez 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.

20
LiveWireBT

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

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

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

5
bseibold

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
4
mchid

Dans un premier temps, j'installerais jmtpfs (Sudo apt-get install jmtpfs in terminal - Ctrl+Alt+T ), créez ensuite un dossier avec mkdir foldername, puis montez le périphérique avec jmtpfs foldername, puis allez à nautilus (Fichiers).

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

Vous devriez pouvoir voir les dossiers en utilisant également 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 périphérique au fichier /etc/udev/rules.d/51-Android.rules comme ci-dessus (voir le manuel desgua), ainsi que le rechargement des règles ou le redémarrage.

0
Ferroao