GNU/Linux >> Linux の 問題 >  >> Linux

Unable to open MTP device ポップアップが開かないようにする方法は?

ファイル マネージャは、libmtp からの情報を中継している GVfs から来るこれらのエラー メッセージを表示しています。

ファイル マネージャのエラー ポップアップの防止

残念ながら、GNOME/MATE/Cinnamon ファイル マネージャーでエラー ポップアップを抑制する方法をまだ発見していません。いつの日か、ソース コードを調べて、どこでエラーをオフにしたり傍受したりできるかを確認するつもりです。

私はこれに対する答えを持っていないので、次善の許容可能な選択肢に移りましょう。それは…

コマンドでファイル マネージャーのポップアップを閉じる

以下は、GNOME、MATE、および 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

覚えやすいコマンドが必要な場合は、ファイル マネージャーのすべてのウィンドウを閉じて、デスクトップでファイル マネージャーを再起動します。

  • GNOME:killall nautilus
  • メイト:killall caja
  • シナモン:killall nemo

Google Pixel の自動マウントを無効にする

Google Pixel だけを無視することを覚えておく方法はないようです。

これはお勧めしませんし、自分でテストしたこともありませんが、Google Pixel を特定するには、udev のベンダー 18d1 製品 4ee1 (Google Pixel) とベンダー 18d1 製品 4ee2 (Google Pixel デバッグ) をコメントアウトする必要があるかもしれません。ルールと hwdb.

このコマンドでレコードを見つけることができます:

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

Google Pixel の udev レコードをコメントアウトした後、デスクトップ環境の再起動、再起動、または次のコマンドの組み合わせの実行が必要になる場合があります:

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

繰り返しますが、これはテストされていません。Google Pixel を再度マウントするには、udev の手動変更を元に戻す必要があるため、特にお勧めしません。

説明

/var/log/syslogによると 、初期化の 2 回目の試みで USB デバイスが消えたため、GNOME がエラーを表示しています:

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

上記のサンプルでは、​​libmtp を介した GVfs が USB バス 003 デバイス 096 を Google Pixel デバイスとして識別しましたが、Google Pixel デバイスはすでに切断されていました。次に Google Pixel が再接続したときに、Linux は新しいデバイス ID を割り当てています。

libmtp は、消えたデバイスをまだ操作しようとしているため、エラーになります。 GVfs はエラーを検出し、GNOME ファイルまたはその他の GNOME ベースのファイル マネージャーに転送します。

誰のせい?

私が発見したことに基づいて、これらには改善の余地があります:

libmtp

libmtp はおそらく、この問題を引き起こした最大の原因です。

MTP デバイスが接続され、突然切断されたときのエラー処理が改善されるはずです。エラーは、デバイスがまだ存在する場合にのみ渡されます。 USB デバイスが存在しない場合は、リセットしても意味がありません。

アンドロイド

Android は、コンピューターに接続した直後に切断されないように、MTP の実装を改善できます。

ノーチラス / カハ / ネモ

これらのソフトウェアが、エラー メッセージを抑制したり、ポップアップの少ない方法で表示したりする設定を提供してくれるとよいでしょう。


Nemo でこれを回避する方法があります :

[編集]> [設定]> [動作] に移動します と メディアの取り扱い 「挿入時および起動時にリムーバブル メディアを自動的にマウントする」のチェックを外します。

携帯電話の充電が終了したら、デフォルトの動作を再開するオプションを再度有効にすることができます。


Linux
  1. Journalctl:ターミナルでテキストが切り捨てられないようにする方法は?

  2. MtpAndroidデバイスをUbuntu13.10に接続する方法は?

  3. Ubuntu がモニターをスリープ状態にしないようにするにはどうすればよいですか?

  1. 端末から特定のファイルを開く方法は?

  2. プロセスがファイルを書き込めないようにする方法

  3. bcache からキャッシュ デバイスを削除するにはどうすればよいですか?

  1. Windows –デュアルブートマシンを使用しているときにWindowsがGrubを上書きしないようにするにはどうすればよいですか?

  2. `ls`が出力をソートしないようにするにはどうすればよいですか?

  3. Cでシリアルポートを開き、読み書きする方法は?