安装无法识别的 USB 驱动器

安装无法识别的 USB 驱动器

使用 Arch Linux / XFCE 时,我经常遇到 USB 驱动器未正确安装的问题。有时它们会自动显示在 Thunar 中,我可以一键安装它们。但是,在其他时候(大约五十/五十)驱动器无法被识别。我在使用 USB 外置硬盘、USB 记忆棒和相机时遇到过这个问题。如果无法识别外部驱动器,则情况如下:

  • 驱动器根本不显示fdisk -l(它只显示我的硬盘)
  • 该驱动器未出现在/dev/disk
  • 驱动器运行时出现lsusb

所以有某种识别,但我不明白为什么,也不知道发生这种情况时如何安装驱动器。我只是重新启动并希望下次它能正常工作,这显然不方便......

更新

当我监控/var/log/everything.log(系统日志中没有信息)时,我在插入 USB 时看到这种情况发生:

Dec 14 15:36:32 localhost kernel: [ 6591.042911] usb 1-3: new high speed USB device number 9 using ehci_hcd
Dec 14 15:36:32 localhost mtp-probe: checking bus 1, device 9: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3"
Dec 14 15:36:32 localhost mtp-probe: bus: 1, device: 9 was not an MTP device

这是另一个请求的输出:

$udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[6809.192268] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-3 (usb)
KERNEL[6809.193421] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0 (usb)
UDEV  [6809.299246] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-3 (usb)
UDEV  [6809.306074] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0 (usb)

答案1

这个问题似乎是一个包罗万象的规则/lib/udev/rules.d/69-libmtp.rules

# Autoprobe vendor-specific, communication and PTP devices
ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="/usr/lib/udev/mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

注释掉该行,如下所示,解决了问题:

# Autoprobe vendor-specific, communication and PTP devices
ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="/usr/lib/udev/mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

就我而言,我必须重新启动,但可能有一个服务可以重新启动。

答案2

我曾经ENV{MTP_NO_PROBE}="1"停止过 MTP Probe。这样我就没有修改 Arch 的/lib/udev/rules.d/69-libmtp.rules.

export MTP_NO_PROBE="1"

答案3

日志记录显示 MTP 设备检测出现问题。

libmtp如果可以的话尝试卸载,或者只是注释掉相关文件中的 udev 规则。

相关内容