GNU/Linux >> Linux Esercitazione >  >> Linux

Come impedire l'apertura dei popup del dispositivo Impossibile aprire MTP?

Quindi hai questo:

Il file manager presenta questi messaggi di errore, che provengono da GVfs, che trasmette informazioni da libmtp.

Prevenzione dei popup di errore di File Manager

Sfortunatamente, non ho ancora scoperto un modo per sopprimere i popup di errore nel file manager GNOME/MATE/Cinnamon. Forse un giorno esaminerò il codice sorgente per vedere dove l'errore può essere disattivato o intercettato.

Dal momento che non ho una risposta per questo, passiamo alla tua prossima migliore opzione accettabile, che è...

Chiusura dei popup di File Manager tramite comando

Ecco uno script che può essere utilizzato per cancellare i popup su GNOME, MATE e 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

Se vuoi un comando facile da ricordare, questi chiuderanno tutte le finestre del tuo file manager e il tuo desktop riavvierà il tuo file manager:

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

Disattivazione del montaggio automatico di Google Pixel

Non sembra esserci un modo per ricordare di ignorare solo Google Pixel.

Non lo consiglio e non l'ho provato da solo, ma per individuare Google Pixel, potresti dover commentare il prodotto 4ee1 del fornitore 18d1 (Google Pixel) e il prodotto 4ee2 del fornitore 18d1 (debug di Google Pixel) in udev regole e hwdb.

Puoi trovare i record con questo comando:

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

Dopo aver commentato i record udev di Google Pixel, potrebbe essere necessario riavviare l'ambiente desktop, riavviare e/o eseguire una combinazione dei seguenti comandi:

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

Ancora una volta, questo non è stato testato e non lo consiglio soprattutto perché per montare di nuovo Google Pixel, dovresti annullare le modifiche manuali di udev.

Spiegazione

Secondo /var/log/syslog , GNOME sta visualizzando l'errore perché il dispositivo USB è scomparso al secondo tentativo di inizializzarlo:

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]'

Nell'esempio precedente, GVfs tramite libmtp ha identificato il dispositivo 096 del bus USB 003 come dispositivo Google Pixel, ma il dispositivo Google Pixel si era già disconnesso. Alla successiva riconnessione di Google Pixel, Linux avrà assegnato un nuovo ID dispositivo.

errori libmtp perché sta ancora cercando di funzionare con il dispositivo che è scomparso. GVfs rileva l'errore e lo inoltra a GNOME Files o a qualche altro file manager basato su GNOME.

Di chi è la colpa?

Sulla base di ciò che ho scoperto, questi hanno margini di miglioramento:

libmtp

libmtp è probabilmente il più responsabile nel causare questo problema.

Dovrebbe migliorare la gestione degli errori quando un dispositivo MTP è connesso e improvvisamente disconnesso. L'errore dovrebbe essere passato solo se il dispositivo esiste ancora. Se il dispositivo USB non esiste, è inutile provare a resettarlo.

Android

Android potrebbe migliorare la sua implementazione MTP in modo che non si disconnette immediatamente quando si connette a un computer.

Nautilus / Caja / Nemo

Sarebbe bello se questi software offrissero una preferenza per sopprimere i messaggi di errore o visualizzarli in modo meno popup.


Ho una soluzione per questo su Nemo :

Vai a Modifica> Preferenze> Comportamento e sulla Gestione dei contenuti multimediali deseleziona "Monta automaticamente supporti rimovibili all'inserimento e all'avvio".

Al termine della ricarica del telefono, puoi riattivare l'opzione per riprendere il comportamento predefinito.


Linux
  1. Windows:come impedire a Windows di sovrascrivere Grub quando si utilizza una macchina a doppio avvio?

  2. Come impedire a `ls` di ordinare l'output?

  3. Come collegare il dispositivo Android Mtp a Ubuntu 13.10?

  4. Come posso impedire a Ubuntu di mettere in stop il mio monitor?

  5. Come aprire un particolare file da un terminale?

Come prevenire il timeout di SSH

Come aprire un URL nel browser Web dal terminale Linux

Come impedire a SSH di disconnettersi se è rimasto inattivo per un po'

Come distinguere l'input da diverse tastiere?

Come impedire a un utente di accedere, ma consentire a su - user in Linux?

Come posso impedire che i calamari vengano rilevati?