Sie haben also Folgendes:
Der Dateimanager präsentiert diese Fehlermeldungen, die von GVfs kommen, das Informationen von libmtp weiterleitet.
Verhindern von Dateimanager-Fehler-Popups
Leider habe ich noch keine Möglichkeit gefunden, Fehler-Popups im GNOME/MATE/Cinna-Dateimanager zu unterdrücken. Vielleicht schaue ich eines Tages in den Quellcode, um zu sehen, wo der Fehler abgestellt oder abgefangen werden kann.
Da ich darauf keine Antwort habe, fahren wir mit Ihrer nächstbesten akzeptablen Option fort, nämlich …
Dateimanager-Popups per Befehl schließen
Hier ist ein Skript, das verwendet werden kann, um die Popups auf GNOME, MATE und Cinnamon zu löschen:
#!/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
Wenn Sie sich einen einfachen Befehl merken möchten, schließen diese alle Fenster in Ihrem Dateimanager und veranlassen Ihren Desktop, Ihren Dateimanager neu zu starten:
- GNOME:
killall nautilus
- MATE:
killall caja
- Zimt:
killall nemo
Automatisches Mounten von Google Pixel deaktivieren
Es scheint keine Möglichkeit zu geben, daran zu denken, nur Google Pixel zu ignorieren.
Ich empfehle das nicht und habe es nicht selbst getestet, aber um Google Pixel hervorzuheben, müssen Sie möglicherweise das Produkt 4ee1 des Anbieters 18d1 (Google Pixel) und das Produkt 4ee2 des Anbieters 18d1 (Google Pixel debug) in udev auskommentieren Regeln und HWDB.
Sie können die Datensätze mit diesem Befehl finden:
grep -ri '18d1.*4ee[12]' /lib/udev
Nachdem Sie die udev-Datensätze von Google Pixel auskommentiert haben, müssen Sie möglicherweise Ihre Desktop-Umgebung neu starten, neu starten und/oder eine Kombination der folgenden Befehle ausführen:
sudo udevadm hwdb --update
sudo udevadm control --reload-rules
sudo udevadm trigger
Auch dies ist ungetestet und ich empfehle es nicht, insbesondere weil Sie die manuellen udev-Änderungen rückgängig machen müssten, um Google Pixel erneut zu mounten.
Erklärung
Gemäß /var/log/syslog
, GNOME zeigt den Fehler an, weil das USB-Gerät beim zweiten Initialisierungsversuch verschwunden ist:
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]'
Im obigen Beispiel hat GVfs über libmtp das USB-Bus-003-Gerät 096 als das Google-Pixel-Gerät identifiziert, aber das Google-Pixel-Gerät hatte sich bereits getrennt. Wenn sich Google Pixel das nächste Mal wieder verbindet, hat Linux eine neue Geräte-ID zugewiesen.
libmtp gibt einen Fehler aus, weil es immer noch versucht, mit dem verschwundenen Gerät zu arbeiten. GVfs nimmt den Fehler auf und leitet ihn an GNOME Files oder einen anderen GNOME-basierten Dateimanager weiter.
Wer ist schuld?
Basierend auf dem, was ich entdeckt habe, gibt es Raum für Verbesserungen:
libmtp
libmtp ist wahrscheinlich am meisten für dieses Problem verantwortlich.
Es sollte die Fehlerbehandlung verbessern, wenn ein MTP-Gerät verbunden und plötzlich getrennt wird. Der Fehler sollte nur übergeben werden, wenn das Gerät noch existiert. Wenn das USB-Gerät nicht existiert, ist es sinnlos, es zurückzusetzen.
Android
Android könnte seine MTP-Implementierung verbessern, sodass die Verbindung nicht sofort getrennt wird, wenn eine Verbindung zu einem Computer hergestellt wird.
Nautilus / Caja / Nemo
Es wäre schön, wenn diese Software eine Einstellung bieten würde, um Fehlermeldungen zu unterdrücken oder sie weniger popupartig anzuzeigen.
Ich habe eine Problemumgehung dafür auf Nemo :
Gehen Sie zu Bearbeiten> Einstellungen> Verhalten und auf Medienhandhabung Deaktivieren Sie "Wechselmedien beim Einlegen und beim Start automatisch mounten".
Wenn Sie Ihr Telefon vollständig aufgeladen haben, können Sie die Option zum Fortsetzen des Standardverhaltens wieder aktivieren.