确定USB设备文件path

如何在Linux中正确获取USB设备文件path 我用命令:find / -iname“usb”得到如下结果:

/dev/bus/usb /sys/bus/usb /sys/bus/usb/drivers/usb /sys/kernel/debug/usb 

在/ dev / bus / usb下我看到:

 001 002 003 004 005 006 

但我认为他们不是我需要的文件。

在/ sys / bus / usb / devices /下:

 sh-3.2# ls /sys/bus/usb/devices/ 1-0:1.0 1-1:1.0 3-0:1.0 5-0:1.0 usb1 usb3 usb5 1-1 2-0:1.0 4-0:1.0 6-0:1.0 usb2 usb4 usb6 

并在/ sys / bus / scsi / devices /当我插入一个USB我看到:

 2:0:0:0 host0 host2 target2:0:0 

而当我删除USB我看到:

 sh-3.2# ls host0 

那么哪个设备文件用于USB? 我怎么能识别它? 我需要用USB设备文件做一个C程序…

再者,你能否向我解释1-1:1.0的数字? 这是什么意思?

谢谢。

那么哪个设备文件用于USB? 我怎么能识别它?

你在/sys/后面看到的主要是关于设备的配置/信息。 /dev/bus/usb是你正在寻找的。 我认为下面的文章可以帮助你

http://www.linuxjournal.com/article/7466?page=0,0

是相当老,但它仍然可以帮助你。 (他们在文章中提到/proc/bus/usb ,今天我们有/dev/bus/usb

再者,你能否向我解释1-1:1.0的数字? 这是什么意思?

通用形式是

 XY.Z:AB 

每个字段标识您的设备的连接点。 前两个字段是强制性的:

  • X是连接USB系统的主板的USB总线。
  • Y是总线系统上使用的端口

因此,用字符串3-3标识的USB设备是连接在总线3的端口3上的设备。

如果连接USB集线器,则可以扩展单个USB端口的连接能力。 Linux内核通过追加Z字段来识别这种情况。

  • Z是在集线器上使用的端口

因此,用字符串1-2.5标识的USB设备是连接在总线1的端口2上的集线器的端口5上的设备。

USB规范允许您连接多个USB集线器,因此Linux内核继续追加在不同集线器上使用的端口。 因此,用字符串1-2.1.1标识的USB设备是连接在连接到总线1的端口2的集线器的端口1上的集线器的端口1上的设备。

检索这些信息的一个快速方法是读取内核消息(如果可以的话)。

 $ dmesg | grep usb [... snip ...] [ 2.047950] usb 4-1: new full-speed USB device number 2 using ohci_hcd [ 2.202628] usb 4-1: New USB device found, idVendor=046d, idProduct=c318 [ 2.202638] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 2.202643] usb 4-1: Product: Logitech Illuminated Keyboard [ 2.202648] usb 4-1: Manufacturer: Logitech [... snip ...] 

然后,模式的最后两个字段(冒号后)标识USB设备的内部部分:

  • A是设备的配置编号
  • B是配置的接口号

所以,字符串4-1:1.1意味着:在配置1上的接口1连接在总线4的端口1上。

您可以使用命令lsusb来检索这些信息。