Jadi, Anda memiliki ini:
Pengelola file menyajikan pesan kesalahan tersebut, yang berasal dari GVfs, yang menyampaikan informasi dari libmtp.
Mencegah Popup Kesalahan Pengelola File
Sayangnya, saya belum menemukan cara untuk menekan popup error di pengelola file GNOME/MATE/Cinnamon. Mungkin suatu hari nanti, saya akan melihat kode sumber untuk melihat di mana kesalahan dapat dimatikan atau dicegat.
Karena saya tidak punya jawaban untuk ini, mari beralih ke opsi terbaik berikutnya yang dapat diterima, yaitu…
Menutup Munculan Pengelola File dengan Perintah
Berikut adalah skrip yang dapat digunakan untuk menghapus popup di GNOME, MATE, dan 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
Jika Anda ingin perintah yang mudah diingat, ini akan menutup semua jendela di pengelola file dan menyebabkan desktop memulai ulang pengelola file:
- GNOME:
killall nautilus
- MATE:
killall caja
- Kayu manis:
killall nemo
Menonaktifkan Pemasangan Otomatis Google Pixel
Sepertinya tidak ada cara untuk mengingat untuk mengabaikan Google Pixel saja.
Saya tidak merekomendasikan ini, dan saya belum mengujinya sendiri, tetapi untuk memilih Google Pixel, Anda mungkin harus mengomentari produk vendor 18d1 4ee1 (Google Pixel) dan produk vendor 18d1 4ee2 (debug Google Pixel) di udev aturan dan hwdb.
Anda dapat menemukan catatan dengan perintah ini:
grep -ri '18d1.*4ee[12]' /lib/udev
Setelah mengomentari catatan udev Google Pixel, Anda mungkin perlu memulai ulang lingkungan desktop, memulai ulang, dan/atau menjalankan beberapa kombinasi dari perintah berikut:
sudo udevadm hwdb --update
sudo udevadm control --reload-rules
sudo udevadm trigger
Sekali lagi, ini belum teruji, dan saya tidak merekomendasikan ini terutama karena untuk memasang kembali Google Pixel, Anda harus membatalkan perubahan udev manual.
Penjelasan
Menurut /var/log/syslog
, GNOME memunculkan kesalahan karena perangkat USB menghilang pada upaya kedua untuk menginisialisasi:
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]'
Pada contoh di atas, GVfs melalui libmtp mengidentifikasi perangkat USB bus 003 096 sebagai perangkat Google Pixel, tetapi perangkat Google Pixel telah terputus dengan sendirinya. Saat berikutnya Google Pixel terhubung kembali, Linux akan menetapkan ID perangkat baru.
kesalahan libmtp karena masih mencoba bekerja dengan perangkat yang hilang. GVfs mengambil kesalahan dan meneruskannya ke File GNOME atau pengelola file berbasis GNOME lainnya.
Siapa yang Salah?
Berdasarkan apa yang saya temukan, ini memiliki ruang untuk perbaikan:
libmtp
libmtp mungkin yang paling bertanggung jawab dalam menyebabkan masalah ini.
Ini harus meningkatkan penanganan kesalahan saat perangkat MTP terhubung dan tiba-tiba terputus. Kesalahan hanya boleh diteruskan jika perangkat masih ada. Jika perangkat USB tidak ada, tidak ada gunanya mencoba menyetel ulang.
Android
Android dapat meningkatkan implementasi MTP-nya sehingga tidak langsung terputus setelah tersambung ke komputer.
Nautilus / Caja / Nemo
Alangkah baiknya jika perangkat lunak ini menawarkan preferensi untuk menekan pesan kesalahan atau menampilkannya dengan cara yang tidak terlalu pop-up.
Saya punya solusi untuk ini di Nemo :
Buka Edit> Preferensi> Perilaku dan di Penanganan Media hapus centang "Pasang media yang dapat dilepas secara otomatis saat dimasukkan dan saat memulai".
Setelah selesai mengisi daya ponsel, Anda dapat mengaktifkan kembali opsi untuk melanjutkan perilaku default.