Takže máte toto:
Správce souborů zobrazuje tyto chybové zprávy, které pocházejí z GVfs, který přenáší informace z libmtp.
Zabránění vyskakování chyb ve správci souborů
Bohužel jsem zatím neobjevil způsob, jak potlačit chybová vyskakovací okna ve správci souborů GNOME/MATE/Cinnamon. Možná se někdy podívám do zdrojového kódu, abych zjistil, kde lze chybu vypnout nebo zachytit.
Protože na to nemám odpověď, přejděme k vaší další nejlepší přijatelné možnosti, což je...
Zavření vyskakovacích oken Správce souborů příkazem
Zde je skript, který lze použít k vymazání vyskakovacích oken v GNOME, MATE a 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
Pokud chcete snadno zapamatovatelný příkaz, zavřou se všechna okna ve správci souborů a na ploše se restartuje správce souborů:
- GNOME:
killall nautilus
- MATE:
killall caja
- Skořice:
killall nemo
Deaktivace automatického připojení Google Pixel
Zdá se, že neexistuje způsob, jak si zapamatovat ignorování pouze Google Pixel.
Nedoporučuji to a sám jsem to netestoval, ale abyste si vybrali Google Pixel, možná budete muset v udev okomentovat produkt dodavatele 18d1 4ee1 (Google Pixel) a produkt dodavatele 18d1 4ee2 (ladění Google Pixel) pravidla a hwdb.
Záznamy najdete pomocí tohoto příkazu:
grep -ri '18d1.*4ee[12]' /lib/udev
Po zakomentování záznamů udev Google Pixel možná budete muset restartovat prostředí plochy, restartovat počítač a/nebo spustit nějakou kombinaci následujících příkazů:
sudo udevadm hwdb --update
sudo udevadm control --reload-rules
sudo udevadm trigger
Opět je to nevyzkoušeno a nedoporučuji to zejména proto, že abyste mohli znovu připojit Google Pixel, museli byste vrátit zpět ruční změny udev.
Vysvětlení
Podle /var/log/syslog
GNOME zobrazuje chybu, protože zařízení USB zmizelo při druhém pokusu o jeho inicializaci:
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]'
Ve výše uvedeném příkladu GVfs prostřednictvím libmtp identifikoval zařízení USB 003 096 jako zařízení Google Pixel, ale zařízení Google Pixel se již samo odpojilo. Při příštím opětovném připojení Google Pixel bude mít Linux přiděleno nové ID zařízení.
libmtp chybuje, protože se stále snaží pracovat se zařízením, které zmizelo. GVfs zachytí chybu a předá ji do souborů GNOME nebo jiného správce souborů založeného na GNOME.
Kdo je na vině?
Na základě toho, co jsem zjistil, je zde prostor pro zlepšení:
libmtp
libmtp je pravděpodobně nejzodpovědnější za způsobení tohoto problému.
Mělo by to zlepšit zpracování chyb, když je zařízení MTP připojeno a náhle odpojeno. Chyba by měla být předána pouze v případě, že zařízení stále existuje. Pokud zařízení USB neexistuje, nemá smysl se jej pokoušet resetovat.
Android
Android by mohl vylepšit implementaci MTP, aby se neodpojil okamžitě po připojení k počítači.
Nautilus / Caja / Nemo
Bylo by hezké, kdyby tento software nabízel přednost potlačení chybových zpráv nebo jejich zobrazování méně vyskakovacím způsobem.
Mám pro to řešení na Nemo :
Přejděte na Upravit> Předvolby> Chování a na Manipulace s médii zrušte zaškrtnutí políčka "Automaticky připojit vyměnitelná média při vložení a při spuštění".
Po dokončení nabíjení telefonu můžete znovu povolit možnost obnovení výchozího chování.