GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo evitar que se abran las ventanas emergentes de Unable to open MTP device?

Así que tienes esto:

El administrador de archivos presenta esos mensajes de error, que provienen de GVfs, que transmite información de libmtp.

Evitar las ventanas emergentes de error del administrador de archivos

Desafortunadamente, todavía no he descubierto una forma de suprimir las ventanas emergentes de error en el administrador de archivos GNOME/MATE/Cinnamon. Quizás algún día mire el código fuente para ver dónde se puede desactivar o interceptar el error.

Como no tengo una respuesta para esto, pasemos a la siguiente mejor opción aceptable, que es...

Cierre de las ventanas emergentes del administrador de archivos por comando

Aquí hay una secuencia de comandos que se puede usar para borrar las ventanas emergentes en GNOME, MATE y 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 desea un comando fácil de recordar, estos cerrarán todas las ventanas en su administrador de archivos y harán que su escritorio reinicie su administrador de archivos:

  • GNOME:killall nautilus
  • COMPAÑERO:killall caja
  • Canela:killall nemo

Deshabilitar el montaje automático de Google Pixel

No parece haber una forma de recordar ignorar solo Google Pixel.

No recomiendo esto, y no lo he probado yo mismo, pero para destacar a Google Pixel, es posible que deba comentar el producto 4ee1 del proveedor 18d1 (Google Pixel) y el producto 4ee2 del proveedor 18d1 (depuración de Google Pixel) en el udev reglas y hwdb.

Puede encontrar los registros con este comando:

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

Después de comentar los registros udev de Google Pixel, es posible que deba reiniciar su entorno de escritorio, reiniciar o ejecutar alguna combinación de los siguientes comandos:

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

Una vez más, esto no se ha probado y no lo recomiendo especialmente porque para volver a montar Google Pixel, tendrías que deshacer los cambios manuales de udev.

Explicación

Según /var/log/syslog , GNOME está mostrando el error porque el dispositivo USB desapareció en el segundo intento de inicializarlo:

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

En el ejemplo anterior, GVfs a través de libmtp identificó el dispositivo 096 del bus USB 003 como el dispositivo Google Pixel, pero el dispositivo Google Pixel ya se había desconectado. La próxima vez que Google Pixel se vuelva a conectar, Linux habrá asignado una nueva ID de dispositivo.

libmtp falla porque todavía está intentando funcionar con el dispositivo que desapareció. GVfs detecta el error y lo reenvía a GNOME Files o algún otro administrador de archivos basado en GNOME.

¿Quién tiene la culpa?

Según lo que descubrí, estos tienen margen de mejora:

libmtp

libmtp es probablemente el principal responsable de causar este problema.

Debería mejorar el manejo de errores cuando se conecta un dispositivo MTP y se desconecta repentinamente. El error solo debe pasar si el dispositivo aún existe. Si el dispositivo USB no existe, no tiene sentido intentar restablecerlo.

Android

Android podría mejorar su implementación de MTP para que no se desconecte inmediatamente después de conectarse a una computadora.

Nautilus / Caja / Nemo

Sería bueno si este software ofreciera una preferencia para suprimir los mensajes de error o mostrarlos de una manera menos emergente.


Tengo una solución para esto en Nemo :

Ve a Editar> Preferencias> Comportamiento y en Gestión de medios desmarque "Montar automáticamente medios extraíbles cuando se insertan y en el inicio".

Cuando termine de cargar su teléfono, puede volver a habilitar la opción para reanudar el comportamiento predeterminado.


Linux
  1. Windows:¿cómo evitar que Windows sobrescriba Grub cuando se usa una máquina de arranque dual?

  2. ¿Cómo evitar que `ls` ordene la salida?

  3. ¿Cómo abrir, leer y escribir desde el puerto serie en C?

  4. ¿Cómo evito que Ubuntu ponga mi monitor a dormir?

  5. Cómo evitar que un proceso escriba archivos

Cómo evitar que se agote el tiempo de espera de SSH

Cómo abrir una URL en el navegador web desde la terminal de Linux

¿Cómo conectar un dispositivo Android Mtp a Ubuntu 13.10?

cómo evitar que las nuevas ventanas roben el foco en gnome

¿Cómo evitar que un programa específico se intercambie?

Cómo evitar que SSH se desconecte si ha estado inactivo por un tiempo