Linux 上 /dev 目录上的 USB 设备检测

Man*_*nku 2 linux usb-drive udev linux-kernel

lsusb在 Linux 中使用该命令,我了解了总线和设备编号,以及新连接的 USB 设备的名称。

但是如何仅使用命令行知道在 Linux 中连接到哪个设备目录 (/dev/*) USB 设备?

S47*_*471 6

并不是每个设备都必须直接出现在 /dev/ 下,但有些设备类会嵌套在 /dev/ 内的子目录下

USB 设备驱动程序有点不同,如果你连接了一个有效的 USB 设备,USB HCI 会读取 VID:PID 并告诉 usb-core 带有 VID:PID 组合的设备已连接。

如果 usbcore 检测到 VID:PID 组合的任何注册驱动程序,它将与设备耦合,并且设备文件的创建将相应地发生

该设备将显示在 /dev/bus/usb/.. 中,即使相应的驱动程序不存在,也表明已检测到该设备。

您需要有设备驱动程序才能使设备运行/运行。

您可以通过以下方式验证设备驱动程序是否与设备耦合

cat /sys/kernel/debug/usb/devices

每个检测到的 USB 设备都会在此处有一个条目,并且还会显示“驱动程序=”字段,以显示与您的设备相关联的驱动程序。

现在,IFF 有一个驱动程序,它在适当的 /dev 树中创建一个条目,您将在那里找到该设备。

并非每个设备都会直接显示在第一级的 /dev/ 下。比如说,您的鼠标/键盘不会直接显示在 /dev 下,而是显示在 /dev/input/ 下

同样,如果连接的 USB 设备是字符/块设备,它可能会出现在那里,也有例外。

如果您的设备是以太网/wifi 设备,则接口设备将不会出现在/dev/ 下,请与您现有的eth0、wlan0 交叉检查,它们不会直接出现在/dev/ 下,而是会出现在/proc/net/ 下设备

sda/b/c 直接显示在 /dev 下,因为它们是块设备并且由 udev 管理,因此。


Chi*_*Yen 5

这是我的笔记本电脑上的输出示例lsusb

Bus 004 Device 123: ID 2001:3c1b D-Link Corp. DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070]
Run Code Online (Sandbox Code Playgroud)

它是总线 004 上的设备 123。/dev/bus/usb/004/123只是感兴趣设备的文件。

该路径可能因不同内核而异。上面的结果适用于内核 3.15.2