使用 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 规则。