web-dev-qa-db-fra.com

Comment empêcher les popups "Impossible d'ouvrir le périphérique MTP"?

Je connecte souvent mon appareil Android à la clé USB uniquement à des fins de chargement, sans intention d'utiliser le système de fichiers (et avec l'écran éteint ou les paramètres USB en mode "chargement uniquement", qui empêchent le téléphone de permettre une connexion de données être fabriqué). Lorsque je fais cela, cependant, je reçois souvent un très grand nombre de pop-ups ennuyeux qui ressemblent au popup affiché dans l'image ci-dessous:

enter image description here

Idéalement, il serait possible de configurer le gestionnaire de fenêtres pour ne pas afficher ces fenêtres en incrustation (sans désactiver le montage automatique, afin que je puisse toujours - occasionnellement - utiliser le périphérique en tant que système de fichiers sans avoir à monter manuellement. , c’est-à-dire que le réglage USB du téléphone est en mode "MTP" et que l’écran est déverrouillé). À défaut, il serait idéal de pouvoir utiliser une simple commande pour supprimer toutes les occurrences de cette fenêtre contextuelle (sans détruire le reste du gestionnaire de fenêtres en même temps). Sinon, des solutions pour désactiver le montage automatique de ce périphérique spécifique (sans désactiver tout le montage automatique) constitueraient une solution acceptable.

Des suggestions sur la manière d'empêcher cette fenêtre contextuelle de se produire ou de supprimer plusieurs occurrences de celle-ci en une seule commande?

Pour plus de contexte, j'utilise Ubuntu 14.04 LTS; Je ne sais pas si Gnome ou Nemo est responsable de cette erreur (je sais que l'icône de raccourci de mon répertoire "Accueil" appelle "nemo", mais je suis assez sûr qu'il existe également des applications basées sur Gnome sur le système. Il existe un ~/.gnome et ~/.gnome2 répertoire, etc., ce pourrait donc être Gnome).

8

Donc vous avez ceci:

Unable to mount Pixel

Le gestionnaire de fichiers présente ces messages d'erreur, qui proviennent de GVfs , qui relayent les informations de libmtp .

Prévention des popups d'erreur du gestionnaire de fichiers

Malheureusement, je n'ai pas encore trouvé le moyen de supprimer les messages d'erreur dans le gestionnaire de fichiers GNOME/MATE/Cinnamon. Peut-être qu'un jour, je regarderai dans le code source pour voir où l'erreur peut être désactivée ou interceptée.

Puisque je n'ai pas de réponse à cela, passons à votre prochaine meilleure option acceptable, qui est…

Fermeture des popups du gestionnaire de fichiers par commande

Voici un script qui peut être utilisé pour effacer les popups sur GNOME, MATE et Cinnamon:

#!/bin/bash

function list_empty_windows() {
  wmctrl -lp | awk "{if(\$5==\"\"){print\$3,\$1}}"
}

function list_wm_pids() {
  ps aux | grep cinnamon | Perl -pe 's/.*\+\s+(\d+)\s+.*/\1/'
  pidof nautilus | tr ' ' '\n'
  pidof caja | tr ' ' '\n'
  pidof nemo | tr ' ' '\n'
}

function list_popup_windows() {
  local empty_window_file=$(mktemp)
  local window_manager_pid_file=$(mktemp)
  list_empty_windows > "$empty_window_file"
  list_wm_pids | sort > "$window_manager_pid_file"
  join "$empty_window_file" "$window_manager_pid_file"
}

function main() {
  list_popup_windows | cut -d ' ' -f 2 | xargs -n1 -P100 wmctrl -ic
}

main

Si vous voulez une commande facile à retenir, ces dernières fermeront toutes les fenêtres de votre gestionnaire de fichiers et feront redémarrer votre gestionnaire de fichiers sur votre bureau:

  • GNOME: killall nautilus
  • MATE: killall caja
  • Cannelle: killall nemo

Désactivation du montage automatique de Google Pixel

Il ne semble pas y avoir de moyen de se souvenir d’ignorer que Google Pixel.

Je ne le recommande pas et je ne l'ai pas testé moi-même, mais pour ajouter Google Pixel, vous devrez peut-être mettre en commentaire le produit du fournisseur 18d1 4ee1 (Google Pixel) et le produit du fournisseur 18d1 4ee2 (le débogage de Google Pixel) dans udev. règles et hwdb.

Vous pouvez trouver les enregistrements avec cette commande:

grep -ri '18d1.*4ee[12]' /lib/udev

Après avoir commenté les enregistrements udev de Google Pixel, vous devrez peut-être redémarrer votre environnement de bureau, redémarrer et/ou exécuter une combinaison des commandes suivantes:

Sudo udevadm hwdb --update
Sudo udevadm control --reload-rules
Sudo udevadm trigger

Encore une fois, cela n’a pas été testé, et je ne le recommande pas particulièrement, car pour pouvoir monter à nouveau Google Pixel, il faudrait annuler les modifications manuelles d'udev.


Explication

Selon /var/log/syslog, GNOME affiche l'erreur car le périphérique USB a disparu à la deuxième tentative d'initialisation:

Jan 24 01:32:41 node51 kernel: [613604.065259] usb 3-2: new SuperSpeed USB device number 96 using xhci_hcd
Jan 24 01:32:41 node51 kernel: [613604.082734] usb 3-2: New USB device found, idVendor=18d1, idProduct=4ee1
Jan 24 01:32:41 node51 kernel: [613604.082739] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan 24 01:32:41 node51 kernel: [613604.082741] usb 3-2: Product: Pixel
Jan 24 01:32:41 node51 kernel: [613604.082743] usb 3-2: Manufacturer: Google
Jan 24 01:32:41 node51 kernel: [613604.082745] usb 3-2: SerialNumber: XXXXXXXXXXXX
Jan 24 01:32:41 node51 kernel: [613604.083855] usb 3-2: Enable of device-initiated U1 failed.
Jan 24 01:32:41 node51 kernel: [613604.084154] usb 3-2: Enable of device-initiated U2 failed.
Jan 24 01:32:42 node51 org.gtk.vfs.Daemon[4988]: Device 0 (VID=18d1 and PID=4ee1) is a Google Inc (for LG Electronics/Samsung) Nexus 4/5/7/10 (MTP).
Jan 24 01:32:43 node51 org.gtk.vfs.GPhoto2VolumeMonitor[4988]: (process:5256): GVFS-GPhoto2-WARNING **: device (null) has no BUSNUM property, ignoring
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: LIBMTP libusb: Attempt to reset device
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: inep: usb_get_endpoint_status(): No such device
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: outep: usb_get_endpoint_status(): No such device
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: libusb_open() failed!: No such device
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: LIBMTP PANIC: Could not init USB on second attempt
Jan 24 01:33:34 node51 org.gtk.vfs.Daemon[4988]: ** (gvfsd:5151): WARNING **: dbus_mount_reply: Error from org.gtk.vfs.Mountable.mount(): Unable to open MTP device '[usb:003,096]'

Dans l'exemple ci-dessus, GVFS via libmtp a identifié le périphérique 096 du bus USB 096 comme étant le périphérique Google Pixel, mais ce dernier s'était déjà déconnecté. Lors de la prochaine connexion de Google Pixel, Linux aura attribué un nouvel ID de périphérique.

erreurs libmtp car il essaie toujours de travailler avec le périphérique qui a disparu. GVFS capte l'erreur et la transmet à GNOME Files ou à un autre gestionnaire de fichiers basé sur GNOME.

Qui est à la faute?

D'après ce que j'ai découvert, ceux-ci pourraient être améliorés:

libmtp

libmtp est probablement le principal responsable de ce problème.

Cela devrait améliorer la gestion des erreurs lorsqu'un périphérique MTP est connecté et soudainement déconnecté. L'erreur ne doit être transmise que si le périphérique existe toujours. Si le périphérique USB n'existe pas, il est inutile d'essayer de le réinitialiser.

Signaler des problèmes à libmtp

Android

Android pourrait améliorer son implémentation MTP afin de ne pas se déconnecter immédiatement après la connexion à un ordinateur.

Signaler des problèmes à Android

Nautilus/Caja/Nemo

Ce serait bien si ces logiciels offraient une préférence pour supprimer les messages d'erreur ou les afficher de manière moins rapide.

Signaler des problèmes à GNOME
Signaler les problèmes à MATE Caja
Signaler des problèmes à Linux Mint Nemo

6
Deltik

J'ai une solution de contournement pour ceci sur Nemo :

Allez dans Édition> Préférences> Comportement et sur Gestion des médias décocher "Automatiquement monter le support amovible une fois inséré et au démarrage ".

Lorsque vous avez fini de charger votre téléphone, vous pouvez réactiver l’option permettant de reprendre le comportement par défaut.

4
Sudo apt-get install mtp-tools mtpfs

L'exécution de cette commande installera les outils nécessaires et l'erreur n'apparaîtra pas. Un redémarrage complet peut être nécessaire.

1
Logan

une solution plus simple consiste à configurer votre téléphone pour qu’il se présente sur l’ordinateur comme un périphérique MIDI au lieu de mtp, ptp ou autre.

Vous pourriez avoir besoin d'Android 8, je peux le faire sur mon oneplus3t

Cela empêche le nautilus de s’impliquer, mais est rapidement annulé lorsque vous souhaitez partager des fichiers.

0
Amias

Une chose que vous pouvez essayer est de changer la façon dont Android gère le port USB de l'appareil. À partir de Marshmallow (Android 6.0), le paramètre par défaut du port USB était de charger uniquement et de changer. Vous deviez appuyer sur la barre de notification, puis sur la notification pour le changer pour d'autres utilisations.
La première chose à faire est d’activer le mode développeur.
Pour ce faire, ouvrez Paramètres - À propos du téléphone, faites défiler la liste jusqu’à ce que vous voyiez Numéro de construction, puis tapez simplement 7 fois pour activer le mode Développeur.
Vous verrez un petit message indiquant que vous êtes maintenant développeur une fois que vous avez terminé les étapes dans le bon ordre.

Maintenant, avec le mode développeur activé, vous verrez un nouvel élément de menu appelé 'Options pour les développeurs' dans le menu des paramètres, appuyez dessus, puis faites défiler jusqu'à ce que vous voyiez Configuration USB, puis appuyez dessus.
On vous présentera alors une fenêtre dans laquelle vous pourrez spécifier le comportement par défaut du port USB lorsque vous y connecterez un câble. Vous aurez le choix entre Charge, MTP, PTP et tous les autres protocoles pris en charge par votre appareil.

0
Roy Smith