找不到 USB 设备

找不到 USB 设备

我目前正在研究 USB 以了解更多信息。

我曾经lsusb显示有关我的系统的 USB 总线和设备的信息。知道基本上所有东西都是 Linux 上的目录文件,因此我尝试找到 lsusb 读取的目录。我发现名为的伪文件系统usbdevfs应该安装在/proc/bus/usb

但是,我无法导航到该目录,因为它丢失了。尝试 grep 结果中的目录mount也没有成功。快速cd / && find -name usb引导我到目录/sys/bus/usb/dev/bus/usb,但/proc.调查/sys/bus/usb/devices只给了我符号链接/sys/devices/pci00[...]

请注意:

  • 我使用 Debian Buster,
  • 我的 USB 设备没有任何问题(它们工作正常),

那么,我的 USB 设备在哪里?

答案1

要快速找到读取的目录和文件lsusb,只需跟踪命令并搜索open()系统调用:

strace lsusb 2>&1 | grep ^open
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libusb-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libudev.so.1", O_RDONLY|O_CLOEXEC) = 3
...
openat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/uevent", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/sys/bus/usb/devices/1-6/busnum", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/sys/bus/usb/devices/1-6/devnum", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/sys/bus/usb/devices/1-6/speed", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/sys/bus/usb/devices/1-6/descriptors", O_RDONLY|O_CLOEXEC) = 7
...

忽略以 结尾的行,ENOENT因为这意味着尝试打开的文件不存在。您还会注意到有一些变化。

如果您想了解参数是什么openat(),请阅读手册页,请使用第 2 节进行系统调用:

$ man 2 open
OPEN(2)                                                                                   Linux Programmer's Manual                                                                                   OPEN(2)

NAME
       open, openat, creat - open and possibly create a file

SYNOPSIS
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

有关/proctry的信息$ man 5 proc,但我敢打赌您现在更感兴趣的是/sys

$ mount | grep '/sys '
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
^^^^^

$ apropos sysfs
sysfs (2)            - get filesystem type information
sysfs (5)            - a filesystem for exporting kernel objects <== you want this one

$ man 5 sysfs
SYSFS(5)                              Linux Programmer's Manual                              SYSFS(5)

NAME
       sysfs - a filesystem for exporting kernel objects

DESCRIPTION
       The  sysfs filesystem is a pseudo-filesystem which provides an interface to kernel data struc‐
       tures.  (More precisely, the files and directories in sysfs provide  a  view  of  the  kobject
       structures  defined  internally within the kernel.)  The files under sysfs provide information
       about devices, kernel modules, filesystems, and other kernel components.

如果您只是查找设备文件以访问 USB 设备,请尝试以下命令:

$ find /dev -ls | grep usb
find: ‘/dev/vboxusb’: Permission denied
  2421522      0 drwxr-xr-x   2 root     root           60 Oct 21 17:47 /dev/usb
  2421523      0 crw-------   1 root     root     180,   0 Oct 21 17:47 /dev/usb/hiddev0
    29281      0 lrwxrwxrwx   1 root     root           12 Oct 20 14:33 /dev/v4l/by-path/pci-0000:00:14.0-usb-0:5:1.0-video-index0 -> ../../video0
    25532      0 lrwxrwxrwx   1 root     root           12 Oct 20 14:33 /dev/v4l/by-path/pci-0000:00:14.0-usb-0:5:1.0-video-index1 -> ../../video1

相关内容